loveletter_WriteUp
๋ณด์๋ฉด.. ๋ง์ง๋ง.. ์ค์ํ๊ฑด ์ฌ๋..์ด์ผ? -์ต์ง์
์๋ จ ๋นํ์
จ์๊น์? ๋ณด๋๊น ๋ฌธ์ ์ด๋ฆ์ด๋ ๊ฒฐ๊ณผ๋ ์ ์ฌํ๋๋ฐ ์๊ฐํ๋ฉด์ ํฉ์๋ค.
ํ์ผ์ ๋ฐ์์ ์ด์ด๋ณด๋๊น.. ์คํํ์ผ์ด๊ณ ๋ฆฌ๋ฒ์ฑ ํ ๋ถ๋ถ์ด ๋๋ฌด ๋ง์์ IDA ์ฌ์ฉ!
๋ณด์๋ฉด.. 256(0x100)์ memset๋ ํ์๊ณ (UAF X).. s ๋ณ์์ 0x100๋งํผ
fgets๋ก ์
๋ ฅ์ ๋ฐ๊ธฐ์ bof๊ฐ ์๋๊ฒ ๋ค์ ๊ทธ ์ดํ 18๋ฒ์งธ protect์ ์ธ์๋ฅผ ์ ๋ฌํฉ๋๋ค.
๋ํ 21๋ฒ๋ถํฐ 25๋ฒ๊น์ง ๊ฐ ์ธ์๋ฅผ ์ง๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฌํ์ฌ idx์ ์ ์ฌํฉ๋๋ค
๊ทธ๋ฆฌ๊ณ memcpy์์ prolog์ epilog๋ ๊ฐ๊ฐ ํ์ธํด๋ด ์๋ค.
ํด๋น ๋ฌธ์์ด์ ๋ฐํํ๋๊ตฐ์!
๋ํ ๋ง์ง๋ง์ผ๋ก prolog์ protect ๊ทธ๋ฆฌ๊ณ epilog๋ฅผ ์ ๋ถ puts๋ก ์นํํฉ๋๋ค.
๊ณ ๋ก ๋์ null๋ฐ์ดํธ๊ฐ ์ค๋ฉด ์ข
๋ฃ๋๋ค๋ ์ ! ์ถํ์ ๋ก์ง์์ ์ค๋ช
๋๊ฒ ์ง๋ง..
puts๋ก ๋ฌธ์์ด์ ์ถ๋ ฅํ๊ณ system์์ loveletter๋ฅผ return system(loveletter)๋ก ๋ฐํํ๋ ๋ก์ง์
๊ทธ๋ฆฌ๊ณ ๋งจ๋ฐ์ system ํจ์๋ก loveletter๋ฅผ ๋ฐ์ต๋๋ค.
์ด ๋ถ๋ถ์ด bof๊ฐ ๋ฐ์ํด์ผํ๋์ง ์์๋ด
์๋ค.
v8์ ํจ์์ readgsdword๋ผ๊ณ ํน์๋ฌธ์๋ฅผ ์ฝ์ด๋๋ ค์.. ๋ฌธ์๋ฅผ ๋ฐ๊พธ๋ ๊ตฌ๋ฌธ์ผ๋ก ๋ณด์
๋๋ค.
๋์ถฉ ๋ณด์ด๋๊น ๋ณ์์ ์ธ์๋ค์ ๋ถ์ํ ํ์๊ฐ ์๊ฒ ์ฃ ?
0xa599e2๋ก ๋ฐ๊พธ๋ ๊ฑฐ ๊ฐ์ต๋๋ค. ๊ทธ๊ฒ ๋ญ์ธ์ง ๋ชจ๋ฅด๊ธฐ์ ์คํ์์ผ๋ด
์๋ค.
์ผ์.. ํ์ดํธํํฐ์ ์๋ ํน์๋ฌธ์๋ค์ด ํํธ๋ก ๋ณํ๋๊ตฐ์.
์ด๋ ๊ฒ ๋ณด๋ฉด ์ด๋ป๊ฒ ํ ์ง๋ฅผ ๋ชจ๋ฅด๊ฒ ์ผ๋๊น ์์ ํต์ฌ ๋ก์ง์ ๋ค์ ์ดํด๋ด
์๋ค.
์นํ ๊ฐ์ 213์์ ์นํ๋๋ ๊ฐ์ ํ์ธํ ์ ์์ต๋๋ค.
์ค๊ฐ๋ง๋ค ๊ณ์ strlen์ ํตํด ๊ธฐ์กด ๋ฌธ์์ด ๊ธธ์ด๋ฅผ ํน์๋ฌธ์์ ๊ธฐ์กด ๋ฌธ์์ด์ ๊ณ์ ๋น๊ต ์ฒดํฌํฉ๋๋ค.
๊ทธ๋ผ ๋ถ๋ช
ํ ๋ฌธ์์ด์ ๊ธธ์ด์ ๋ณํ๊ฐ ์๊ฒผ๋ค๋ ์๋ฏธ๊ฒ ์ฃ ?
์ค๋ฅธ์ชฝ์ strlen์ ๋๊ฐ ๋ถ๋ฌ์ฐ๋ ๋ถ๋ถ์์ ์ฒซ๋ฒ์งธ๋ DWORD PTR์ ๊ทธ๋ฅ ์ ์ฉ๋๋ [ebp-0x13]
๋๋ฒ์งธ๋ eax์ ebp-0x10์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ์ด๋ ์ด๊ฒ์ DWORD PTR์ ์ ์ฌํฉ๋๋ค.
๊ทธ๋ผ DWORD๋ 4byte์ด๊ณ ๋ฌธ์์ด์ ๊ธฐ๋ณธ 1byte ์ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ์ ์ฐจ๋ 3byte..
๊ทธ๋ผ 1์์ 4byte๋งํผ ์นํ ๊ณผ์ ์์ ๋ณํ๊ณ 4byte์ ptr์ ์ ์ฅํ๊ธฐ์
๊ฒฐ๊ณผ์ ์ผ๋ก ์ฐจ์ด๊ฐ 3byte๋ก์จ ์ถ๊ฐ๋ฉ๋๋ค.
์ ์คํํ๋ฉด์ ๋ณธ๋ค๋ฉด 'I love '์ ' very much!'๋ผ๋ ๋ ๋ฌธ์์ด ์ฌ์ด์ ์ฐ๋ฆฌ๊ฐ ์
๋ ฅํ
๋ถ๋ถ์ด ์๊ธฐ๋๊ตฐ์ ๊ทธ๋ผ payload๊ฐ ์ด๋ป๊ฒ ์ค๊ณํ ์ง ๊ฐ์ด ์ค๋๋ฐ ๋ณดํธ๊ธฐ๋ฒ์ ์ดํด๋ด
์๋ค.
์์ ๋ณด์๋ฉด ์ธ๋ถ ๋ช
๋ น์ด ๋ถ๊ฐ(NX)์ด๋ฉฐ, ์นด๋๋ฆฌ๊ฐ ๊ฑธ๋ ค์์ผ๋ฏ๋ก์จ ์๋นํ ๋ํดํฉ๋๋ค.
๋ํ ASLR์ ํ์๋ก ์ ์ฌ๋์ด ์๊ฒ ์ฃ ?
์ฒ์์ rtl๊ณผ ๊ฐ์ ๊ณต๊ฒฉ๊ธฐ๋ฒ์ ์๊ฐํ์ผ๋.. ์ธ์๊ฐ system์์ ์ ์ฌํ์ฌ ์ฌ์ฉ๋๊ธฐ์
์ด๊ฒ์ ์ด์ฉํ๋ค๋ฉด ๋งค์ฐ ์ฌ์ด ๋ฌธ์ ๊ฒ ๊ตฌ๋!
Exploit design(Senario)
์๊น ํน์๋ฌธ์๋ฅผ ํํธ๋ก ๋ณํํ๊ณ ์์ ์
๋ ฅ๋ ๋ฌธ์์ด์ ์์ฑํ์ฌ ์คํํ๋ฏ๋ก
cat flag์ ๋๋จธ์ง๋ ๋ค๋ฅธ ๋ช
๋ น์ด๊ฐ ์
๋ ฅ๋์ง ์๊ฒ ๊ณต๋ฐฑ ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ ํน์๋ฌธ์๋ก buf๋ฅผ ์ฑ์ฐ๋ฉด..
๋์ ๋ก์ง์ ๋ง์ง๋ง์ผ๋ก ํ์ธํ๊ณ ์คํํด๋ด
์๋ค.
๊ทธ๋ผ epilog์ prolog์ ๋ฉ๋ชจ๋ฆฌ์ ๋ญ๊ฐ ์ ์ฌ๋์ด ์์ผ๋ฉฐ, ๋ฉ์ธ ๋ฒํผ์ธ s์ ๋ญ๊ฐ ์๋์ง ํ์ธ ใฑ
์์ ๊ฐ์ ๊ฐ์ ๊ฐ์ง๋ฉฐ ์คํ์ ํน์ง์ s๊ฐ ์์ esp์ ์ ์ฌ๋์ด ์์๊ฑฐ๊ธฐ์
๊ทธ ๋ค์ ๋์ค๋ ์ ๋๊ฐ์ ๊ฐ์ด ์์ผ๋ฉด ๋ฉ๋๋ค.
์์ ๊ฐ์ด esp+0x10๋ถํฐ ์๊ธฐ์ 257byte๋งํผ ์
๋ ฅํ๋ค๋ฉด ์๋ ๋๋๊ทธ ๋ ๋ถ๋ถ์ด null๋ก ๋ค์ด๊ฐ๋๋ค.
๊ทธ๋ฌ๊ธฐ์ /bin/sh๋ฅผ ๋ฃ์ด์ ํด๋ณผ๊น ์๊ฐํ์ผ๋ ์ด ๋ค์๋ null byte๊ฐ ์ค๊ธฐ์ ๋๊น์ผ๋ก ๋ค๋ฅธ ๊ฐ์ผ๋ก ํ๋ฉด
Senario
- buf์ cat flag์ ๋๋จธ์ง๋ฅผ ๋๋ฏธ๊ฐ์ผ๋ก buf์ ๊ธธ์ด-1๋งํผ ์ฑ์๋๋ค.
- ๋ง์ง๋ง ๋ฌธ์๋ฅผ ํน์๋ฌธ์๋ฅผ ๋ฃ์ด์ค๋๋ค.
- ์คํํ๋ฆ์ ๋ณ์กฐ๋ฅผ ํ์ง ์๊ฒ ์
๋ ฅํ s๋ฌธ์์ด์ ํฌ๊ธฐ๋ฅผ ๊ณ ๋ คํ๊ธฐ
- ๋ณ์กฐํ๋ฉด ๋ค๋ฅธ ๊ธฐ๋ฒ์ผ๋ก ํ์ด์ผํ๋๊น ์์ ์ค๊ฒ๊ฐ ์ ๋ง์์ ใ
cat flag(excute; 8byte) + dummy(245 byte) + *(3byte)
Exploit code
1234567891011121314151617 from pwn import*p = ssh(user='loveletter', host='pwnable.kr', port=2222, password='guest').remote('localhost', 9034)context(arch='i386', os='linux', endian='little')#context.log_level='debug''''payload design & excute'''#payload = '\bin\sh'#payload += '\x90'*0xf4payload = "cat flag"payload += " "* 245payload += "*"p.sendline(payload)p.interactive()cs
์ฝ๋์ ๊ตฌ์ฑ์ ์์์ ๋ค ์ค๋ช
ํ์ผ๋ฏ๋ก ๋์ด๊ฐ๊ฒ ์ต๋๋ค. ์ฌ์ง์ด ์ด๋ ค์ด ๋ถ๋ถ๋ ์๋๊ณ ์
์ฌ๊ธฐ์ ์๋กญ๊ฒ ๋ณด์ด๋ ํต์ฌ์..
์ด๊ฑฐ ํ๋๋ฅผ ์ ๋ชฐ๋ผ์ processํ๊ณ ํด๋น nc๋ก ๋ค์ด๊ฐ์ ํด๋ณด๊ณ .. ํ 1์๊ฐ์ ๊ทธ๋ ๊ฒ ๋ ๋ ธ๋๋ฐ
์์ผ๋ก๋ pwntools์ ๋ฌธ์๋ ์ข ๋ ๋ด๋ณด๊ณ ๊ตฌ๊ธ๋ง ์ข ๋๋ฆฌ๊ณ ํด์ผ๊ฒ ๋ค์
์ฌ๊ธฐ์ ์ํ์๋ ๋น์ด์๋ ํฌํธ๋ฅผ ํ์ธํด์ฃผ์๊ณ ์ฌ์ฉํ์๋ฉด..
์ฐธ๊ณ ์๋ฃ
์ฐธ๊ณ ์ด๋ฏธ์ง
'๐โSystem_Study > ๐ชโPwnable.kr' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Rookiss]brain fuck (0) | 2022.11.20 |
---|---|
[Rookiss]echo1 (0) | 2022.11.20 |
[Toddle]fd (0) | 2022.11.19 |
[Toddle]passcode (0) | 2022.11.19 |
[Toddle]collision (0) | 2022.11.19 |