WWW2Exec - GOT/PLT

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 ์ง€์›ํ•˜๊ธฐ

๊ธฐ๋ณธ ์ •๋ณด

GOT: ์ „์—ญ ์˜คํ”„์…‹ ํ…Œ์ด๋ธ”

**์ „์—ญ ์˜คํ”„์…‹ ํ…Œ์ด๋ธ”(GOT)**์€ ๋™์ ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ์—์„œ ์™ธ๋ถ€ ํ•จ์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ฃผ์†Œ๋Š” ๋Ÿฐํƒ€์ž„๊นŒ์ง€ ์•Œ๋ ค์ง€์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—(๋™์  ์—ฐ๊ฒฐ๋กœ ์ธํ•ด), GOT๋Š” ์ด๋Ÿฌํ•œ ์™ธ๋ถ€ ๊ธฐํ˜ธ์˜ ์ฃผ์†Œ๊ฐ€ ํ•ด๊ฒฐ๋œ ํ›„ ๋™์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

GOT์˜ ๊ฐ ํ•ญ๋ชฉ์€ ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ธฐํ˜ธ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜๊ฐ€ ์ฒ˜์Œ ํ˜ธ์ถœ๋  ๋•Œ, ์‹ค์ œ ์ฃผ์†Œ๋Š” ๋™์  ๋ง์ปค์— ์˜ํ•ด ํ•ด๊ฒฐ๋˜์–ด GOT์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ดํ›„ ๋™์ผํ•œ ํ•จ์ˆ˜์— ๋Œ€ํ•œ ํ˜ธ์ถœ์€ GOT์— ์ €์žฅ๋œ ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฃผ์†Œ๋ฅผ ๋‹ค์‹œ ํ•ด๊ฒฐํ•˜๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ํ”ผํ•ฉ๋‹ˆ๋‹ค.

PLT: ํ”„๋กœ์‹œ์ € ๋งํฌ ํ…Œ์ด๋ธ”

**ํ”„๋กœ์‹œ์ € ๋งํฌ ํ…Œ์ด๋ธ”(PLT)**์€ GOT์™€ ๋ฐ€์ ‘ํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋ฉฐ ์™ธ๋ถ€ ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํŠธ๋žจํด๋ฆฐ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์™ธ๋ถ€ ํ•จ์ˆ˜๋ฅผ ์ฒ˜์Œ ํ˜ธ์ถœํ•  ๋•Œ, ์ œ์–ด๋Š” ํ•ด๋‹น ํ•จ์ˆ˜์™€ ์—ฐ๊ฒฐ๋œ PLT์˜ ํ•ญ๋ชฉ์œผ๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ์ด PLT ํ•ญ๋ชฉ์€ ํ•จ์ˆ˜์˜ ์ฃผ์†Œ๊ฐ€ ์•„์ง ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋™์  ๋ง์ปค๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ฃผ์†Œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์†Œ๊ฐ€ ํ•ด๊ฒฐ๋œ ํ›„, ๊ทธ๊ฒƒ์€ GOT์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ, GOT ํ•ญ๋ชฉ์€ ์™ธ๋ถ€ ํ•จ์ˆ˜๋‚˜ ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๊ฐ€ ํ•ด๊ฒฐ๋œ ํ›„ ์ง์ ‘ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. PLT ํ•ญ๋ชฉ์€ ๋™์  ๋ง์ปค๋ฅผ ํ†ตํ•ด ์ด๋Ÿฌํ•œ ์ฃผ์†Œ์˜ ์ดˆ๊ธฐ ํ•ด๊ฒฐ์„ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์‹คํ–‰ ๊ฐ€์ ธ์˜ค๊ธฐ

GOT ํ™•์ธ

GOT ํ…Œ์ด๋ธ”์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด: objdump -s -j .got ./exec

GEF์—์„œ ์‹คํ–‰ ํŒŒ์ผ์„ ๋กœ๋“œํ•œ ํ›„ GOT์— ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ๊ด€์ฐฐํ•˜์„ธ์š”: gefโžค x/20x 0xADDR_GOT

GEF๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋””๋ฒ„๊น… ์„ธ์…˜์„ ์‹œ์ž‘ํ•˜๊ณ  **got**๋ฅผ ์‹คํ–‰ํ•˜์—ฌ GOT ํ…Œ์ด๋ธ”์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

GOT2Exec

๋ฐ”์ด๋„ˆ๋ฆฌ์—์„œ GOT๋Š” ํ•จ์ˆ˜์˜ ์ฃผ์†Œ ๋˜๋Š” ํ•จ์ˆ˜ ์ฃผ์†Œ๋ฅผ ๋กœ๋“œํ•  PLT ์„น์…˜์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ž„์˜ ์“ฐ๊ธฐ์˜ ๋ชฉํ‘œ๋Š” ๋‚˜์ค‘์— ์‹คํ–‰๋  ํ•จ์ˆ˜์˜ GOT ํ•ญ๋ชฉ์„ system ํ•จ์ˆ˜์˜ PLT ์ฃผ์†Œ๋กœ ๋ฎ์–ด์“ฐ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด์ƒ์ ์œผ๋กœ๋Š”, ๋‹น์‹ ์ด ์ œ์–ดํ•˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํ˜ธ์ถœ๋  ํ•จ์ˆ˜์˜ GOT๋ฅผ ๋ฎ์–ด์จ์•ผ ํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ž˜์•ผ ์‹œ์Šคํ…œ ํ•จ์ˆ˜์— ์ „๋‹ฌ๋˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).

