【发布时间】: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 特定的#将行的其余部分标记为注释。 -
当我试图找到有效的有效载荷时,我尝试了这两种方法。但它们都不起作用。
标签: mysql sql sql-injection ctf