Reverse Engineering 30

CodeEngn Basic RCE L07 Write Up

문제:컴퓨터 C 드라이브의 이름이 CodeEngn 일경우 시리얼이 생성될때 CodeEngn은 'ß어떤것'으로 변경되는가 https://ch.codeengn.com/ CodeEngn.com [코드엔진] 코드엔진은 국내 리버스엔지니어링 정보공유를 위해 2007년 부터 리버스엔지니어링 컨퍼런스 및 세미나, 워크숍을 현업 실무자들과 함께 운영하고 있는 비영리 커뮤니티입니다. ch.codeengn.com 일단 문제를 실행시켜보겠습니다. 시리얼을 입력하는 칸이 있는데 아무 문자열이나 넣고 Check 버튼을 눌러보겠습니다. 그랬더니 당연하게도 Error!창이 뜹니다. Ollydbg로 열기 전에 PEiD로 열어보겠습니다. 패킹은 되어있지 않고 MASM32와 TASM32라는 어셈블러로 만들어진 프로그램임을 확인할 수 있..

CodeEngn Basic RCE L06 Write Up

문제:Unpack을 한 후 Serial을 찾으시오. 정답인증은 OEP + Serial Ex) 00400000PASSWORD https://ch.codeengn.com/ CodeEngn.com [코드엔진] 코드엔진은 국내 리버스엔지니어링 정보공유를 위해 2007년 부터 리버스엔지니어링 컨퍼런스 및 세미나, 워크숍을 현업 실무자들과 함께 운영하고 있는 비영리 커뮤니티입니다. ch.codeengn.com 일단 이 프로그램을 실행시켜보겠습니다. 간단하게 시리얼을 입력하는 창이 뜹니다. 여기에 아무 문자열이나 넣고 Check Serial버튼을 누르면... 당연하게도 ERROR가 출력됩니다. 이제 Ollydbg로 열기 전에 PEiD로 열어보도록 하겠습니다. UPX로 패킹되어있는 것을 확인할 수 있습니다. 패킹에 대..

CodeEngn Basic RCE L05 Write Up

문제:이 프로그램의 등록키는 무엇인가 https://ch.codeengn.com/ CodeEngn.com [코드엔진] 코드엔진은 국내 리버스엔지니어링 정보공유를 위해 2007년 부터 리버스엔지니어링 컨퍼런스 및 세미나, 워크숍을 현업 실무자들과 함께 운영하고 있는 비영리 커뮤니티입니다. ch.codeengn.com 문제를 Ollydbg로 열기 전에 실행시켜보겠습니다. 이름과 시리얼을 입력하는 칸이 있습니다. 아무 문자열이나 넣고 "Register now !"버튼을 눌러보겠습니다. 역시나 실패메시지가 출력됩니다. 이제 Ollydbg로 열어보겠습니다. Ollydbg로 열어보니까 이런 메시지가 뜹니다. 간단히 해석해보자면 코드가 압축 또는 암호화되어 결과가 정확하지 않을 수 있다는 뜻입니다. 이런 창이 뜬 이..

HackCTF Reversing Keygen Write Up

https://ctf.j0n9hyun.xyz/challenges HackCTF Do you wanna be a God? If so, Challenge! ctf.j0n9hyun.xyz 이 문제를 IDA로 열어보도록 하겠습니다. 아마도 check_key의 값이 참이면 플래그를 출력하는 프로그램인 것 같습니다. 입력한 문자열의 길이가 9자 이상 64자 미만이어야 합니다. 그리고 입력한 문자열을 encoding이라는 함수를 통해서 값을 바꿔준 후에 "OO]oUU2U

HackCTF Reversing Reversing Me Write Up

https://ctf.j0n9hyun.xyz/challenges HackCTF Do you wanna be a God? If so, Challenge! ctf.j0n9hyun.xyz 이 문제는 C언어로 짜인 코드를 줍니다. #include #include int main() { int i; char *serial = "H`cjCUFzhdy^stcbers^D1_x0t_jn1w^r2vdrre^3o9hndes1o9>}"; char enter[54]; printf("키를 입력하시게 : "); scanf("%s", enter); if (strlen(enter) == strlen(serial)) { for (i = 0; i < strlen(serial) && (enter[i] ^ (i % 2)) == serial[..

HackCTF Reversing Welcome_REV Write Up

