๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • Tried. Failed. Logged.
๐ŸดCTF/webhacking.kr

webhacking.kr - old-39

by Janger 2023. 5. 31.
728x90

 

view_source ๊ฒฐ๊ณผ

 

 

 

sqli ๋ฐฉ์ง€์ฑ… 1

$_POST['id'] = str_replace("\\","",$_POST['id']);

์—ด์Šฌ๋ž˜์‰ฌ ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ๋งŒ์•ฝ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด

'abc\''์ฒ˜๋Ÿผ ๋”ฐ์˜ดํ‘œ๋ฅผ ๋‹ซ์•„ ์šฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•ด์งˆ ๊ฒƒ์ด๋‹ค. 

 

sqli ๋ฐฉ์ง€์ฑ… 2

$_POST['id'] = str_replace("'","''",$_POST['id']);

๋”ฐ์˜ดํ‘œ (')๋ฅผ ์ž…๋ ฅํ•  ์‹œ ๋”ฐ์˜ดํ‘œ๊ฐ€ ๋‘ ๊ฐœ๊ฐ€ ('') ์จ์ง„๋‹ค. 

 

$result mysqli_fetch_array(mysqli_query($db,"select 1 from member where length(id)<14 and id='{$_POST['id']}"));

๋ฐ‘์— ์ ํžŒ sql๋ฌธ์„ ๋ณด๋ฉด ๋”ฐ์˜ดํ‘œ๋กœ ์‹œ์ž‘์ด ๋์ง€๋งŒ ๋‹ซํžˆ์ง€ ์•Š๊ณ  ์žˆ์–ด(id=') ๋ฌธ๋ฒ•์— ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธด๋‹ค. 

 

 

sqli ๋ฐฉ์ง€์ฑ… 3

$_POST['id'] = substr($_POST['id'],0,15);

์ž…๋ ฅํ•œ ๋ฌธ์ž๋Š” 15 ์ดํ•˜ ๋ฐ–์— ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋ฉฐ ์ดˆ๊ณผ ์‹œ ๋ฌธ์ž์—ด์ด ์ž˜๋ฆฌ๊ฒŒ ๋œ๋‹ค. 

 

 

 

 

ํ•ด๋‹ต

substr($_POST['id'],0,15)๋ฅผ ์ด์šฉํ•˜์—ฌ (sqli ๋ฐฉ์ง€์ฑ… 2)๋ฅผ ์šฐํšŒํ•ด ๋”ฐ์˜ดํ‘œ๋ฅผ ๋‹ซ์•„์ฃผ์ž. 

 

์˜ˆ์‹œ)

$_POST['id'] = 12345678901234'

12345678901234' ์ž…๋ ฅ ์‹œ 12345678901234''๋กœ ์ „ํ™˜์ด ๋˜์ง€๋งŒ substr์— ์˜ํ•ด 12345678901234'๊ฐ€ ๋œ๋‹ค. 

 

 

๊ทธ๋ฆฌ๊ณ  ๋‘ ๋ฒˆ์งธ ๋ฌธ์ œ๋Š” member ํ…Œ์ด๋ธ”์— ์กด์žฌํ•˜๋Š” id ์ฐพ๊ธฐ์ด๋‹ค. 

select 1 from member where length(id)<14 and id='{$_POST['id']}

์‚ฌ์šฉ์ž๋Š” ์–ด์ฉ” ์ˆ˜ ์—†์ด ๋”ฐ์˜ดํ‘œ๋ฅผ 15๋ฒˆ์งธ์— ์จ์คŒ์œผ๋กœ ๋”ฐ์˜ดํ‘œ๋ฅผ ๋‹ซ์•„์ค„ ์ˆ˜ ์žˆ์ง€๋งŒ 1๋ถ€ํ„ฐ 14๊ธ€์ž๋ฅผ ์–ด๋–ค ๋ฌธ์ž๋กœ ์ฑ„์›Œ์•ผ ํ•˜๋Š”์ง€ ์˜๋ฌธ์ด ๋“ ๋‹ค. (member์—๋Š” ๊ทธ๋งŒํผ ๊ธด ์ด๋ฆ„์ด ์žˆ์„์ง€ ์—†์„์ง€ ๋ชจ๋ฅด๋‹ˆ๊น...) 

 

14๊ธ€์ž๋งŒํผ ํ•˜๋‚˜ํ•˜๋‚˜์”ฉ ๋Œ€์ž…์„ ํ•˜๋ฉด ๋งค์šฐ ๊ธด ์‹œ๊ฐ„์ด ์†Œ์š”๋˜๋‹ˆ๊น ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„์•ผ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. 

 

๊ฒฐ๊ตญ ์ฐพ์€ ๋ฐฉ๋ฒ•์€ admin(๊ณต๋ฐฑ*9)์œผ๋กœ ์ฑ„์šฐ๋Š” ๊ฒƒ์ด๋‹ค. 

์ฆ‰ ์ž…๋ ฅ์„ admin         ' <- ์ด๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ

 

 

ํ•ด๋‹ต ์›๋ฆฌ

 

์•„์ด๋Ÿฌ๋‹ˆํ•˜๊ฒŒ๋„ ์˜ˆ์‹œ๋กœ VARCHAR(15) ํƒ€์ž…์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ปฌ๋Ÿผ์ผ ๊ฒฝ์šฐ admin์ด๋ผ๋Š” 5๊ธ€์ž ๋‚ด์šฉ์ด ์ €์žฅ๋˜๋ฉด ๋‚˜๋จธ์ง€ 10๊ธ€์ž๋Š” ๊ณต๋ฐฑ์œผ๋กœ ์ฑ„์›Œ์ง„ ์ƒํƒœ๋กœ ์ €์žฅ๋œ๋‹ค ํ•จ. 

(http://woowabros.github.io/study/2018/02/26/mysql-char-comparison.html)

 

๊ทธ๋ž˜์„œ ๋ฌธ์ž๋ผ๋ฆฌ ์„œ๋กœ ๊ณ„์‚ฐํ•  ๋•Œ VARCHAR(15)์ธ ๊ฒฝ์šฐ admin(๊ณต๋ฐฑ*9) = admin(๊ณต๋ฐฑ*9) ์ด๋Ÿฐ ์‹์œผ๋กœ ํŒจ๋”ฉ์„ ์ฑ„์šด์ฑ„๋กœ ๊ณ„์‚ฐ๋œ๋‹ค๋Š” ์†Œ๋ฆฌ์ด๋‹ค. 

 

admin๊ณผ admin(๊ณต๋ฐฑ)์ด ์„œ๋กœ ์ผ์น˜ํ•˜์—ฌ 1์„ ์ถœ๋ ฅ

 

admin๊ณผ (๊ณต๋ฐฑ)admin์€ ์„œ๋กœ ์ผ์น˜ํ•˜์ง€ ์•Š์•„ 1์„ ์ถœ๋ ฅํ•˜์ง€ ์•Š์Œ

 

 

728x90

'๐ŸดCTF > webhacking.kr' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

webhacking.kr - old-04(Challenge 4)  (1) 2023.02.15
webhacking.kr - old-20(Challenge 20)  (0) 2023.02.15
webhacking.kr - old-11(Challenge 11)  (0) 2023.02.15