热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

寻找搜索型注入点和搜索型注入漏洞注入方法

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

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

..................
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显示了http://www.baidu.com/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,再交给工具进行注入就行了,下面我就用http://hr.wtojob.com(世贸人才网)和http://www.sdrs.gov.cn/(山东人事信息网),这两个网站分别来讲讲两种方法的步骤:

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


推荐阅读
  • 本文介绍了互联网思维中的三个段子,涵盖了餐饮行业、淘品牌和创业企业的案例。通过这些案例,探讨了互联网思维的九大分类和十九条法则。其中包括雕爷牛腩餐厅的成功经验,三只松鼠淘品牌的包装策略以及一家创业企业的销售额增长情况。这些案例展示了互联网思维在不同领域的应用和成功之道。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 延迟注入工具(python)的SQL脚本
    本文介绍了一个延迟注入工具(python)的SQL脚本,包括使用urllib2、time、socket、threading、requests等模块实现延迟注入的方法。该工具可以通过构造特定的URL来进行注入测试,并通过延迟时间来判断注入是否成功。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • 本文介绍了一个免费的asp.net控件,该控件具备数据显示、录入、更新、删除等功能。它比datagrid更易用、更实用,同时具备多种功能,例如属性设置、数据排序、字段类型格式化显示、密码字段支持、图像字段上传和生成缩略图等。此外,它还提供了数据验证、日期选择器、数字选择器等功能,以及防止注入攻击、非本页提交和自动分页技术等安全性和性能优化功能。最后,该控件还支持字段值合计和数据导出功能。总之,该控件功能强大且免费,适用于asp.net开发。 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • Python字典推导式及循环列表生成字典方法
    本文介绍了Python中使用字典推导式和循环列表生成字典的方法,包括通过循环列表生成相应的字典,并给出了执行结果。详细讲解了代码实现过程。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 本文详细介绍了Mybatis中#与$的区别及其作用。#{}可以防止sql注入,拼装sql时会自动添加单引号,适用于单个简单类型的形参。${}则将拿到的值直接拼装进sql,可能会产生sql注入问题,需要手动添加单引号,适用于动态传入表名或字段名。#{}可以实现preparedStatement向占位符中设置值,自动进行类型转换,有效防止sql注入,提高系统安全性。 ... [详细]
  • 本文介绍了在go语言中利用(*interface{})(nil)传递参数类型的原理及应用。通过分析Martini框架中的injector类型的声明,解释了values映射表的作用以及parent Injector的含义。同时,讨论了该技术在实际开发中的应用场景。 ... [详细]
author-avatar
你永远不冫会懂我的心O_751
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有