首页
社区
课程
招聘
[原创]全新的注入点检测方法
发表于: 2011-3-1 08:34 3097

[原创]全新的注入点检测方法

2011-3-1 08:34
3097
高手略过!!.....................................................................................................................................................................................................................
介绍下~
现在有很多防注入程序屏蔽了 and、1=1、1=2 类似这样的关键字,使用这样的方法有时不能探测到注入点了。
那么是否有新的方法能够探测注入点呢? 经过一段时间的研究,发现了更好的方法。哈哈,特此共享一下。
现在假设有一个新闻页面,URL 是 http://gzkb.goomoo.cn/news.asp?id=123,
1. 在浏览器中打开,可以看到一个正常的新闻页面;
2. 在URL地址后面加上-1,URL变成:http://gzkb.goomoo.cn/news.asp?id=123-1,如果返回的页面和前面不同, 是另一则新闻,则表示有注入漏洞,是数字型的注入漏洞;在 URL地址后面加上 -0,URL变成 http://gzkb.goomoo.cn/news.asp?id=123-0,返回的页面和前面的页面相同,加上-1,返回错误页面,则也表示存在 注入漏洞,是数字型的。
否则:
3. 在URL的地址后面加上'%2B',URL地址变为:http://gzkb.goomoo.cn/news.asp?id=123'%2B',返回的页 面和1同;加上'2%2B'asdf,URL地址变为:http://gzkb.goomoo.cn/news.asp?id=123'%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'
返回页面不存在,或者显错。 这就表示有文本型的注入漏洞。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (13)
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
可以介绍一下如何利用吗?也举个例子啊~!我不是很懂。谢谢。
2011-3-1 10:35
0
雪    币: 146
活跃值: (95)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
学习一下
2013-12-3 18:19
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
多谢 分享 MARK 一下
2014-2-6 11:46
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
能否给个实验的连接,谢谢/
2014-2-6 18:48
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
虽然不算新的方法,但楼主的分享值得肯定。
2014-2-9 20:41
0
雪    币: 211
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
。。。至少5年前的东西
2014-2-12 21:39
0
雪    币: 203
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
gut
8
我都是用参数,貌似你这方法不行吧。
2014-2-25 22:34
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
“select * from news where id=123-1
select * from news where id=122
这样选出来的就是另外一条新闻记录了。如果该记录存在,就是另一则新闻;否则会显示记录不存在,或者出错。呵呵。 这也同时表示程序未对输入的数据进行过滤,存在数值型的注入漏洞。”
如果服务器端对接受的收据进行了类型转换  一般是整型,那么就算 id=123-1运行了结果为122,但是这样也没有漏洞吧,楼主能否给个数值型的注入漏洞的例子?
2014-2-26 20:29
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
Mark一下,学习了
2014-2-28 19:13
0
雪    币: 21
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
学习一下!
2014-3-4 17:18
0
雪    币: 60
活跃值: (21)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
12
这个感觉 和 什么模式没有关系 关键要看 什么服务器 做黑盒测试 就是一个 尝试
2014-3-13 15:16
0
雪    币: 116
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
思路不错。。。第二条 有单引号
2014-3-22 04:26
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
虽然是比较久远的帖子,但是思路很新颖呢,让我获得了很多启发,谢谢楼主
2014-3-27 12:10
0
游客
登录 | 注册 方可回帖
返回
//