Jastes 2022. 11. 19. 19:10

collision_WriteUp

๋ณด์‹œ๋ฉด.. ์ด๋ฒˆ์—” ์•„๋น ๊ฐ€ MD5 hash์„ ์ด์šฉํ•ด์„œ ์ถฉ๋Œ๋œ ํ•˜๋ฃจ๋ฅผ ๋งŒ๋“ค์—ˆ์–ด?
๋‚˜๋„ ์ด๋Ÿฐ๊ฑธ ์›ํ•ด์š”! ๋ผ๋Š” ๊ฑฐ ๊ฐ™์€๋ฐ.. ๋ญ”..

ํ•ด๋‹น C file์„ ์‚ดํŽด๋ณด๋ฉด.. hashcode์— 0x21DD09EC๋กœ ์ €์žฅ๋˜์–ด ์žˆ์œผ๋ฉฐ,
ํ•ต์‹ฌ์€ check_password์ž…๋‹ˆ๋‹ค.

๋‚˜๋จธ์ง€๋Š” ์ธ์ž๋ฅผ 2๊ฐœ.. ์ฆ‰ 1์ด์ƒ ๋„ฃ์œผ์‹œ๊ณ  ์ฒซ ์ธ์ž๋ฅผ ๋„ฃ์—ˆ์„๋•Œ ๊ธธ์ด๊ฐ€ 20์ค„..๋กœ ๋งž์ถฐ์•ผํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  check_password์— ๋ณ€์กฐ๋œ ์ธ์ž์™€ ์œ„ hashcode์™€ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, ์ธ์ž๊ฐ’์ด 20์ด์—ฌ์•ผํ•˜๋ฉฐ, hashcode์™€ check_password์˜ ํ•จ์ˆ˜๋ฅผ ๊ฑฐ์นœ ๊ฐ’์ด ๊ฐ™์•„์•ผํ•ฉ๋‹ˆ๋‹ค.


Exploit design

์œ„ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด, IP(argv[1]์˜ ์ธ์ž๊ฐ’)์„ ๋ฐ›์•„์„œ 5๊ฐœ๋กœ ์ชผ๊ฐœ์„œ
๋˜‘๊ฐ™์€ ๊ฐ’์„ 5๋ฒˆ int(4byte)๋กœ ๋ˆ„์  ํ›„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. 

์ € ํ˜•์‹๋Œ€๋กœ๋ฉด ์žˆ๋Š” hex๊ฐ’์ด 5๋กœ ๋ฐ์ดํ„ฐ ๋‚˜๋‰œ์ƒํƒœ๋กœ ์ชผ๊ฐœ์ ธ์„œ ๋ฐฐ์—ด(ํฌ์ธํ„ฐ)๋กœ ์ ‘๊ทผ
์˜ˆ์‹œ๋กœ 'ABCDE'๋ฅผ 5๋กœ ๋‚˜๋ˆ„์–ด A..B..C..D..๋กœ ์ถ”๊ฐ€ํ•˜์—ฌ ๋„ฃ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ res์™€ hashcode๋ถ€๋ถ„์˜ ์‚ฌ์ด์ฆˆ๋„ ๋™์ผํ•˜๋ฏ€๋กœ ๋ฌธ์ œ ์—†๊ฒ ์ง€์š”(์žˆ๋‹ค๋ฉด type?)

๊ณ„์‚ฐ๊ธฐ๋กœ ๊ฐ„๋‹จํžˆ ๊ณ„์‚ฐํ•˜๋ฉด..

์™ผ์ชฝ์€ 5๋กœ ๋‚˜๋ˆˆ๊ฑฐ ์˜ค๋ฅธ์ชฝ์€ ๋‹ค์‹œ 5๋ฅผ ๊ณฑํ•œ๊ฑฐ

๊ฐ’์˜ ์ฐจ์ด๊ฐ€ ๋‚˜๋Š”๋ฐ ์•„๋งˆ ๋‚˜๋ˆ—์…ˆ์„ ํ–ˆ์„๋•Œ, ๋‚˜๋จธ์ง€๊ฐ€ ์กด์žฌ(์—์‹œ๋กœ 12/5)ํ•˜๋ฏ€๋กœ
ํ•ด๋‹น ์ฐจ์ด์ธ 4๋ฅผ ๋”ํ•ด์ฃผ๋ฉฐ(hash-hash/5), 5๋ฒˆ์„ ๋ˆ„์  ๋ฐ˜ํ™˜ํ–ˆ๊ธฐ์— ์ถ”๊ฐ€์ ์œผ๋กœ ๋„ฃ์–ด์ค€๋‹ค๋ฉด
payload์˜ ํ˜•ํƒœ๊ฐ€.. ๋Œ€๋žต

6C5CEC8 * 0x4 + 21DD09E8+4(21DD09EC-21DD09E8)
= 6C5CEC8*0x4+21DD09DC

