我正在解决一个关于 SQL 注入的 TryHackMe 的房间。但我无法弄清楚我想到的一件事,在花了很多时间之后,我认为最好在这里问这个问题。在房间里有一台机器要部署,在部署机器后,它给了我一个接口(webapp),它接受我的输入,如下所示:
如果你给它一个像test的值。它返回以下输出:
当我看到它时,我认为这是一个简单的 SQLi 问题,所以我尝试了常见 dbms 的大多数基本 SQLi 有效负载,如下所示:
' ; sleep(1) --
' or 1=1 --
...
在那次失败之后,我运行了 sqlmap,它发现了 2 种类型的 SQLi 有效负载,其有效负载如下:
然后我意识到在基于时间的 SQLi 中,sqlmap 使用了||
. 然后我尝试发送'|| (select sleep(2)) --
. 它奏效了。现在我的问题是为什么我的第一个有效载荷('; select sleep(2) --)不起作用,但这个有效?