본문 바로가기

reversing

[codeengn]코드엔진 Advance RCE L02 문제: 정답은 무엇인가 ollydbg를 통해 문자열을 확인해봤는데, password를 입력받는 문제임을 확인할 수 있고, pw가 정답임을 생각해볼 수 있다. password 입력 부분으로 가서 부근에 bp를 걸어준다. 여기서 진행해보면서 4012D2에서 값을 받음을 확인했다. 코드를 더 진행해 보도록 한다. 004013C5에서 CALL EDX하는데, 이쪽으로 가본다. 여기서 CMP를 이용해 ECX와 어떤 값을 계속 비교하고 있다. 비밀번호가 출력됨을 확인했다. 더보기
[codeengn]코드엔진 Advance RCE L01 문제: 이 프로그램은 몇 밀리세컨드 후에 종료 되는가 정답인증은 MD5 해쉬값(대문자) 변환 후 인증하시오 ollydbg로 열어보려고 했는데 encrypt되어있다고 한다. PEiD로 보니, UPX로 패킹되어있음을 알 수 있다. cmd창에서 upx로 언패킹해주었다. 이제 ollydbg로 열어보도록 한다. ollydbg로 잘 열림을 확인했다. 종료에 대한 문제이므로 search for - intermodular calls를 확인한다. 시간과 관련 있는 문제이므로, timeGetTime에 set breakpoin on every~를 해준다. bp건 곳으로 가니까 이 부분이 나오고 그다음 bp로 가면 프로그램이 꺼져버린다. time 관련하여 연산하는 걸 찾아봐야 할 듯 하다. 일단 CALL EDI부분은 time.. 더보기
[CodeEngn]코드엔진 Basic RCE L20 문제: 이 프로그램은 Key파일을 필요로 하는 프로그램이다. 'Cracked by: CodeEngn!' 문구가 출력 되도록 하려면 crackme3.key 파일안의 데이터는 무엇이 되어야 하는가 Ex) 41424344454647 (정답이 여러개 있는 문제로 인증시 맞지 않다고 나올 경우 Contact로 연락주시면 확인 해드리겠습니다) 일단 CRACKME3.KEY 라는 파일이 필요한 듯 하다. 그리고 그 key 파일이 18(12)만큼의 바이트가 있는지 확인하는 듯 하다. 이렇게 저장을 하고 실행해보니 잘 읽음을 확인했다. 다음과 같은 알고리즘이 나왔다. ESI와 BL값을 세팅함을 확인할 수 있었다. - BL에 0x41 값 저장 - ESI의 1byte를 AL 레지스터에 저장 - AL과 BL를 XOR하고 AL에.. 더보기
[Reversing.kr]Easy crack 1번 처음 화면으로 들어갔는데, 그렇게 눈에 들어오는 것은 없다. text strings를 확인해본다. 익숙한 문자열로 가보도록 한다. ESP + 0x5에 있는 값과 0x61과 비교해서 안 갖으면 401135로 간다. 401135로 가보니, 이 401135는 실패로 가는 길인 듯 하다. 어쨌든, 위에서 봤던 부분을 다시 본다. ESP + 0x5에 있는 값과 0x61과 같아야 한다. 61을 계산기에 돌려본다. 61을 10진수로 바꾸면 97이 나오는데 이에 대한 ASCII는 'a'이다. 그럼 ESP + 0x5에 있는 값은 a여야 한다. 여기 위에서부터 이 글자들이 붙어지는 듯 하다. 특히 ESP+0xA이 들어가 있는 부분을 보아, 그 뒤에 붙어지는 듯한 예감이 맞는 것 같다는 생각이 든다. 예측한 결과를 종합해보.. 더보기
[codeengn]코드엔진 basic RCE L17 문제: Key 값이 BEDA-2F56-BC4F4368-8A71-870B 일때 Name은 무엇인가 힌트 : Name은 한자리인데.. 알파벳일수도 있고 숫자일수도 있고.. 정답인증은 Name의 MD5 해쉬값(대문자) 일단 Ollydbg로 열어서 Key값을 넣고 Name에 아무거나 한자리를 넣어보도록 한다. 문제에선 한글자라고 분명 그랬는데, 'Please Enter More Chars' -> 글자를 더 넣어라 라고 되어있다. 이 부분을 바꿔봐야겠다. 일단 text strings를 확인한다.(Search for -> ~referenced text strings) 이 부분으로 이동한다. 이 부분으로 이동한 후, 위를 봤는데 EAX가 3이랑 비교하는 걸 보니, 3글자 이상이어야 이 부분을 통과할 수 있는 듯 하다.. 더보기
[CodeEngn]코드엔진 basic RCE L16 문제: Name이 CodeEngn일때 Serial을 구하시오 ollydbg로 16번을 열어보니 잘 열린다. 패킹은 안 되어있는 듯 하다. 일단 문자열을 확인해본다. 'Good Job!'이 있는 곳으로 간다. Good Job이 있는 부분 위를 보니, CMP가 있는 곳이 딱 하나가 있다. 이 부분을 breakpoint건다. EAX와 PTR SS:[EBP-0x3C]를 비교해야 하기 때문에, 이 부분까지 다시 실행해, EAX와 EBP를 알아내도록 한다. 확인해보니 EAX는 내가 입력한 PW의 16진수, EBP는 0070FF28임을 확인했다. PTR SS:[EBP-0x3C] 값을 알아내야 하기 때문에 위에서 -3C를 해줘야 한다. 나는 그냥 계산기로 연산을 해주었다. 그럼 70FEEC가 나온다. 이제 이 주소의 .. 더보기
[CodeEngn]코드엔진 Basic RCE L15 문제: Name이 CodeEngn일때 Serial을 구하시오 저번에 푼 문제와 비슷한 듯 하다. 일단 ollydbg로 열어본다. 일단 ollydbg에서 그냥 열리는 것을 보아, 패킹은 되어있지 않다. text strings를 확인해본다. 거의 맨 밑으로 가보니 이렇게 Cracked, Try again이 나온다. 이 부분으로 이동해본다. PTR DS:[0x45B844]와 EAX를 비교함을 확인할 수 있다. 여기서 PTR DS:[주소]는 이 주소에 저장된 값을 뜻한다. 온 김에, 그 주소에 있는 값을 알아보고자 한다. Follow in Dump - Memory address를 누른다. 그럼 60 61 00 00 이 나오는데, 이는 리틀엔디안으로 표기되어 있다. 따라서 00 00 61 60 으로 보면 된다.(.. 더보기
[CodeEngn]코드엔진 basic RCE L14 문제: Name이 CodeEngn 일때 Serial을 구하시오 (이 문제는 정답이 여러개 나올 수 있는 문제이며 5개의 숫자로 되어있는 정답을 찾아야함, bruteforce 필요) Ex) 11111 bruteforce에 관한 문제인 듯 하다. 프로그램을 일단 실행해보니 이렇게 나옴을 확인할 수 있다. ollydbg로 열어보니 패킹되어있을 수 있다고 한다. PEiD를 통해 패킹여부를 확인해본다. UPX로 패킹되어있음을 확인했다. UPX를 통해 언패킹한다. 난 14.exe를 un_14.exe에 저장해주었다. 이제 파일을 올리디버거로 열어준다. 문자열을 확인해보니(Search for- ~text strings) Good job이 있다. 저쪽으로 이동해본다. 보니, Good Job으로 가려면 저기 빨간색체크 표.. 더보기

반응형
LIST