본문 바로가기

Wargame/Pwnable.kr

Pwnable.kr codemap-10pt

1000개의 힙 청크를 할당하고 문자열을 랜덤하게 집어넣는다고 한다. 그런데 반복 실행해보면 가장 큰 청크와 해당하는 문자열이 항상 동일함을 알 수 있다.




 사실 이 문제는 IDA plugin인 codemap을 이용해야 sql 쿼리로 간단히 구할 수 있다. 하지만.. 내 PC에서 무슨 문젠지 모르겠지만 돌아가지 않더라.. 흠.. 다른 PC를 이용해볼까했지만 이 문제를 풀 당시엔 그럴 수 밖에 없었다. 




 힌트로 준 0x403E65를 가서 EAX와 EBX의 값을 살펴보자. 

 Olly디버거로 키면 베이스가 달라지더라. 0x123E65에 break point를 걸고 EAX와 EBX를 보면된다. EAX는 할당한 힙 청크의 크기이고, EBX에는 문자열이 박혀있는 것을 볼 수 있다.



 가장 큰 청크의 크기가 99879(0x18627) 이니까 두 번째와 세 번째로 큰 청크는 0x18627보다 조금 작을 것이다. break point에 걸린 지점에서 F4를 갈겨서 겨우겨우 풀었다. 청크의 크기가 0x17000 이상인 값들을 비교하면서 넘기다 보면 한.. 50갠가..? 정도 나온다. 



그 중 두 번째는 "roKBkoIZGMUKrMb", 세 번째는 "2ckbnDUabcsMA2s" 가 문자열로 박혀있다. 



하.. 풀고나서 몇 번째였는지도 캡쳐를 찍어서 보여주고 싶었지만.. 다시 F4 갈길 엄두는 안난다. 왜 codemap이 돌아가지 않았는지 모르겠지만.. 다음엔 한번 써봐야지.

'Wargame > Pwnable.kr' 카테고리의 다른 글

Pwnable.kr ascii-333pt  (0) 2017.07.30
Pwnable.kr unexploitable-500pt  (0) 2017.07.24
Pwnable.kr coin1-6pt  (0) 2017.05.14
Pwnable.kr memcpy-10pt  (0) 2017.05.13
Pwnable.kr input-4pt  (0) 2017.05.09