Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3029902
  • 博文数量: 181
  • 博客积分: 9990
  • 博客等级: 中将
  • 技术积分: 1865
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-23 09:43
文章分类

全部博文(181)

文章存档

2011年(40)

2010年(17)

2009年(87)

2008年(37)

我的朋友

分类: 网络与安全

2009-03-06 14:07:10

现在有很多防注入程序屏蔽了 and、1=1、1=2 类似这样的关键字,使用这样的方法有时不能探测到注入点了。


那么是否有新的方法能够探测注入点呢? 经过一段时间的研究,发现了更好的方法。哈哈,特此共享一下。


现在假设有一个新闻页面,URL 是






1. 在浏览器中打开,可以看到一个正常的新闻页面;
2. 在URL地址后面加上-1,URL变成:


-1
如果返回的页面和前面不同,是另一则新闻,则表示有注入漏洞,是数字型的注入漏洞;在 URL地址后面加上 -0,URL变成


-0
返回的页面和前面的页面相同,加上-1,返回错误页面,则也表示存在注入漏洞,是数字型的。

否则:

3. 在URL的地址后面加上'%2B',URL地址变为:


'%2B'
返回的页面和1同;加上'2%2B'asdf,URL地址变为:
'%2Basdf
返回的页面和1不同,或者说未发现该条记录,或者错误,则表示存在注入点,是文本型的。


为什么这样可以呢?

我们可以从程序的角度来考虑一下。程序员的这条语句大致应该是这样的:

select * from news where id=123

当我们在后面加上 -1 后,语句变为

select * from news where id=123-1

SQL服务器在执行这条语句时会进行运算,实际执行的是:

select * from news where id=122

这样选出来的就是另外一条新闻记录了。如果该记录存在,就是另一则新闻;否则会显示记录不存在,或者出错。呵呵。 这也同时表示程序未对输入的数据进行过滤,存在数值型的注入漏洞。

如果 SQL 语句时这样的:

select * from news where id='123'

那么我们在后面加上 '%2B' 之后,语句变为

select * from news where id='123'+''

%2B 是 + 的URL编码。 这样之后,SQL服务器实际执行的是:

select * from news where id='123'

会返回同样的页面。

加上 '%2B'asdf 之后,语句变为

select * from news where id='123'+'asdf'

实际执行的是:

select * from news where id='123asdf'

返回页面不存在,或者显错。 这就表示有文本型的注入漏洞
阅读(634) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-03-31 18:17:32

如何利用呢/? 现在都过滤了那些关键字... 谢谢指教.希望得到你EMAIL... 或者MAILTO 11019412@qq.com 一封...谢谢.