protostar

date
Feb 17, 2017
slug
protostar
status
Published
tags
Pwnable
summary
type
Post

stack0

stack1

stack2

stack3

stack4

stack5

notion image
stack5๋ฒˆ์€ ์‰˜์ฝ”๋“œ ์‹คํ–‰ํ•  ๋•Œ ์ฃผ์†Œ๊ฐ€ ๋ฐ”๋€Œ์–ด์„œ core ๋คํ”„๋กœ ๋ถ„์„์„ ํ•ด์„œ ๋ฐ”๋€ /bin/sh ์ฃผ์†Œ๋ฅผ ๋„ฃ์—ˆ์ง€๋งŒ ์•ˆ๋๋‹ค. ๊ทธ๋ž˜์„œ ls -al์ด ๋ฐ•ํžŒ ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ๋„ฃ๊ณ  RTL ํ–ˆ๋”๋‹ˆ ์ •์ƒ์ ์œผ๋กœ ๋œฌ๋‹ค.

stack6

notion image

stack7

notion image
0xb0xxxxxxxx ์ฃผ์†Œ๋„ ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ret์— ret๋ฅผ ๋„ฃ์–ด์„œ ret+4์— ํ•ด๋‹นํ•˜๋Š” ์ฃผ์†Œ๋กœ ๋„˜์–ด๊ฐ€๊ณ  RTL ๊ณต๊ฒฉ์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

format0

format1

notion image
%x ํ–ˆ์„ ๋•Œ ๊ฐ’์ด ๋‚˜๋ˆ ์ ธ์„œ ๋Œ€์ถฉ ๋•Œ๋ ค ๋งž์ถ”๋Š” ์‹์œผ๋กœ ํ–ˆ๋Š”๋ฐ .. ์„ฑ๊ณตํ–ˆ๋‹ค.

format2

notion image
format1๋ฒˆ์ฒ˜๋Ÿผ ๊ฐ’์ด ํฉ์–ด์ ธ ์žˆ์ง€ ์•Š๊ณ  4๋ฒˆ์งธ ์ฃผ์†Œ์— ๋ฐ”๋กœ ๋ฐ•ํ˜€์žˆ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ target is number๊ฐ€ ๋ฐ”๋€Œ๋Š” ๊ฒƒ์„ ๋ณด๊ณ  64๋ฅผ ๋งž์ถฐ์„œ ํ’€์—ˆ๋‹ค.
notion image

format3

notion image
12๋ฒˆ์งธ์— 0x41์ด ๋ฐ•ํ˜€์žˆ์—ˆ๋‹ค.
๋„ฃ์„ ๊ฐ’์˜ ์ฃผ์†Œ๋Š”
080496f4 g O .bss 00000004 target
target์— ๋“ค์–ด๊ฐˆ ์ฃผ์†Œ๋Š” 0x01025544์ด๋‹ค.
ํฌ๋งท ์ŠคํŠธ๋ง์€ 2๋ฐ”์ดํŠธ์”ฉ ๋Š์–ด์„œ ๋„ฃ์–ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ์†Œ๊ฐ’์„ 2๊ฐœ ๋„ฃ์—ˆ๊ณ ,
์•ž์—๋Š” 5544 - 8byteํ•œ 10์ง„์ˆ˜ ๊ฐ’ (8๋ฐ”์ดํŠธ๋ฅผ ๋นผ๋Š” ์ด์œ ๋Š” ์•ž์—์„œ ์ฃผ์†Œ ๊ฐ’์„ ๋„ฃ์„ ๋•Œ 8๋ฐ”์ดํŠธ๋ฅผ ์‚ฌ์šฉ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.)
๋’ค์—๋Š” 0102์ธ๋ฐ ์—ฌ๊ธฐ์„œ 5544๋ฅผ ๋นผ๋ฉด ์Œ์ˆ˜๊ฐ€ ๋‚˜์˜ค๊ธฐ ๋•Œ๋ฌธ์— 10102 - 5544๋ฅผ ํ•˜๋ฉด 4๋ฐ”์ดํŠธ๊ฐ€ ๋ฐ•ํžˆ๊ณ  ๋‚˜๋จธ์ง€ 1๋ฐ”์ดํŠธ๋Š” ๋ฐ€๋ฆฌ๊ฒŒ ๋˜๋ฏ€๋กœ ์ƒ๊ด€์ด ์—†๋‹ค.
๋’ค์—๊ฐ€ 0102์ด๊ณ  ์•ž์ด 5544์ธ ์ด์œ ๋Š” ๋ฆฌํ‹€ ์—”๋””์–ธ ๋•Œ๋ฌธ์ด๋‹ค.
notion image
notion image

format4

๋ฌธ์ œ์˜ ํžŒํŠธ์—์„œ objdump -TR์„ ์‚ฌ์šฉํ•˜๋ผ๊ณ  ํ•œ๋‹ค.
notion image
notion image
4๋ฒˆ์งธ์— 0x41์ด ๋ฐ•ํ˜”๋‹ค. ๊ทธ ์ดํ›„๋กœ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค.. ๋” ์ฐพ์•„๋ด์•ผ๊ฒ ๋‹ค.

heap0

