Print Stack Canary

Tip

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE)
GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE) Azure ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks ์ง€์›ํ•˜๊ธฐ

Enlarge printed stack

์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์— ์ทจ์•ฝํ•œ ํ”„๋กœ๊ทธ๋žจ์ด ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์˜ ์ผ๋ถ€๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” puts ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ์„ ์ƒ์ƒํ•ด ๋ณด์‹ญ์‹œ์˜ค. ๊ณต๊ฒฉ์ž๋Š” canary์˜ ์ฒซ ๋ฒˆ์งธ ๋ฐ”์ดํŠธ๊ฐ€ null ๋ฐ”์ดํŠธ(\x00)์ด๊ณ  ๋‚˜๋จธ์ง€ canary๋Š” ๋ฌด์ž‘์œ„ ๋ฐ”์ดํŠธ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊ณต๊ฒฉ์ž๋Š” canary์˜ ์ฒซ ๋ฒˆ์งธ ๋ฐ”์ดํŠธ๊นŒ์ง€ ์Šคํƒ์„ ๋ฎ์–ด์“ฐ๋Š” ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ณต๊ฒฉ์ž๋Š” ํŽ˜์ด๋กœ๋“œ์˜ ์ค‘๊ฐ„์—์„œ puts ๊ธฐ๋Šฅ์„ ํ˜ธ์ถœํ•˜์—ฌ canary๋ฅผ ๋ชจ๋‘ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค(์ฒซ ๋ฒˆ์งธ null ๋ฐ”์ดํŠธ ์ œ์™ธ).

์ด ์ •๋ณด๋ฅผ ํ†ตํ•ด ๊ณต๊ฒฉ์ž๋Š” canary๋ฅผ ์•Œ๊ณ  ์ƒˆ๋กœ์šด ๊ณต๊ฒฉ์„ ๊ตฌ์„ฑํ•˜๊ณ  ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๊ฐ™์€ ํ”„๋กœ๊ทธ๋žจ ์„ธ์…˜์—์„œ).

๋ช…๋ฐฑํžˆ, ์ด ์ „์ˆ ์€ ๊ณต๊ฒฉ์ž๊ฐ€ ์ž์‹ ์˜ ํŽ˜์ด๋กœ๋“œ์˜ ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•˜์—ฌ canary๋ฅผ ์œ ์ถœํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฏ€๋กœ ๋งค์šฐ ์ œํ•œ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ƒˆ๋กœ์šด ํŽ˜์ด๋กœ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ (๊ฐ™์€ ํ”„๋กœ๊ทธ๋žจ ์„ธ์…˜์—์„œ) ์‹ค์ œ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

CTF ์˜ˆ์‹œ:

  • https://guyinatuxedo.github.io/08-bof_dynamic/csawquals17_svc/index.html
  • 64๋น„ํŠธ, ASLR ํ™œ์„ฑํ™”, PIE ์—†์Œ, ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” canary์˜ ๋ฐ”์ดํŠธ 0x00๊นŒ์ง€ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ฅผ ์ฑ„์šด ๋‹ค์Œ puts๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์œ ์ถœํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. canary๋กœ ROP ๊ฐ€์ ฏ์„ ์ƒ์„ฑํ•˜์—ฌ puts๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ GOT์—์„œ puts์˜ ์ฃผ์†Œ๋ฅผ ์œ ์ถœํ•˜๊ณ , system('/bin/sh')๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ROP ๊ฐ€์ ฏ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • https://guyinatuxedo.github.io/14-ret_2_system/hxp18_poorCanary/index.html
  • 32๋น„ํŠธ, ARM, relro ์—†์Œ, canary, nx, pie ์—†์Œ. canary๋ฅผ ์œ ์ถœํ•˜๊ธฐ ์œ„ํ•ด puts๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ + ROP ์ฒด์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ system์„ ํ˜ธ์ถœํ•˜๊ณ  r0(์ธ์ˆ˜ /bin/sh)์™€ pc(์‹œ์Šคํ…œ ์ฃผ์†Œ)๋ฅผ ํŒํ•ฉ๋‹ˆ๋‹ค.

Arbitrary Read

ํ˜•์‹ ๋ฌธ์ž์—ด์ด ์ œ๊ณตํ•˜๋Š” ์ž„์˜ ์ฝ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด canary๋ฅผ ์œ ์ถœํ•  ์ˆ˜ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜ˆ๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค: https://ir0nstone.gitbook.io/notes/types/stack/canaries ๋ฐ ์ž„์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ฝ๊ธฐ ์œ„ํ•ด ํ˜•์‹ ๋ฌธ์ž์—ด์„ ์•…์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

Format Strings

Tip

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE)
GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE) Azure ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks ์ง€์›ํ•˜๊ธฐ