WAR GAME/HackCTF

[HackCTF : Pwnable] Basic_BOF #2 풀이

jir4vvit 2020. 9. 22. 10:20

문제 풀이 환경 : ubuntu 16.04.7

 

문제

베이직 오버플로우..

간단한 오버플로우 문제일 것 같다. 

 

문제 환경에 접속하여 일단 실행시켜 보았다.

ㅋㅋ

오.... 당황했지만 IDA로 까보기로 한다.

 


 

main

main 함수이다.

v5에 sup????을 할당하고 s를 133byte 입력받는다. 그리고 v5를 실행시킨다. sup 함수가 뭘까??

 

sup 함수

뭐야.. s를 출력한다. 

 

결론은 v5에 s를 출력하는 함수를 할당하고. fgets 함수에서 s를 13byte 입력받고, v5를 실행시켜 s를 출력한다.

아 참고로 이 s는 main에 있는 s와 다르다. 이 s를 IDA에서 주소값을 확인해서 출력해보면

s

저런 문자가 저장되어 있다.

 

메모리

ebp에서 얼마나 떨어져있냐..를 토대로 메모리 스택은 이런 구조일 것을 예측할 수 있다.

 

s는 128byte라는 것을 알 수 있다.

 

처음에 RET를 덮어쓰기 하려고 생각했었는데, s가 133byte밖에 입력을 못받아서 포기했다.

 

 

그래서 v5를 덮어쓰기 해야겠다고 생각했다. 

shell 함수

마침 IDA를 뒤적거려보니 shell 함수가 있었다.

 

 

A*128 + shell 함수 주소

 

위를 토대로 페이로드를 작성하였다.

 

 

payload.py

 

flag 획득

 

성공!