๋ฐ์ํ
๋ฌธ์ ํด์
error based sql injection ๋ฌธ์ ์ ๋ฌ๋ผ์ง ์ ์ค์ด ํฌ๊ฒ ๋๊ฐ์ง ๋ณด์๋ค.
- keywords์ ์๋ ๋ฌธ์์ด์ ํฌํจํ๋ ๊ฒฝ์ฐ, SQL ๋ฌธ์ด ์คํ๋์ง ์๋๋ค.
keywords = ['union', 'select', 'from', 'and', 'or', 'admin', ' ', '*', '/']
def check_WAF(data):
for keyword in keywords:
if keyword in data:
return True
return False
- ๋ ์ด์ ์๋ฌ๋ฌธ์ ์ถ๋ ฅํ์ง ์๋๋ค.
uid = request.args.get('uid')
if uid:
if check_WAF(uid):
return 'your request has been blocked by WAF.'
cur = mysql.connection.cursor()
cur.execute(f"SELECT * FROM user WHERE uid='{uid}';")
result = cur.fetchone()
if result:
return template.format(uid=uid, result=result[1])
else:
return template.format(uid=uid, result='')
else:
return template
ํ์ด๋ฐฉ๋ฒ
- keywords๋ฅผ ๋ณด๋ฉด, ๋๋ฌธ์๋ WAF์ ์กํ์ง ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค. SQL์์๋ ์๋๋ฌธ์๋ฅผ ๊ตฌ๋ณํ์ง ์๋๋ค.
- ๋์ด์ฐ๊ธฐ๋ ํญ์ผ๋ก ๋์ฒดํด์ ๋ณด๋ผ ์ ์๋ค.
- UNION์ ์ฌ์ฉํด์ admin์ upw๋ฅผ ์ถ๋ ฅํ๋๋ก ํ๋ค. ** UNION ์ฌ์ฉ ์ ์์ ์ฌ์ฉ๋๋ SELECT ๋ฌธ๊ณผ column ์๊ฐ ๋์ผํ๊ฒ ์ถ๋ ฅ ๋์ด์ผ ํ๋ค. null, upw, null์ ์ฌ์ฉํ๋ ์ด์ ์ด๋ค.
' UNION SELECT null,upw,null FROM user WHERE uid='Admin';#
๋ฐ์ํ
'๐ดโโ ๏ธ CTF ๐ดโโ ๏ธ > โ๏ธ ์น โ๏ธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Dream Hack - Web] error based sql injection (0) | 2024.08.13 |
---|---|
[Dream Hack - Web] csrf-2 (0) | 2024.08.07 |
[Dream Hack - Web] csrf-1 (0) | 2024.08.07 |
[Dream Hack - Web] xss-2 (0) | 2024.08.02 |
[Dream Hack - Web] xss-1 (0) | 2024.08.02 |