所以基本上,在我的PHPMYADMIN中,我正在玩SQL注入,这样我最终可以成为笔式测试器
SELECT *
FROM `ip` as ipstr
WHERE 'id' = $USERINPUT_HERE
ORDER BY
ipstr.id ASC
LIMIT 0 , 30
我遇到了困难,因为它说当我尝试将它注入我的phpmyadmin时,不再定义'ipstr'。
我知道如果它是一个子查询,我就能做到这一点。但它不是子查询,那么我怎样才能做出类似下面的工作呢?
SELECT *
FROM `ip` as ipstr
WHERE 'id' = $USERINPUT_HERE
UNION ALL SELECT 1,2,3,4,5
ORDER BY
ipstr.id ASC
LIMIT 0 , 30
我认识的人说可以进行这种注入,但我无法弄清楚如何在不重写整个查询和使用子查询的情况下执行此操作。谢谢。
答案 0 :(得分:1)
我们来看看。如果字符串包含''; delete ip; select * from (select 1 as id) ipstr
,则代码可能会执行您不期望的操作。 (说实话,整个语句可能会被拒绝,因为它是多个语句,但这只是一个例子。)
SQL注入的解决方案是使用参数化查询。这不是一个难以理解的概念。这是一个好习惯。你应该养成这种习惯。