https://ctf.j0n9hyun.xyz/challenges HackCTF Do you wanna be a God? If so, Challenge! ctf.j0n9hyun.xyz 문제를 다운로드하고 실행해보겠습니다. exe파일이 아니라서 그런지 실행이 안 됩니다. HxD로 열어보겠습니다. 성공메시지와 실패메시지, 그리고 의심스러운 문자열이 보입니다. 의심스러운 문자열을 찾기는 했지만 플래그는 아닌 것 같아서 고민을 하다가 검색의 도움을 받아서 풀어보았습니다. 이 문자열은 Base 64라는 방식으로 인코딩 된 문자열인데 Base 64로 인코딩된 문자열의 특징은 끝이 "="으로 끝난다는 것입니다. 이제 이 문자열을 디코딩하면 답이 나오게 됩니다. 답:HackCTF{w3lc0m3_70_r3v3r51n6_w..

CodeEngn Basic RCE L04 Write Up

문제:이 프로그램은 디버거 프로그램을 탐지하는 기능을 갖고 있다. 디버거를 탐지하는 함수의 이름은 무엇인가 https://ch.codeengn.com/ CodeEngn.com [코드엔진] 코드엔진은 국내 리버스엔지니어링 정보공유를 위해 2007년 부터 리버스엔지니어링 컨퍼런스 및 세미나, 워크숍을 현업 실무자들과 함께 운영하고 있는 비영리 커뮤니티입니다. ch.codeengn.com 일단 Ollydbg로 문제를 열어보기 전에 실행시켜보겠습니다. 약 1초에 한 번씩 정상을 출력합니다. 이제 Ollydbg로 이 문제를 열어보겠습니다. F9로 실행시켜보니 정상이 아니라 디버깅 당함이 출력됩니다. 저는 여기서 CodeEngn Basic RCE L01문제가 떠올랐습니다. 그 문제는 GetDriveTypeA라는 함..

CodeEngn Basic RCE L03 Write Up

문제:비주얼베이직에서 스트링 비교함수 이름은? https://ch.codeengn.com/ CodeEngn.com [코드엔진] 코드엔진은 국내 리버스엔지니어링 정보공유를 위해 2007년 부터 리버스엔지니어링 컨퍼런스 및 세미나, 워크숍을 현업 실무자들과 함께 운영하고 있는 비영리 커뮤니티입니다. ch.codeengn.com 사실 이 문제는 검색으로도 답을 충분히 찾아낼 수 있지만 Ollydbg를 이용한 분석으로 답을 구해보겠습니다. 일단 Ollydbg로 분석하기 전에 프로그램을 실행시켜줍니다. 실행해보면 이렇게 오류가 발생합니다. MSVBVM50.DLL을 다운로드하고 진행하겠습니다. 드디어 실행을 시키면 이런 창이 뜹니다. 확인을 눌러보겠습니다. 패스워드를 입력하는 창이 뜹니다. 아무 문자열이나 넣어보겠..

CodeEngn Basic RCE L02 Write Up

문제:패스워드로 인증하는 실행파일이 손상되어 실행이 안되는 문제가 생겼다. 패스워드가 무엇인지 분석하시오 https://ch.codeengn.com/ CodeEngn.com [코드엔진] 코드엔진은 국내 리버스엔지니어링 정보공유를 위해 2007년 부터 리버스엔지니어링 컨퍼런스 및 세미나, 워크숍을 현업 실무자들과 함께 운영하고 있는 비영리 커뮤니티입니다. ch.codeengn.com 파일이 손상되었다고 합니다. 일단 문제를 실행시켜보겠습니다. 이런 창이 뜨면서 실행이 안 되는 모습입니다. Ollydbg로 열어보겠습니다. Ollydbg로 프로그램을 열려고 하면 에러창이 뜨면서 실행이 안 됩니다. 이 문제는 파일이 손상되어서 실행이 안 되기 때문에 Ollydbg를 이용한 동적 분석을 할 수 없습니다. 그래서 ..

CodeEngn Basic RCE L01 Write Up

문제:HDD를 CD-Rom으로 인식시키기 위해서는 GetDriveTypeA의 리턴값이 무엇이 되어야 하는가 https://ch.codeengn.com/ CodeEngn.com [코드엔진] 코드엔진은 국내 리버스엔지니어링 정보공유를 위해 2007년 부터 리버스엔지니어링 컨퍼런스 및 세미나, 워크숍을 현업 실무자들과 함께 운영하고 있는 비영리 커뮤니티입니다. ch.codeengn.com 문제를 다운로드하고 압축을 풀어주었습니다. 파일의 압축을 풀 때 암호는 codeengn입니다. 이제 실행시키면 이런 창이 뜹니다. 확인을 눌러주면 이런 창이 뜹니다. 이제 어느정도 이 문제에 대한 정보를 얻었으니 Ollydbg로 이 문제를 열어보겠습니다. 첫 번째로 MessageBoxA함수를 호출하는데 함수의 이름을 통해서 ..