BOF 문제다. 파일을 다운받고 한번 실행해보자.
두 개의 입력을 받는다. IDA로 코드를 확인해보자.
s 변수는 main함수 내에 있고 name 변수는 보이지 않는다. 전역변수다.
name의 주소는 0x0804A060 이다.
이번엔 gdb로 prob1을 확인해보자.
음.. gets에 입력되는 부분에 bp를 걸고 어디에 입력되는지 확인해보자.
이렇게 두 개의 변수에 각각 AAAA와 AAAABBBBCCCCDDDD를 입력했다.
스택값을 확인해보자.
s 변수에는 0xffffd164 부터 입력이 됐다.
그런데 빨간 박스 부분을 보니 메인함수 ret 때 호출이 되는 주소인 것을 확인할 수 있었다.
그렇다면 s 변수에서 입력받을 때 0xffffd17c 에 쉘코드를 넣어 실행시켜주면 될 것 같다.
SCENARIO
1. 전역변수 name에 쉘코드를 입력해준다.
2. s를 입력할 때 overflow시켜 ret 주소에 name의 주소를 넣어준다.
이제 익스를 짜보자!
쉘코드는 다른 블로그에서 참고 하였다.
m.blog.naver.com/mathboy7/220215329450
실행을 해보자.
익스를 성공했다.
플래그는 HackCTF{1_l0v3_70p_pwn3r_m4lhyuk} 이다.
'HackCTF > WriteUp' 카테고리의 다른 글
HackCTF - Simple_Overflow_ver_2 [150] (0) | 2021.01.19 |
---|---|
HackCTF - x64 Simple_size_BOF [150] (0) | 2021.01.17 |
HackCTF - x64 Buffer Overflow [150] (0) | 2021.01.13 |
HackCTF - Basic_BOF #2 [100] (0) | 2020.12.06 |
HackCTF - Basic_FSB [100] (2) | 2020.12.05 |