▣ 구현(MySQL, Oracle 공통)
1) OptionParser
: 파이썬 인터프리트 시 실행인자로 옵션 값을 입력받도록 구현
: 입력받은 옵션 값을 라이브러리 함수의 인자타입에 맞게 변환
2) Code
import optparse;
import ast;
desc = "Blind SQL Injection Tool" # 해당 프로그램정보 기술
# optparse내 OptionParser메서드 호출 > parser변수 내 저장
parser = optparse.OptionParser(description=desc)
# parser객체의 add_option()메서드를 통해 상세속성 지정
parser.add_option("-u", "--url", dest="arg_url", default="", type="string", help="\"http://www.stgsecurity.co.kr/board/list.do\"")
parser.add_option("-x", "--fixedParam", dest="arg_fixedParam", default="", type="string", help="ex)\"name1=value1&name2=value2...\"")
parser.add_option("-p", "--payParam", dest="arg_payParam", default="", type="string", help="ex) \"name\"")
parser.add_option("-H", "--header", dest="arg_header", default="", type="string", help="ex)'host':'10.1.1.3:8080', 'cookie':'JSESSION=usersesson'...")
parser.add_option("-m", "--method", dest="arg_method", default="GET", type="string", help="ex) GET | POST")
parser.add_option("-o", "--frontStr", dest="arg_frontStr", default="", type="string", help="ex) \"id'\"")
parser.add_option("-f", "--flagString", dest="arg_flagStr", default="", type="string", help="ex) \"Success\"")
parser.add_option("-s", "--sql", dest="arg_sql", default="", type="string", help="ex) \"SELECT MEMBER_ID FROM USER\"")
parser.add_option("-r", "--row", dest="arg_row", default=1, type="int", help="ex) 1")
parser.add_option("-d", "--dbms", dest="arg_dbms", default="", type="string", help="ex) \"MYSQL | ORACLE\"")
# 옵션과 인자값들을 파싱
options, args = parser.parse_args()
# urllib.urlencode()의 인자 값은 딕셔너리 타입이어야 함.
# 이에 파라미터 형태의 문자열을 딕셔너리 형태로 변환
def param2dic(param) :
param = "{'" + param.replace("&", "','") + "'}"
param = param.replace('=', "':'")
param = ast.literal_eval(param) # str자료형을 dictionary자료형으로 변환
return param
# requests라이브러리를 통해 전송 시 헤더정보는 딕셔너리타입이어야 함.
# 헤더정보를 입력받아 dictionary형태로 변환
def header2dic(header):
header = "{" + header + "}"
header = ast.literal_eval(header)
return header
# 입력된 인자값들을 Dictionary형태로 저장
payload = {'method':options.arg_method, 'flagStr':options.arg_flagStr, 'frontStr':options.arg_frontStr,
'sql':options.arg_sql, 'row':options.arg_row, 'dbms':options.arg_dbms, 'url':options.arg_url,
'fixedParam':param2dic(options.arg_fixedParam), 'payParam':options.arg_payParam,
'header':header2dic(options.arg_header)}
'Python > Tools' 카테고리의 다른 글
| [Python-Tools] Blind SQL Injection Tool - 6 (구현) (0) | 2014.12.23 |
|---|---|
| [Python-Tools] Blind SQL Injection Tool - 5 (구현) (0) | 2014.12.23 |
| [Python-Tools] Blind SQL Injection Tool - 4 (구현) (0) | 2014.12.23 |
| [Python-Tools] Blind SQL Injection Tool - 3 (구현) (0) | 2014.12.23 |
| [Python-Tools] Blind SQL Injection Tool - 1 (서버구축) (0) | 2014.11.24 |