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) ์ด๋ฐ ์์ผ๋ก ํจ๋ฉ์ ์ฑ์ด์ฑ๋ก ๊ณ์ฐ๋๋ค๋ ์๋ฆฌ์ด๋ค.
'๐ด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 |