๐Ÿ’ญ Minji's Archive

[Webhacking.kr] old-39

October 23, 2025

$_POST[โ€˜idโ€™] = str_replace(โ€œ\โ€,โ€โ€,$_POST[โ€˜idโ€™]); $_POST[โ€˜idโ€™] = str_replace(โ€œโ€™โ€,โ€โ€™โ€™โ€,$_POST[โ€˜idโ€™]); $_POST[โ€˜idโ€™] = substr($_POST[โ€˜idโ€™],0,15); ์ด ๋ถ€๋ถ„์„ ์‚ดํŽด๋ณด๋ฉด, ๋ฐฑ์Šฌ๋ž˜์‹œ๋ฅผ ์—†์• ๊ณ  โ€˜๋ฅผ โ€˜โ€™, ์ฆ‰ ์ž‘์€ ๋”ฐ์˜ดํ‘œ๊ฐ€ ์žˆ์œผ๋ฉด ๋‘ ๊ฐœ๋กœ ๋ฐ”๊ฟ”์ค€ ๋’ค 15๊ธ€์ž๋กœ ์ž˜๋ผ๋‚ธ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ฃผ์–ด์ง„ SQL๋ฌธ select 1 from member where length(id)<14 and id=โ€™{$_POST[โ€˜idโ€™]} ์ž˜ ์‚ดํŽด๋ณด๋ฉด id=โ€™ ์—ฌ๊ธฐ ๋งˆ์ง€๋ง‰์— ์ž‘์€ ๋”ฐ์˜ดํ‘œ๊ฐ€ ๋น ์ ธ์žˆ๋‹ค. ๊ทธ๋Ÿผ โ€˜๋กœ ์‹œ์ž‘ํ•˜๋Š” SQL๋ฌธ์„ ์ž…๋ ฅํ•ด SQL Injection์„ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์„ฑ๊ณต ์กฐ๊ฑด์ธ $result[0] == 1์ด ๋ ๋ ค๋ฉด DB์— length(id)<14์ธ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์กด์žฌํ•ด์•ผ ํ•˜๊ณ , ๊ทธ ๋ ˆ์ฝ”๋“œ์˜ id์™€ ์ž…๋ ฅ๊ฐ’์ด ์ผ์น˜ํ•ด์•ผ ํ•œ๋‹ค. admin์„ ์ž…๋ ฅํ•ด ๋ณด๋Š” ๊ฒŒ ๊ตญ๋ฃฐ์ธ๋ฐ, ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด์„œ ์ž…๋ ฅํ•ด์•ผ ํ•œ๋‹ค. ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์‚ฌ์ „์ง€์‹์€ mysql์—์„œ๋Š” ๋ฌธ์ž์—ด ๋น„๊ต๋ฅผ ํ•  ๋•Œ ๋์— ๊ณต๋ฐฑ์ด ์ถ”๊ฐ€๋กœ ๋ถ™์–ด๋„ ๊ฐ™์€ ๋ฌธ์ž๋กœ ์ธ์‹ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿผ admin____โ€™ (_๋Š” ๊ณต๋ฐฑ์„ ๋‚˜ํƒ€๋ƒ„) ์ด๋ ‡๊ฒŒ ์ž…๋ ฅํ•˜๋ฉด ๋”ฐ์˜ดํ‘œ๊ฐ€ ๋ณ€ํ™˜๋˜์–ด admin____โ€™โ€™ ์ด๋ ‡๊ฒŒ ์ž…๋ ฅ์ด ๋  ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿผ ์ „์ฒด SQL๋ฌธ์€ select 1 from member where length(id)<14 and id=โ€™admin โ€˜โ€™โ€™ MYSQL์€ id=โ€™adminโ€™โ€™โ€™, โ€˜admin โ€˜ + โ€˜โ€™ ์ด๋ผ๊ณ  ํ•ด์„ํ•˜๊ฒŒ ๋œ๋‹ค.

๊ฝค ์–ด๋ ค์› ์Œ.