notion image
heap์€ malloc์œผ๋กœ ์›ํ•˜๋Š” ํฌ๊ธฐ์˜ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๊ฒŒ ๋˜์„œ ๊ทธ ๊ณต๊ฐ„์„ ๋‹ค ์ฑ„์šฐ๊ณ  ๋” ๋„ฃ์œผ๋ฉด ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ์ƒ๊ธด๋‹ค.
๊ทธ๋ž˜์„œ A๋กœ buffer + dummy + sfp ์ธ ๊ฒƒ ๊ฐ™์€๋ฐ ์•„๋ฌดํŠผ 72๋ฐ”์ดํŠธ ๋‹ค์Œ์— 4๋ฐ”์ดํŠธ๊ฐ€ nowinner๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์—ˆ๋‹ค.
๊ทธ๋ž˜์„œ winner์˜ ์ฃผ์†Œ๊ฐ’์„ ์•Œ์•„๋‚ด๊ณ  level passed๋ฅผ ๋„์› ๋‹ค.
notion image

heap1

์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด malloc์ด 8๋ฐ”์ดํŠธ ์ƒ์„ฑ์„ ํ–ˆ๋Š”๋ฐ ์ž…๋ ฅํ•œ ๊ฐ’๋“ค์„ strcpy๋กœ ๋ณต์‚ฌ๋ฅผ ํ•œ๋‹ค. ์ฒซ๋ฒˆ์งธ i1->name์—์„œ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ฅผ ์‹œ์ผœ์„œ ๋‘๋ฒˆ์งธ์— ๊ฐ’์„ ๋„ฃ์„ ์ฃผ์†Œ๋ฅผ ๋ณ€์กฐ ์‹œ์ผœ์ฃผ๋ฉด ํ’€ ์ˆ˜ ์žˆ๋‹ค.
notion image
gdb๋กœ ๊นŒ๋ณด๋‹ˆ puts๋กœ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  puts์˜ got์— winner ํ•จ์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ๋„ฃ์—ˆ๋”๋‹ˆ ํ’€๋ ธ๋‹ค.
notion image
notion image
notion image

heap3

free๋ฅผ ์—ฐ์†์ ์œผ๋กœ ํ•ด์„œ
๋งˆ์ง€๋ง‰์— dynamic failed?๋ฅผ ์ถœ๋ ฅํ•  ๋•Œ puts๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ put GOT์— winner ํ•จ์ˆ˜๋ฅผ ๋„ฃ์œผ๋ฉด ํ’€๋ฆด ๊ฒƒ ์ด๋‹ค.
notion image
32๋ฐ”์ดํŠธ ํฌ๊ธฐ๋ฅผ malloc ํ–ˆ๊ณ  8๋ฐ”์ดํŠธ๋Š” ์ด์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๋“ค์–ด์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด 40๋ฐ”์ดํŠธ๋‹ค.
"\x90"์œผ๋กœ ๋ฒ„ํผ๋ฅผ ์ฑ„์šฐ๊ณ  puts got์— winner ํ•จ์ˆ˜๋ฅผ ๋ฎ์–ด ์“ฐ๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ์„ธ๊ทธ๋จผํŠธ ํดํŠธ๊ฐ€ ๋œฌ๋‹ค. ๊ถŒํ•œ ๋ฌธ์ œ์˜€๋‹ค.
๊ทธ๋ž˜์„œ ์‹คํ–‰ ํ•  ๊ณต๊ฐ„์ธ ์Šคํƒ์— ๋„ฃ๊ธฐ๋กœ ํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ winner shellcode๋ฅผ ๋„ฃ๊ณ  \xfc\xff\xff\xff๋ฅผ ๋„ฃ์Œ์œผ๋กœ์จ prev_size๋ฅผ ์กฐ์ž‘ํ•ด์„œ b address+4๋กœ ์ธ์‹ ํ•œ๋‹ค.
prev_size๋Š” ์ด์ „ chunk์˜ ํฌ๊ธฐ ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•˜๋Š”๋ฐ ์ด์ „ chunk์˜ ์œ„์น˜๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
fd+12=bk, bk+8=fd๋ฅผ ์ด์šฉํ•ด์„œ ์›ํ•˜๋Š” ์ฃผ์†Œ์— ์›ํ•˜๋Š” ๊ฐ’์„ ๋„ฃ์–ด์„œ ์‹คํ–‰ ํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ทธ๋ž˜์„œ aaaa๋กœ ๋”๋ฏธ ๊ฐ’์„ ๋„ฃ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ์‹คํ–‰ํ•ด์•ผ ํ•  puts got์˜ -12์ฃผ์†Œ์ธ 0x0804b128-12 = 0x0804b11c๋ฅผ fd์— ๋„ฃ๊ณ  bk์— 0x0804c008(winner ํ•จ์ˆ˜)์„ ๋„ฃ์–ด์„œ ์กฐ์ž‘์„ ํ•œ๋‹ค.
๋งˆ์ง€๋ง‰ A๋Š” ๊ฐ’์„ ๋ฌด์กฐ๊ฑด 3๊ฐœ๋ฅผ ๋„ฃ์–ด์•ผ ํ•˜๋‹ˆ๊นŒ dummy ๊ฐ’์œผ๋กœ ์•„๋ฌด๊ฑฐ๋‚˜ ๋„ฃ์—ˆ๋‹ค.

ยฉ hyuunnn 2024