๐Ÿ” ๋ณด์•ˆ

    Pwnable.kr :: Toddler's Bottle - mistake write up

    Pwnable.kr :: Toddler's Bottle - mistake write up

    ๋Œ€๋‹จํ•œ ํ•ดํ‚น ์‹ค๋ ฅ์€ ํ•„์š”์—†๋‹ค๊ณ  ๋งํ•˜๋Š” mistake ๋ฌธ์ œ. ์‚ฌ์‹ค์ธ์ง€ ํ™•์ธํ•ด๋ณด์ž. ํžŒํŠธ๋Š” operator priority ๋ผ๊ณ  ํ•œ๋‹ค. ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์ž. ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•ด๋ณด๋ฉด, ์šฐ์„  open() ํ•จ์ˆ˜๋กœ password ํŒŒ์ผ์„ ์—ฐ๋‹ค. ๊ทธ๋ฆฌ๊ณ  open() ํ•จ์ˆ˜๊ฐ€ return ํ•˜๋Š” file descriptor ๊ฐ’์ด fd ๋ณ€์ˆ˜์— ๋“ค์–ด๊ฐ€๊ณ  0๊ณผ ๋Œ€์†Œ ๋น„๊ต๋ฅผ ํ•˜๋Š” ์ค„ ์•Œ์•˜๋Š”๋ฐ .... ! ํžŒํŠธ์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„๋ฅผ ์‚ดํŽด๋ณด์ž .. ์ด ๋ถ€๋ถ„์—์„œ ์‹œ๊ฐ„์„ ๋งŽ์ด ์ผ๋‹ค. if(fd=open("/home/mistake/password",O_RDONLY,0400) < 0) ์ด ์กฐ๊ฑด์‹ ์•ˆ์—์„œ = ๊ณผ < ์—ฐ์‚ฐ์ž์˜ ์šฐ์„ ์ˆœ์œ„๋Š” < ์—ฐ์‚ฐ์ž๊ฐ€ ๋†’๋‹ค. ์ฆ‰, open() ํ•จ์ˆ˜๊ฐ€ return ํ•˜๋Š” fd ๊ฐ’๊ณผ 0์„ ๋จผ์ € ..

    Pwnable.kr :: Toddler's Bottle - leg write up

    Pwnable.kr :: Toddler's Bottle - leg write up

    pwnable.kr ์˜ leg ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด์ž. ๋ฌธ์ œ๋ฅผ ๋“ค์–ด๊ฐ€๋ฉด arm ์— ๋ฐฐ์›Œ์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๋ณธ์ธ์€ leg ๊ฐ€ ๋” ์ข‹๋‹ค๊ณ  ํ•œ๋‹ค.. pwnable.kr ์˜ ๊ฐ์„ฑ ์•„์ง์€ ๋”ฐ๋ผ๊ฐ€๊ธฐ ๋ฒ„๊ฒ๋‹ค... ์šฐ์„  ARM architecture ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. ์ž„๋ฒ ๋””๋“œ ๊ธฐ๊ธฐ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” RISC ํ”„๋กœ์„ธ์„œ๋กœ, ์ €์ „๋ ฅ์„ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค๊ณ„ํ•˜์—ฌ ARM CPU ๋Š” ๋ชจ๋ฐ”์ผ์ด๋‚˜ ์‹ฑ๊ธ€ ๋ณด๋“œ ์ปดํ“จํ„ฐ์—์„œ ๋šœ๋ ทํ•œ ๊ฐ•์„ธ๋ฅผ ๋ณด์ธ๋‹ค๊ณ  ํ•œ๋‹ค. ์ถœ์ฒ˜ : https://ko.wikipedia.org/wiki/ARM_%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98 ARM ์•„ํ‚คํ…์ฒ˜ - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „ 64/32๋น„ํŠธ ์•„ํ‚คํ…์ฒ˜๋ฐœํ‘œ2011๋…„ (10๋…„ ์ „)(2011)๋ฒ„์ „Armv8-A, Armv8.1-A, Armv..

    Pwnable.kr :: Toddler's Bottle - random write up

    Pwnable.kr :: Toddler's Bottle - random write up

    random ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด์ž. ์ฒซ ๋ฒˆ์งธ fd ๋ฌธ์ œ์™€ ๋™์ผํ•˜๊ฒŒ 1pt ์งœ๋ฆฌ ๋ฌธ์ œ์ด๋‹ค. ์‹ค์ œ๋กœ๋„ ํฌ๊ฒŒ ์–ด๋ ต์ง€ ์•Š์€ ๋ฌธ์ œ์˜€๋‹ค. ๋ฌธ์ œ๋ฅผ ์‚ดํŽด๋ณด์ž. ์—ญ์‹œ๋‚˜ ์„ธ ๊ฐœ์˜ ํŒŒ์ผ์ด ์กด์žฌํ•œ๋‹ค. ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋ณด์ž. rand() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ๋žœ๋ค๊ฐ’์„ ๋งŒ๋“ค์–ด random ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๊ณ  scanf() ๋กœ ์ž…๋ ฅ๋ฐ›์€ ๊ฐ’๊ณผ xor ์—ฐ์‚ฐ์„ ํ•ด์„œ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ 0xdeadbeef ์ด๋ฉด flag ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ ์•Œ์•„์•ผ ํ•  ๊ฒƒ์ด ํ•˜๋‚˜ ์žˆ๋Š”๋ฐ, rand() ํ•จ์ˆ˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ๋•Œ ๊ฐ’์ด ์ •ํ•ด์ง„๋‹ค. ์ฆ‰ ํ”„๋กœ๊ทธ๋žจ์„ ์—ฌ๋Ÿฌ๋ฒˆ ์‹คํ–‰์‹œ์ผœ๋„ ๋™์ผํ•œ ๊ฐ’์ด ๋‚˜์˜จ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ ๋งค๋ฒˆ ๋‹ค๋ฅธ ๋‚œ์ˆ˜๋ฅผ ์–ป๊ณ  ์‹ถ๋‹ค๋ฉด srand() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿผ ์šฐ๋ฆฌ๋Š” rand() ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œํ‚จ ๋’ค ํ•ด๋‹น ๊ฐ’์„ ์•Œ์•„๋‚ด๊ธฐ๋งŒ ํ•˜๋ฉด ๋์ด๋‹ค. ์—ญ..

    Pwnable.kr :: Toddler's Bottle - passcode write up

    Pwnable.kr :: Toddler's Bottle - passcode write up

    pwnable.kr ์˜ ๋‹ค์„ฏ ๋ฒˆ์งธ ๋ฌธ์ œ passcode ๋ฅผ ํ’€์–ด๋ณด์ž. ssh ๋กœ ์ ‘์†ํ•ด๋ณด์ž. ์ด์ „ ๋ฌธ์ œ๋“ค๊ณผ ๊ฐ™์ด ์„ธ ๊ฐœ์˜ ํŒŒ์ผ์ด ์กด์žฌํ•œ๋‹ค. ์†Œ์Šค์ฝ”๋“œ๋ฅผ ํ›‘์–ด๋ณด์ž. ์šฐ์„  ๋ˆˆ์—ฌ๊ฒจ ๋ด์•ผ ํ•  ๋ถ€๋ถ„์€ login() ํ•จ์ˆ˜ ๋ถ€๋ถ„์ด๋‹ค. scanf() ๋กœ ์ •์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ  ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•ด์•ผ ํ•  ๋ถ€๋ถ„์ด ์žˆ๋Š”๋ฐ, passcode ๋ณ€์ˆ˜์— ์ •์ˆ˜๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ”ํžˆ scanf() ๋ฅผ ์ด์šฉํ•ด ์ •์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์„ ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง„ํ–‰ํ•œ๋‹ค. scanf("%d", &passcode1); scanf() ํ•จ์ˆ˜์—์„œ ๋‘ ๋ฒˆ์งธ ์ธ์ž์— ํ•ด๋‹นํ•˜๋Š” "&passcode1" ์— ์ •์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜๋ผ๋Š” ์˜๋ฏธ์ด๋‹ค. ์—ฌ๊ธฐ์„œ & (ampersand) ๋Š” ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๊ฐ’์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ์ฆ‰ ๋‘ ๋ฒˆ์งธ ์ธ์ž๋กœ ์ „๋‹ฌ๋œ &passcode1 ์€ passcode1 ..

    Pwnable.kr :: Toddler's Bottle - bof write up

    Pwnable.kr :: Toddler's Bottle - bof write up

    Pwnable.kr ์˜ ์„ธ๋ฒˆ์งธ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด์ž. ์ด๋ฒˆ ๋ฌธ์ œ๋Š” Buffer Overflow ์— ๋Œ€ํ•œ ๋ฌธ์ œ์ด๋‹ค. Buffer Overflow ๋ž€, ๋ฐ์ดํ„ฐ๋ฅผ ๋ฒ„ํผ์— ์ €์žฅํ•  ๋•Œ, ๋ฐ์ดํ„ฐ๊ฐ€ ์ง€์ •๋œ ๋ฒ”์œ„ ๋ฐ”๊นฅ์— ์ €์žฅ๋˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๊ณ , ๋ฒ—์–ด๋‚œ ๋ฐ์ดํ„ฐ๋Š” ์ธ์ ‘ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ฎ์–ด์“ฐ๊ฒŒ ๋œ๋‹ค. nc ๋กœ ์ ‘์†ํ•˜๋ฉด bof ํŒŒ์ผ์ด ๋ฐ”๋กœ ์‹คํ–‰๋˜๊ณ , ๊ทธ ์ „์— wget ์œผ๋กœ bof ํŒŒ์ผ๊ณผ bof.c ์†Œ์ŠคํŒŒ์ผ์„ ๋‹ค์šด๋ฐ›์•„๋ณด์•˜๋‹ค. bof.c ์†Œ์ŠคํŒŒ์ผ์€ main ํ•จ์ˆ˜์™€ func ํ•จ์ˆ˜๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. main ํ•จ์ˆ˜์—์„œ๋Š” func ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฑฐ ์ด์™ธ์— ๋ณ„๋‹ค๋ฅธ ์ฝ”๋“œ๊ฐ€ ์—†๊ณ , 0xdeadbeef ๋ผ๋Š” ๊ฐ’์„ ์ธ์ž๋กœ ๋„˜๊ธฐ๋ฉด์„œ func ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์žˆ๋‹ค. func ํ•จ์ˆ˜์—์„œ๋Š” 0xdeadbeef ๋ผ๋Š” ๊ฐ’์„ int ํ˜• ๋ณ€์ˆ˜ key ์—๋‹ค๊ฐ€ ๋„ฃ๊ณ , ov..

    Pwnable.kr :: Toddler's Bottle - collision write up

    Pwnable.kr :: Toddler's Bottle - collision write up

    Pwnable.kr ์˜ ๋‘๋ฒˆ์งธ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด์ž. ์ด๋ฒˆ ๋ฌธ์ œ๋Š” MD5 hash collision ์— ๋Œ€ํ•œ ๋ฌธ์ œ๋ผ๋Š” ํžŒํŠธ๋ฅผ ์ฃผ๊ณ  ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด Hash ๋Š” ๋ฌด์—‡์ด๊ณ  Hash collision ์ด ๋ฌด์—‡์ธ์ง€ ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด์ž. Hash ๋ž€ ์ž„์˜์˜ ๊ธธ์ด๋ฅผ ๊ฐ–๋Š” ์ž„์˜์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๊ณ ์ •๋œ ๊ธธ์ด์˜ ๋ฐ์ดํ„ฐ๋กœ ๋งคํ•‘ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ํ•œ ๊ฐœ์˜ ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•ด ํ•œ ๊ฐœ์˜ ์ถœ๋ ฅ๊ฐ’์ด ๋‚˜์˜ค๋Š”๋ฐ, ์ด ์ž…๋ ฅ๊ฐ’์˜ ๋ฒ”์œ„๋Š” ๋ฌดํ•œํ•œ ๋ฐ ๋น„ํ•ด ์ถœ๋ ฅ๊ฐ’์˜ ๋ฒ”์œ„๋Š” ์œ ํ•œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž…๋ ฅ์ด ๋‹ค๋ฆ„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋“œ๋ฌผ๊ฒŒ ๋™์ผํ•œ ๊ฐ’์ด ์ถœ๋ ฅ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ๋ฅผ '์ถฉ๋Œ' (Collsiion)์ด ๋ฐœ์ƒํ–ˆ๋‹ค๊ณ  ํ•œ๋‹ค. ์ด์ œ ๋ฌธ์ œ๋ฅผ ์‚ดํŽด๋ณด์ž. ์—ญ์‹œ๋‚˜ flag ํŒŒ์ผ์ด ์กด์žฌํ•˜๊ณ  ๊ถŒํ•œ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— setUID ๊ฐ€ ๊ฑธ๋ ค์žˆ๋Š” col ํŒŒ์ผ์„ ์ด์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ..

    Pwnable.kr :: Toddler's Bottle - fd write up

    Pwnable.kr :: Toddler's Bottle - fd write up

    1๋ฒˆ ๋ฌธ์ œ fd ๋ฅผ ํ’€์–ด๋ณด์•˜๋‹ค. fd ๋Š” File Descriptor ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด File Descriptor ๋ฅผ ๋ชจ๋ฅด๋ฉด ํ’€ ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ์ด๋‹ค. ๋ฌธ์ œ์—์„œ๋„ "What is a file descriptor?"๋ผ๋Š” ํžŒํŠธ๋ฅผ ์ฃผ๊ณ  ์žˆ๋‹ค. ssh ๋กœ fd@pwnable.kr ์— ์ ‘์†ํ•ด๋ณด์ž. ํŒŒ์ผ์„ ์‚ดํŽด๋ดค๋”๋‹ˆ flag ํŒŒ์ผ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋  ๊ฒƒ ๊ฐ™๋‹ค. ํ•˜์ง€๋งŒ ํ˜„์žฌ ๊ถŒํ•œ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ง์ ‘ ๋ณผ ์ˆ˜๋Š” ์—†๊ณ , fd ํŒŒ์ผ์— setUID ๊ฐ€ ๊ฑธ๋ ค์žˆ์œผ๋ฏ€๋กœ fd ํŒŒ์ผ์„ ์ด์šฉํ•˜๋ฉด flag ๋ฅผ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค. ์šฐ์„  fd.c ํŒŒ์ผ์˜ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ํ™•์ธํ•ด๋ณด์ž. main ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋“ค์–ด๊ฐ€ ์žˆ๋Š” argc ๋Š” ๋ช…๋ น ์ธ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ์˜๋ฏธํ•˜๊ณ  argv๋Š” ์ธ์ž์˜ ๋ฒกํ„ฐ๋ฅผ ์˜๋ฏธํ•˜๋Š”๋ฐ, ์ธ..