-
[Pwn] OffsetCTF write_up/Hack CTF 2019. 9. 24. 00:27
해당 문제를 한번 실행해 보겠습니다.
checksec 명령어를 한번 입력해 보겠습니다.
IDA 32bit를 이용해서 열어보겠습니다.
gets 함수가 보이므로 bof 문제네요!
select_func함수로 입력한 변수 s의인자를 같이 전달 합니다.
전달받은 값을 dest 변수에 넣고 그 값이 one 이면 v3의 값을 one 함수로 보내는 기능을 하는 코드 입니다.
select_func함수의 변수 stack 모형을 한번 그려 보겠습니다.
|----------------|
| dest [ebp-2A] | == src
|----------------|
| v3 [ebp-C] |
|----------------|
| SFP [ebp-0] |
|----------------|
| RET [ebp+4] |
|----------------|
| src [ebp+8] |
|----------------|
의 형태를 가지고 있습니다.
결국에는 v3의 주소로 return 되기 때문에 v3의 주소를 print_flag 함수로 변조 하면 될 것 같습니다.
dest와 v3의 거리는 2A-C = 0x1E이기 때문에 dummy값 30개를 넣고 나서 그뒤로 더입력을 하면 v3가 덮히게 됩니다.
print_flag()의 주소는 다음과 같습니다.
0x6D8 입니다.
exploit code를 작성해 보겠습니다.
Flag : HackCTF{76155655017129668567067265451379677609132507783606}
'CTF write_up > Hack CTF' 카테고리의 다른 글
[Pwn] g++ pwn (0) 2019.09.24 [Pwn] BOF_PIE (0) 2019.09.24 [Pwn] x64 Simple_size_BOF (0) 2019.09.24 [Pwn] Basic_FSB (0) 2019.09.20 [Pwn] x64 Buffer Overflow (0) 2019.09.20