无法弄清楚有效载荷是如何工作的

Posted

技术标签:

【中文标题】无法弄清楚有效载荷是如何工作的【英文标题】:Couldn't figure out how the payload worked 【发布时间】:2022-01-19 20:52:47 【问题描述】:

我正在解决 TryHackMe 的一个房间关于 SQL 注入的问题。但我想不出一件事,在花了很多时间之后,我认为最好在这里问这个问题。在房间里有一台机器要部署,在部署机器后它给了我一个接口(webapp),它可以像这样接受我的输入:

如果你给它一个像 test 这样的值。它返回以下输出:

当我看到它时,我认为这是一个简单的 SQLi 问题,所以我尝试了常见的 dbms 的大多数基本 SQLi 有效负载,如下所示:

    ' ; sleep(1) -- ' or 1=1 -- ...

但他们都没有工作,并给我返回了这样的错误消息:

在那次失败之后,我运行 sqlmap,它发现了 2 种类型的 SQLi 有效负载,其有效负载如下:

然后我意识到在基于时间的 SQLi 中,sqlmap 使用了||。然后我尝试发送'|| (select sleep(2)) -- 。它奏效了。现在我的问题是为什么我的第一个有效负载(' ; select sleep(2) --)不起作用,但这个有效?

【问题讨论】:

可能是因为 mysql 无法处理标准的-- cmets,如果它们后面没有空格的话。尝试确保-- 之后有一个空格,或者使用 MySQL 特定的# 将行的其余部分标记为注释。 当我试图找到有效的有效载荷时,我尝试了这两种方法。但它们都不起作用。 【参考方案1】:

默认情况下,MySQL 查询接口不支持以分号分隔的多个查询。为此,应用程序必须在连接到数据库时显式请求启用此功能。有一个connect option。

因此,默认情况下,任何通过尝试在分号后附加恶意查询来工作的 SQL 注入都不起作用。

但是通过修改单个查询中的表达式来工作的 SQL 注入仍然可以工作。

【讨论】:

感谢您的信息,这就是我要找的!

以上是关于无法弄清楚有效载荷是如何工作的的主要内容,如果未能解决你的问题,请参考以下文章

使用 PcapDotNet,你如何提取最终的有效载荷?

当有效载荷长度大小大于 1000K 时,无法获得有效载荷响应。(Coap)

试图弄清楚如何从 jquery datepicker 中删除假期

无法弄清楚为什么我的部分复制命令有效,有些则不然

有效激励--

有效激励--