我们的提供商注意到我们有关以下请求的信息:
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; rv:34.0) Gecko / 20100101 Firefox / 34.0“
由于我从字面上什么都不懂,因此不知道如何检查它是否做了某些事情:此sql注入尝试执行什么操作以及如何检查它是否有效?
答案 0 :(得分:1)
谈论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输入作为第一个参数。
除非整个操作背后有魔术,否则此查询无权工作。