-
[HackCTF] Basic_BOF#2 Write-up표튜터와 함께하는 Pwnable/HackCTF Write-up 2019. 4. 17. 22:43
이번 문제는 Basic_BOF#2이다.
문제를 실행시켜보도록 하자!!
입력했더니 뭔가 이상한 값이 출력되었다.
IDA를 이용해서 코드를 보도록 하겠다ㅎㅎ
음.. 값을 입력받고 v5( )를 호출한다.
어셈블리어 코드도 보도록 하자!!
0x80484b4라는 주소를 ebp-0xc가 4바이트만큼 참조하는 값으로
mov해주고 있다. 그리고나서 그 값을 eax에 넣고 call 하고 있는 것으로 보아
이 부분이 v5함수를 호출하는 것이라는 것을 알 수 있다.
처음에는 shellcode를 이용해서 ret를 덮으면 되나? 길이가 덮을 수 있는
길이가 아니였기 때문에 다른 방법을 사용해야했다.
무슨 함수가 쓰이나 한번 보도록 하겠다.
또잉 shell이라는 함수가 보였다. 그렇다면??
ebp-0xc에 있는 주소가 호출되는 것 대신에 shell함수의 주소를 넣어서
shell 함수를 호출시키면 될 것이다. ㅎㅎ 함수가 존재해서 수고를 덜었다ㅎㅎ
그렇다면 어느정도를 덮어야하는지 확인해보도록 하겠다.
"a"를 120개를 넣어보았다. 참고로 우리가 fgets으로 넣을 수 있는 길이는 133이다.
호출되는 eax가 0x80484b4인데 120개 이후 129번째에 등장하는 것으로 보아
우리는 128개의 쓰레기값에 shell 함수의 주소를 쓰게되면 0x80484b4를 덮을 수 있다.
길이도 132개이기 때문에 충분히 덮을 수 있다~~ㅎㅎ 그럼 진행해보자~
깔끔하게 FLAG를 볼 수 있었다~~
* Thanks to Py0zz1 *
처음에 이 문제를 풀다가 shell함수가 있다고 생각하지 못해서 있는지도 몰랐는데 꿀팁이 있다~
당연한 말이 겠지만 바로 plt에 system이 있는지 확인하는 것이다.
system 함수가 있다는 것은 바이너리에서 system함수를 참조하는 것이기 때문에
저러한 함수가 혹시 있나 하고 한번 생각해보는 것이 좋다~ (다음엔 함수도 잘봐야겠다 ㅎㅎ)
반응형'표튜터와 함께하는 Pwnable > HackCTF Write-up' 카테고리의 다른 글
[HackCTF] Simple_Overflow_ver_2 Write-up (0) 2019.04.19 [HackCTF] x64 Simple_size_BOF Write-up (0) 2019.04.18 [HackCTF] x64 Buffer Overflow Write-up (0) 2019.04.18 [HackCTF] 내 버퍼가 흘러넘친다!!! Write-up (0) 2019.04.18 [HackCTF] Basic_BOF#1 Write-up (0) 2019.04.17 댓글