y0u_bat

[FC4] 2. cruel -> enigma 풀이 본문

휴지통

[FC4] 2. cruel -> enigma 풀이

유뱃 2015. 7. 27. 13:36



[FC4] 2. cruel -> enigma 풀이






짤려서 안보이는데 리모트입니다.

 canary가 있네여.





gdb로 보니 버퍼가 더미포함 260바이트네여..




일단 대충 ret뒤에는 무조건 카나리가 들어와야 됩니다.


오타는 무시해주세요..


strcpy가 00을 만나면 복사가 거기까지 해서 끝기는데요.

그래서 fake_ebp로 풀어야되는 문제입니다.


입력하는곳이 fgets이고 임시버퍼는 stdin입니다.



임시버퍼를 찾았습니다.


0x8cb740 이네요.




대충 a *260  해주시고,



실행





아까 구한 주소 stdin주소 넣으면 저렇게 나오는데,

앞에 하나 하나 뒤지다가 입력한 값이 있는곳을 발견했데요.

stdin 에서 4번째 부분을 보면 입력한 값들이 들어있는걸 볼수있는데요.


다시 실행해보면 알겠지만 저 값은 b7f[XX]000으로 XX가 랜덤으로 계속 바끼는걸 볼 수 있습니다.

브루트포싱을 해서 풀어야되는 문제입니다.




일단 fake ebp로 풀는방식으로 페이로드를 작성해보았습니다.

임시버퍼에서 카나리 뒤부분으로 이동하게 끔 fake_ebp를 하고 leave ret 합니다.

leave명령어중 pop ebp가 있는데 이걸 하면서 esp+4됩니다. 

그러므로 카나리 뒤에 더미 4바이트를 넣어줍니다.


그다음부터는  rtl로 하면 됩니다. 


저는 2번째 3번째 매개변수는 전부 null로 되게 만들었습니다.







/bin/sh주소를 구해줍니다.




leave_ret주소를 구해줍니다.




execve주소를 구해줍니다.





이런식으로 코드를 짜줍니다.





실행하면 이런식으로 보통 300번만에 나옵니다.




클리어



'휴지통' 카테고리의 다른 글

[FC4] 4. dark_stone -> cruel 풀이  (0) 2015.07.26
[FC3] All Clear  (0) 2015.07.24
[FC3] 5. evil_wizard -> dark_stone  (0) 2015.07.24
[FC3] 4. hell_fire -> evil_wizard  (0) 2015.07.24
[FC3] 3. dark_eyes -> hell_fire  (5) 2015.07.24
Comments