Ex) FF35CA204000E84D000000 정답인증은 OEP+ Stolenbyte
Ex ) 00401000FF35CA204000E84D000000
stolenbyte 12byte와 OEP 00401000를 구할 수 있다. jmp는 0040100c로 하지만 stolenbyte 0xC byte 만큼 붙여주면 oep는 0040100c가 된다.
이때 성공메시지 대신 Key 값이 MessageBox에 출력 되도록 하려면 파일을 HexEdit로 오픈 한 다음 0x???? ~ 0x???? 영역에 Key 값을 overwrite 하면 된다.
문제 : Key값과 + 주소영역을 찾으시오
Ex) 7777777????????
참조된 문자열을 찾아서 성공 메세지를 출력하는 부분을 찾고 그 위에서 비교문과 분기점에 breakpoint를 걸고 실행했다.
key 값으로 1234를 넣었는데, 넣은 1234와 0x7A2896BF과 비교하는 것을 볼 수 있다.
0x7A2896BF == 2049480383
key 값은 2049480383이 된다.
key값이 MessageBox에 출력되도록 하려면 HxD로 열어서 Cong~~~부분을 찾는다.
성공 메세지 부분을 2049480383(\x00)으로 덮어주면 된다.[0x0D3B~0x0D45]
Basic RCE L13
.NET은 DOTPEEK으로!
main을 보면, 암호화된 문자열을 복호화 한 값이랑 사용자 입력값이랑 비교한다.
코드를 추출해서 복호화된 문자열을 출력하도록 했다.
(이 문제는 정답이 여러개 나올 수 있는 문제이며 5개의 숫자로 되어있는 정답을 찾아야함, bruteforce 필요)
Ex) 11111
upx 패킹이 되어 있으므로 언패킹을 진행하고 올리디버거로 열었다.
참조된 문자열중 성공문자열을 찾고, 그 위에 분기점과 비교문에 breakpoint를 걸고 실행했다.
CodeEngn / 11111을 입력했을 때
11111은 EAX에 들어가서 ESI값 0x129A1과 비교하게 된다
0x129A1의 10진수 값 76193을 입력해주면 성공메세지가 출력된다.
이번에는 패킹이 되어있지 않아서 바로 올리디버거로 열었다.
참조된 문자열에서 성공메세지를 찾고 그 위 비교문에 breakpoint를 걸고 실행했다.
CodeEngn / 12345 로 입력을 했는데 입력한 12345와 24928을 비교한다.
이번에도 패킹은 없다.
참조된 문자열에서 성공메세지를 찾아 그 위 비교문에 breakpoint를 걸고 실행했다.
CodeEngn / 11111 로 입력했더니 11111과 0xE4C60D97과 비교한다.
0xE4C60D97 의 10진수값을 시리얼로 입력해주면 된다.
'WAR GAME > CodeEngn' 카테고리의 다른 글
CodeEngn [Basic RCE] 1 ~ 10 풀이 (0) | 2019.02.09 |
---|---|
CodeEngn [Cryptology] 풀이 (8) | 2019.02.09 |