扫描器篇(二)之python编写sql注入漏洞探测器

sql注入介绍什么是sql注入用户输入内容拼接到sql语句中,并执行Sql注入危害榨取数据执行系统命令向数据库插入代码绕过验证登录工具参数获取工具思路验证sql注入是否存在基于错误base_errorYou have an error in SQL syntax;获取测试url,对指定参数进行模糊测试FUZZ工具参数设置测试...
摘要由CSDN通过智能技术生成
  • sql注入介绍

    • 什么是sql注入
      • 用户输入内容拼接到sql语句中,并执行
    • Sql注入危害
      • 榨取数据
      • 执行系统命令
      • 向数据库插入代码
      • 绕过验证登录

工具参数获取

  • 工具思路
    • 验证sql注入是否存在
    • 基于错误base_error
    • You have an error in SQL syntax;
    • 获取测试url,对指定参数进行模糊测试FUZZ
  • 工具参数设置
    • 测试url -u
    • 测试FUZZ文件 -i

参数获取代码编写

parser = optparse.OptionParser()
parser.usage="sqlinjector.py -u url -i inject_fuzz.txt"
parser.add_option("-u",'--url',dest='url',help='url to test sql',action='store',type='string',metavar='URL')
parser.add_option('-i','--inject',dest='inject_file',help="fuzz fliename",action='store',type='string',metavar='FUZZFILE')
(options,args) = parser.parse_args()

url = options.url
fuzz_file = options.inject_file

Sql注入测试

  • 原理
    •   根据是否具有特定字符,
        you have an error in your SQL syntax实现
      
    •   发送请求对每一个url进行拼接,
        得到响应字符串,查看是否具有SQL syntax 
      
def get_urls():
    urls = []
    with open(fuzz_file,'r')as f:
        payload_list = f.readlines()    #每一项之后都有一个\n需要使用strip()去除
        for payload in payload_list:
            temp_url = url       #生成一个新的url,避免拼接内容后就
            payload = payload.strip()
            urls.append(temp_url.replace("FUZZ",payload)) #replace拼接内容,将前者替换为后者
        return urls


inject_urls = get_urls()
result_list = []    # 存储sql注入验证成功的url列表
is_injectable = []


def test_sql():
    print("testing url:")
    for item in inject_urls:
        r = requests.get(url=item)
        print(r.url)
        result = r.text
        if result.find("SQL syntax") != -1: #判断返回结果是否存在SQL syntax
            is_injectable.append(True)
            result_list.append(r.url)


test_sql()
if len(result_list) == 0:
    print("no sql inject")
else:
    print("*"*50)
    print("exist sql inject")
    for item in result_list:
        print(item)
print("*"*50)

探测表字段数

  • 利用sql注入
    • 获取当前注入点,对应数据表的字段数
  • 定义
    • def delect_columns_num():
    • 探测当前字段数/列数

                
  • 5
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值