面试中碰到的坑系列之注入(3)

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(); 这个函数,所有没有报错。

原文发布于微信公众号 - 晨星先生(MoXuanIT)

原文发表时间:2016-11-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术小站

搞定python多线程和多进程

线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条...

1021
来自专栏繁花云

Apache默认编码修改

但是PHP文件一运行就闷逼了,显示出来的文字都是乱码,但是源码那么多,一个个改是不可能了。

1130
来自专栏编码小白

activiti学习笔记(三) 监听生命周期

activiti监听生命周期 activiti生命周期的作用 生命周期的作用是在构建processEngine实例时候或者关闭的时候调用对应处理方法,比如我在启...

4246
来自专栏xingoo, 一个梦想做发明家的程序员

Java程序员的日常——经验贴(纯干货)

工作当中遇到的事情比较杂,因此涉及的知识点也很多。这里暂且记录一下,今天遇到的知识点,纯干货~ 关于文件的解压和压缩 如果你的系统不支持tar -z命令 ...

21210
来自专栏Python中文社区

Python爬虫核心模块urllib的学习

因为在玩Python challenge的时候,有用过这个模块,而且学习这个模块之后也对系统学习网络爬虫有用。 当时查了各种资料...

2385
来自专栏JetpropelledSnake

SNMP学习笔记之Python的netsnmp和pysnmp的性能对比

用python获取snmp信息有多个现成的库可以使用,其中比较常用的是netsnmp和pysnmp两个库。网上有较多的关于两个库的例子。

3042
来自专栏逆向技术

win32进程概念之句柄表,以及内核对象.

我们知道.我们使用CreateProcess 的时候会返回一个进程句柄.以及线程句柄. 其实在调用CreateProcess的时候.内核中会新建一个EPROCE...

912
来自专栏数据之美

论 Python 装饰器控制函数 Timeout 的正确姿势

1、问题背景 之前在这篇《Python RPC 远程调用脚本之 RPyC 实践》中实现过一个小 Demo,通过 RPyC 可以实现一个简单的分布式程序,但是,有...

3.1K10
来自专栏分布式系统进阶

Kafka源码分析-配置文件

作为Class KafkaConfig的伴生类,定义了创建KafkaConfig对象的工厂方法:

861
来自专栏技术之路

翻译qmake文档(三) Creating Project Files

原英文文档:http://qt-project.org/doc/qt-5/qmake-project-files.html 创建项目文件      项目文件...

2006

扫码关注云+社区

领取腾讯云代金券