๋งŒ์•ฝ system ์ด ๋ฐ”์ด๋„ˆ๋ฆฌ์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ์‹œ์Šคํ…œ ํ•จ์ˆ˜๋Š” PLT์— ํ•ญ๋ชฉ์ด ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” ๋จผ์ € system ํ•จ์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ์œ ์ถœํ•œ ํ›„ GOT๋ฅผ ์ด ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ๋ฎ์–ด์จ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

PLT ์ฃผ์†Œ๋Š” **objdump -j .plt -d ./vuln_binary**๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

libc GOT ํ•ญ๋ชฉ

libc์˜ GOT๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ถ€๋ถ„ RELRO๋กœ ์ปดํŒŒ์ผ๋˜์–ด, ๊ทธ ์ฃผ์†Œ๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์€ ๋ชฉํ‘œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค (ASLR).

libc์˜ ์ผ๋ฐ˜์ ์ธ ํ•จ์ˆ˜๋Š” ๋‹ค๋ฅธ ๋‚ด๋ถ€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๊ฒƒ์ด๋ฉฐ, ์ด ํ•จ์ˆ˜์˜ GOT๋Š” ์ฝ”๋“œ ์‹คํ–‰์„ ์–ป๊ธฐ ์œ„ํ•ด ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ๋” ๋งŽ์€ ์ •๋ณด๋Š” ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•˜์„ธ์š”.

Free2system

ํž™ ์ต์Šคํ”Œ๋กœ์ž‡ CTF์—์„œ๋Š” ์ฒญํฌ์˜ ๋‚ด์šฉ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋ฉฐ, ๋•Œ๋•Œ๋กœ GOT ํ…Œ์ด๋ธ”์„ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ ฏ์ด ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅํ•  ๊ฒฝ์šฐ RCE๋ฅผ ์–ป๊ธฐ ์œ„ํ•œ ๊ฐ„๋‹จํ•œ ํŠธ๋ฆญ์€ free GOT ์ฃผ์†Œ๋ฅผ system์„ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ๋ฎ์–ด์“ฐ๊ณ  ์ฒญํฌ์— "/bin/sh"๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ด ์ฒญํฌ๊ฐ€ ํ•ด์ œ๋  ๋•Œ system("/bin/sh")๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

Strlen2system

๋˜ ๋‹ค๋ฅธ ์ผ๋ฐ˜์ ์ธ ๊ธฐ์ˆ ์€ strlen GOT ์ฃผ์†Œ๋ฅผ **system**์„ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ๋ฎ์–ด์“ฐ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ํ•จ์ˆ˜๊ฐ€ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์œผ๋กœ ํ˜ธ์ถœ๋˜๋ฉด ๋ฌธ์ž์—ด "/bin/sh"๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ์…ธ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒŒ๋‹ค๊ฐ€, puts๊ฐ€ ์‚ฌ์šฉ์ž ์ž…๋ ฅ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋ฉด, strlen GOT ์ฃผ์†Œ๋ฅผ system์„ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ๋ฎ์–ด์“ฐ๊ณ  ๋ฌธ์ž์—ด "/bin/sh"๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ์…ธ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด puts๋Š” ์‚ฌ์šฉ์ž ์ž…๋ ฅ์œผ๋กœ strlen์„ ํ˜ธ์ถœํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

One Gadget

One Gadget

ํž™์—์„œ GOT ๋‚จ์šฉํ•˜๊ธฐ

ํž™ ์ทจ์•ฝ์ ์—์„œ RCE๋ฅผ ์–ป๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์€ ๋น ๋ฅธ ๋นˆ์„ ๋‚จ์šฉํ•˜์—ฌ GOT ํ…Œ์ด๋ธ”์˜ ์ผ๋ถ€๋ฅผ ๋น ๋ฅธ ๋นˆ์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•ด๋‹น ์ฒญํฌ๊ฐ€ ํ• ๋‹น๋  ๋•Œ ์ผ๋ฐ˜์ ์œผ๋กœ free์˜ ํฌ์ธํ„ฐ๋ฅผ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ ๋‹ค์Œ free๋ฅผ system์„ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ํ•˜๊ณ  /bin/sh\x00๊ฐ€ ์ž‘์„ฑ๋œ ์ฒญํฌ๋ฅผ ํ•ด์ œํ•˜๋ฉด ์…ธ์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ์˜ˆ์ œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณดํ˜ธ

Full RELRO ๋ณดํ˜ธ๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ๋ชจ๋“  ํ•จ์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  GOT ํ…Œ์ด๋ธ”์„ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ๋งŒ๋“œ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ๊ธฐ์ˆ ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค:

Relro

์ฐธ๊ณ  ๋ฌธํ—Œ

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 ์ง€์›ํ•˜๊ธฐ