特定sql注入的说明

Rus*_*ias 8 sql security

浏览网络中较为可疑的部分,我碰巧遇到了这个特殊的SQL注入:

http://server/path/page.php?id=1+union+select+0,1,concat_ws(user(),0x3a,database(),0x3a,version()),3,4,5,6--

当我读到这篇文章时,我对SQL的了解 - 我认为它是一半体面的 - 似乎非常有限.

自从我为网络广泛开发以来,我很想知道这段代码实际上做了什么,更重要的它是如何工作的.

Qua*_*noi 8

它取代了不正确编写的参数化查询,如下所示:

$sql = '
SELECT  *
FROM    products
WHERE   id = ' . $_GET['id'];
Run Code Online (Sandbox Code Playgroud)

使用此查询:

SELECT  *
FROM    products
WHERE   id = 1
UNION ALL
select 0,1,concat_ws(user(),0x3A,database(),0x3A,version()),3,4,5,6
Run Code Online (Sandbox Code Playgroud)

,它为您提供有关所连接的数据库名称,版本和用户名的信息.

  • 只需注意:0x3A是十六进制的冒号(:) (2认同)