Jastes 2022. 11. 6. 23:50


sint

๋ฌธ์ œ ํ’€์ด

์ด์   ์—ฌ๊ธฐ์„  ๊ธฐ๋ณธ์ ์ธ ๋ณดํ˜ธ๊ธฐ๋ฒ•์ด ๊ฑธ๋ ค์žˆ์Šต๋‹ˆ๋‹ค
NX์™€ Partial RELRO์ด์ฃ ..

๋ณด์‹œ๋ฉด.. Type Error๋ฅผ ์œ ๋ฐœํ•˜๋ผ๊ณ  ํ•˜๋Š”๋ฐ.. 38๋ฒˆ ๋ผ์ธ์˜ ๊ฒ€์‚ฌ์—์„œ 0์€ ๊ฒ€์‚ฌ๋ฅผ ์•ˆํ•˜๋Š” ๋ถ€๋ถ„์„ ํ™•์ธ
์ฆ‰, ์ž…๋ ฅ ํ•œ๋„๋ฅผ ๋„˜์„ ์ˆ˜ ์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ์— payload์˜ ์ž…๋ ฅ์ด ์ž์œ ๋กœ์›Œ์ง„๋‹ค!
์ฆ‰, 0์„ ๋„ฃ๊ณ  bof๋ฅผ ์ผ์œผ์ผœ์„œ get_shell์„ ํ•˜๋Š”๊ฑฐ์ฃ 

๋˜ํ•œ signal์ด ๋ฌด์Šจ ํ•จ์ˆ˜์ผ๊นŒ ๊ฒ€์ƒ‰ํ•ด๋ณด๋‹ˆ๊นŒ.. Segment fault ์ฆ‰ ๊ตฌ๋ฌธ ์˜ค๋ฅ˜ ๋‚˜๋ฉด get_shell์„ ์‹คํ–‰ํ•˜๋„ค์š”
๊ทธ๋Ÿผ ์ด๋ฒˆ์—๋Š” pwn๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ํ•  ์ˆ˜ ์žˆ๊ฒ ๋„ค์š”?


Exploit ์„ค๊ณ„

esp๊ฐ€ 0x104๋กœ ์žกํ˜€์žˆ๋„ค์š”.. 256byte๋กœ ํ• ๋‹น๋ฌ๋Š”๋ฐ
๊ทธ๋Ÿผ 0x100์ด์—ฌ์•ผํ•˜๋Š”๋ฐ ์ตœ์ ํ™” ๋‹จ๊ณ„์—์„œ 0x104๋กœ ๋˜์—ˆ์œผ๋ฏ€๋กœ
sfp์™€ ret ๋ถ€๋ถ„๋งŒ ์ฑ„์›Œ์„œ ๋๋‚ด๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ret๋ฅผ get_shell์˜ address๋กœ ํ•ด๋„ ๋ ๊ฑฐ ๊ฐ™์€๋ฐ pwn ์‚ฌ์šฉ์„ ์•ˆํ•˜๊ณ  ํ•ด๋ณผ๊ฑฐ๋‹ˆ๊นŒ
์ฃผ์†Œ์˜ ํฌ๊ธฐ 4byte๋ฅผ ๊ทธ๋ƒฅ ์ฑ„์›์‹œ๋‹ค

์—ญ๋Œ€๊ธ‰์œผ๋กœ ์‰ฌ์šด ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜์˜€๋„ค์š”


Exploit

์„ค๋ช…..ํ•  ๋ถ€๋ถ„์ด ์—†๋„ค์š” ๊ตณ์ด ์žˆ๋‹ค๋ฉด

readํ•จ์ˆ˜์™€ if ์กฐ๊ฑด๋ฌธ์„ ์ž˜ ๋ณด๋ฉด ์ทจ์•ฝ์ ์ด ์กด์žฌํ•˜๋Š”๋ฐ, 0์„ ์ž…๋ ฅ๋ฐ›๊ฒŒ๋˜์—ˆ์„๋•Œ 0 < 0 ๋ถˆ์ผ์น˜ํ•˜๋ฏ€๋กœ
์กฐ๊ฑด๋ฌธ์„ ๊ฑด๋„ˆ๋›ฐ๊ฒŒ๋˜๊ณ , size -1์„ ์ง„ํ–‰ํ•˜์—ฌ read(0, buf, 0 - 1); ์ด ๋œ๋‹ค.

read(0, buf, 0 - 1); 

๊ทธ ์œ„์— ์กฐ๊ฑด๋ฌธ์„ ์šฐํšŒํ–ˆ๋‹ค๊ณ  ํ•˜๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.


์ฐธ๊ณ  ์ž๋ฃŒ

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