./col `python -c 'print("\xC8\xCE\xC5\x06"*4+"\xCC\xCE\xC5\x06")'`๋กœ
๋„ฃ์–ด์„œ ์‹คํ–‰ํ•ด๋ด…์‹œ๋‹ค์ฐธ๊ณ ๋กœ ์•ฝ๊ฐ„ ๋‹ค๋ฅธ๊ฑด ๋ฐ”๋กœ ๋ฆฌํ‹€์—”๋””์•ˆ ํ˜•์‹์œผ๋กœ ์ œ์ถœํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
(๊ทธ ์ด์œ ๋Š” ๋‹ค๋“ค ์•„์‹ค๊ฑฐ๋‹ˆ๊นŒ..)

pwntool๋กœ ์ž‘์„ฑํ•˜๊ธฐ์—๋Š”.. ์ด์ „ fd๋ž‘ ๋น„์Šทํ•˜๋‹ˆ๊นŒ ๋„˜์–ด๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค.
argv๋กœ ๋„ฃ๊ธฐ์—๋Š” ์ €๊ฑฐ ๋‹ค ํ•ด์ฃผ๊ณ  ๋ฐ”๊ฟ”์•ผํ•ด์„œ ๊ท€์ฐฎ๋„ค์š”..

์ฐธ๊ณ ๋กœ hash collision์ด๋ผ๋Š” ๋ฌธ์ œ๋ฅผ ์•Œ๋ ค์ค„๋ ค๊ณ  ๋งŒ๋“  ๋ฌธ์ œ ๊ฐ™์€๋ฐ์š”.
hash์˜ ํŠน์ง•์€.. ์•„๋ž˜ ๋งํฌ๋“ค์„ ํ†ตํ•ด ๋ณด์‹œ๋ฉด ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ž๋ฃŒ๊ตฌ์กฐ - ํ•ด์‹œ ํ•จ์ˆ˜(Hash Collision)์ข…๋ฅ˜์™€ ์ถฉ๋Œ ์ฒ˜๋ฆฌ ๋ฐฉ์‹

ํ•ด์‹œ ์ถฉ๋Œ(Hash Collision)์ด๋ž€- ์„œ๋กœ ๋‹ค๋ฅธ ํ‚ค๋ฅผ ๊ฐ€์ง„ ๋ ˆ์ฝ”๋“œ๋“ค์ด ํ•˜๋‚˜์˜ ๋ฒ„ํ‚ท์— ๋งคํ•‘๋˜๋Š” ๊ฒฝ์šฐ- ์•„๋ž˜ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด John Smith ์™€ Sandra dee๋ฅผ ํ•ด์‹œํ•จ์ˆ˜ ํ•˜์—ฌ ๋™์ผํ•œ ํ•ด์‹œ๊ฐ’(02) ๊ฐ€ ์ถœ๋ ฅ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š”

galid1.tistory.com

 

ํ•ด์‹œ ์ถฉ๋Œ - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „

์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „. ํ•ด์‹œ ์ถฉ๋Œ์ด๋ž€ ํ•ด์‹œ ํ•จ์ˆ˜๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ๊ฐœ์˜ ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•ด ๋™์ผํ•œ ์ถœ๋ ฅ๊ฐ’์„ ๋‚ด๋Š” ์ƒํ™ฉ์„ ์˜๋ฏธํ•œ๋‹ค. ํ•ด์‹œ ํ•จ์ˆ˜๊ฐ€ ๋ฌดํ•œํ•œ ๊ฐ€์ง“์ˆ˜์˜ ์ž…๋ ฅ๊ฐ’์„ ๋ฐ›์•„ ์œ ํ•œํ•œ ๊ฐ€

ko.wikipedia.org

๊ทธ๋ž˜์„œ hash collision์€ ํ•ด์‰ฌ๊ฐ’์˜ ์ถฉ๋Œ๋กœ์จ ํฐ ๋ฌธ์ œ๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๊ทธ๋Ÿด์ผ์€ ๋งค์šฐ ํฌ๋ฐ•ํ•˜๋‚˜)
๋น„์Šทํ•œ ๋ณด์•ˆ์  ์ธก๋ฉด์˜ ๋ฌธ์ œ๋กœ์จ๋Š” race condition์ด ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค.

 

HackerSchool_level5

level5 ๋ฌธ์ œํ’€์ด(Race Condition) keyword : tmp weakness exploit ๋ฌธ์ œํŒŒ์•… /usr/bin/ ํŒŒ์ผ์—์„œ /tmp ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ž„์‹œํŒŒ์ผ์—์„œ ์ทจ์•ฝ์ ์„ ์ฐพ๋‚˜๋ณด๋„ค์š” ์—ฌ๊ธฐ์„œ ์ž„์‹œํŒŒ์ผ์ด ์ทจ์•ฝํ•œ ์ด์œ ๋Š” ์„œ๋ฒ„๊ฐ™์€ ๋ถ€๋ถ„์—์„œ ์ž„์‹œ

dystopia050119.tistory.com


์ฐธ๊ณ  ์ž๋ฃŒ

 

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