这个 sql 注入试图做什么,我如何检查它是否有效?
What does this sql injection try to do and how can I check if it worked?
我们的提供商注意到我们有以下请求:
www.example.com 46.72.247.70 - - [04/Oct/2018:15:08:17 +0200] "GET
/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; rv:34.0)
Gecko/20100101 Firefox/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 需要一个字符串输入作为第一个参数。
除非整个事情背后有某种魔法,否则此查询无权工作。
我们的提供商注意到我们有以下请求:
www.example.com 46.72.247.70 - - [04/Oct/2018:15:08:17 +0200] "GET /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; rv:34.0) Gecko/20100101 Firefox/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 需要一个字符串输入作为第一个参数。
除非整个事情背后有某种魔法,否则此查询无权工作。