▣ 구현(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 |