SQL如何注入?(45,120,49,45)

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (13)

我刚在我们的请求日志里看到了这个。他们想达到什么目的?

完整的请求字符串是:

properties?page=2side1111111111111 UNION SELECT CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45),CHAR(45,120,55,45,81,45),CHAR(45,120,56,45,81,45),CHAR(45,120,57,45,81,45),CHAR(45,120,49,48,45,81,45),CHAR(45,120,49,49,45,81,45),CHAR(45,120,49,50,45,81,45),CHAR(45,120,49,51,45,81,45),CHAR(45,120,49,52,45,81,45),CHAR(45,120,49,53,45,81,45),CHAR(45,120,49,54,45,81,45) -- /*

提问于
用户回答回答于

这只是注射的测试。如果攻击者能够在输出中看到xQs,那么他们就会知道注入是可能的。开发人员不应该关注任何注入机制、格式或意义--这些都与他无关。只要您的查询格式化正确,那么SQL注入就不可能了。关注您的查询,而不是SQL注入的方法。

用户回答回答于

Char()函数将每个值解释为整数,并根据这些整数的代码值返回一个基于给定字符的字符串。

SQL的Char()函数在下列情况下,addslashes()对于PHP,在SQL查询中用作预防措施。使用Char()移除注入查询中对引号的需要。

一些PHP代码易受SQL注入攻击的示例Char()将类似于以下内容:

$uname = addslashes( $_GET['id'] );
$query = 'SELECT username FROM users WHERE id = ' . $id;

addslashes()已经使用过,由于没有尾随引号,脚本无法正确清理输入。可以使用以下SQL注入字符串来加载/etc/passwd档案:

扫码关注云+社区