这个sql注入尝试做什么,我如何检查它是否有效?



我们的提供商注意到我们以下请求:

www.example.com 46.72.247.70 - - [04/Oct/2018:15:08:17 +0200] "获取/jp-ja/node/249%27%20or%20(1,2(=(select*from(select%20name_const(CHAR(71,65,81,75,112,108,70,121,116 ,110,105(,1(,name_const(CHAR(71,65,81,75,112,108,70,121,116,110,105(,1((a(%20--%20%27x%27=%27x HTTP/1.1" 200 6227 "-" "Mozilla/5.0 (Windows NT 6.0;房车:34.0( 壁虎/20100101火狐/34.0">

因为我真的什么都不懂,因此不知道如何检查它是否做了什么:这个sql注入尝试做什么,我如何检查它是否有效?

谈论SQL时唯一有趣的部分是中间的部分:

(select*from(select%20name_const(CHAR(71,65,81,75,112,108,70,121,116 ,110,105(,1(,

name_const(CHAR(71,65,81,75,112,108,70,121,116,110,105(,1((a(

用可读书写,看起来像:

SELECT * 
FROM(
SELECT NAME_CONST(CHAR(71,65,81,75,112,108,70,121,116,110,105),1),
NAME_CONST(CHAR(71,65,81,75,112,108,70,121,116,110,105),1)
) a

此查询的子查询设置两个常量字段,均名为 CHAR(71,65,81,75,112,108,70,121,116,110,105(,在应用 ASCII 后,它们将转换为"GAQKplFytni"并将它们设置为值 1。然后主查询只是从子查询中选取所有内容(因此它不会更改任何内容(。

在SQLFiddle上,它似乎不起作用,因为NAME_CONST需要STRING输入作为第一个参数。

除非整件事背后有一些魔力,否则这个查询是无权工作的。

最新更新