-
[HackCTF] 1996 Write-up표튜터와 함께하는 Pwnable/HackCTF Write-up 2019. 4. 29. 11:08
이번 문제는 1996이다. 굉장히 쉬운 문제에 속하는 편이다.
NX가 걸려있어서 스택, 힙, 데이터 영역에 실행권한이 없고
Partial RELRO기 때문에 got overwrite가 가능하다.
문제를 실행시켜보았더니 그림과 같은 문자열이 출력되고
사용자에게 입력을 받고 있었다.
문제는 또한 바이너리와 cpp 코드도 주어줬다.
단순히 BOF로 충분히 풀 수 있는 문제같아 보였다.
getenv 함수로 buf에 값을 입력하도록 되어있었는데
역시 입력받는 길이를 확인하지 않기 때문에 BOF가 가능했고
BOF를 통해 ret를 spawn_shell로 덮는다면 해당 함수가
실행되면서 "/bin/bash"로 인해 쉘을 딸 수 있을 것이다.
main함수에서의 getenv 함수 호출 전을 살펴보면
rbp-0x410에 인자 buf가 존재한다는 것을 알 수 있다.
그러므로 sfp(8)까지 더해주면 총 0x418 = 1048의
dummy 다음 ret가 존재한다는 것을 알 수 있다.
spawn_shell 함수의 주소를 구했으니 ret는 0x400897로 덮어주자
< Payload >
위의 내용으로 Payload를 구성하였다.
역시 깔끔하게 쉘을 딸 수 있었고 FLAG도 볼 수 있었다.
반응형'표튜터와 함께하는 Pwnable > HackCTF Write-up' 카테고리의 다른 글
[HackCTF] Pwning Write-up (2) 2019.05.03 [HackCTF] g++ pwn Write-up (0) 2019.04.30 [HackCTF] Poet Write-up (0) 2019.04.29 [HackCTF] Look at me Write-up (0) 2019.04.26 [HackCTF] Gift Write-up (0) 2019.04.25 댓글