题目地址:http://ctf5.shiyanbar.com/indirection/

打开后给了源码

<?php
// code by SEC@USTC echo '<html><head><meta http-equiv="charset" content="gbk"></head><body>'; $URL = $_SERVER['REQUEST_URI'];
//echo 'URL: '.$URL.'<br/>';
$flag = "CTF{???}"; $code = str_replace($flag, 'CTF{???}', file_get_contents('./index.php'));
$stop = 0; //这道题目本身也有教学的目的
//第一,我们可以构造 /indirection/a/../ /indirection/./ 等等这一类的
//所以,第一个要求就是不得出现 ./
if($flag && strpos($URL, './') !== FALSE){ $flag = ""; $stop = 1;        //Pass
} //第二,我们可以构造 \ 来代替被过滤的 /
//所以,第二个要求就是不得出现 ../
if($flag && strpos($URL, '\\') !== FALSE){ $flag = ""; $stop = 2;        //Pass
} //第三,有的系统大小写通用,例如 indirectioN/
//你也可以用?和#等等的字符绕过,这需要统一解决
//所以,第三个要求对可以用的字符做了限制,a-z / 和 .
$matches = array();
preg_match('/^([0-9a-z\/.]+)$/', $URL, $matches);
if($flag && empty($matches) || $matches[1] != $URL){ $flag = ""; $stop = 3;        //Pass
} //第四,多个 / 也是可以的
//所以,第四个要求是不得出现 //
if($flag && strpos($URL, '//') !== FALSE){ $flag = ""; $stop = 4;        //Pass
} //第五,显然加上index.php或者减去index.php都是可以的
//所以我们下一个要求就是必须包含/index.php,并且以此结尾
if($flag && substr($URL, -10) !== '/index.php'){ $flag = ""; $stop = 5;        //Not Pass
} //第六,我们知道在index.php后面加.也是可以的
//所以我们禁止p后面出现.这个符号
if($flag && strpos($URL, 'p.') !== FALSE){ $flag = ""; $stop = 6;        //Not Pass
} //第七,现在是最关键的时刻
//你的$URL必须与/indirection/index.php有所不同
if($flag && $URL == '/indirection/index.php'){ $flag = ""; $stop = 7;        //Not Pass
}
if(!$stop) $stop = 8; echo 'Flag: '.$flag;
echo '<hr />';
for($i = 1; $i < $stop; $i++) $code = str_replace('//Pass '.$i, '//Pass', $code);
for(; $i < 8; $i++) $code = str_replace('//Pass '.$i, '//Not Pass', $code); echo highlight_string($code, TRUE); echo '</body></html>';

简单分析:

分7个步骤判断URL是否满足条件,如果不满足就把$flag弄掉,当你不满足条件就会看到Not Pass。
如果是正常访问,$URL = $_SERVER['REQUEST_URI']; 这里$URL一般会得到/indirection/或者/indirection/index.php
需要满足不能出现./、\、大写或者其他符号、//、p.,而且要求末尾是/index.php,这6个步骤对于/indirection/index.php都可以满足,但是最后一条又告知不能等于/indirection/index.php

这种其实就是伪静态技术(pseudo-static),又名URL重写(URL rewriting)。举个最简单的应用,例如你原本想弄的是index.php?id=123,但你想隐藏其真实的文件路径,你通过URL重写技术,可以达到访问test/123.html而实际上在访问index.php?id=123

这题的关键在于伪静态,比如url中含有xxxx.php/xx/x,那么.php后的xx就会被当成参数名,x会被当成参数

所以这里的payload可以这么构造:http://ctf5.shiyanbar.com/indirection/index.php/x/index.php

转载于:https://www.cnblogs.com/-qing-/p/11077437.html

实验吧之【拐弯抹角】(url伪静态)相关推荐

  1. 实验吧_拐弯抹角(url伪静态)Forms

    拐弯抹角 先贴代码 1 <?php 2 // code by SEC@USTC 3 4 echo '<html><head><meta http-equiv=&qu ...

  2. #实验吧整理#拐弯抹角小结

    题目地址:实验吧:拐弯抹角 知识点 伪静态:参考资料 关于绕过构造: 构造 /indirection/a/-/ /indirection/./ 构造 \ 来代替被过滤的 / 有的系统大小写通用,可以尝 ...

  3. ThinkPHP下隐藏index.php以及URL伪静态

    第一种方法: 设置url的重写模式(默认模式是1) 'URL_MODEL' => 2, // URL访问模式,可选参数0.1.2.3,代表以下四种模式: 第二种方法:  使用Apache来进行设 ...

  4. TP3.2设置URL伪静态满足更好的SEO效果

    URL伪静态通常是为了满足更好的SEO效果,ThinkPHP支持伪静态URL设置,可以通过设置URL_HTML_SUFFIX参数随意在URL的最后增加你想要的静态后缀,而不会影响当前操作的正常执行. ...

  5. Struts2实现URL伪静态

    Struts2.ssh实现url伪静态步骤: 依赖jar:urlrewrite-3.2.0.jar 第一步:在WEB-INF下新建urlrewrite.xml文件 第二步:配置web.xml文件,注意 ...

  6. SEO之基于thinkphp的URL伪静态

    最近基于thinkphp开发了个导购网站,现在有时间,将遇到的伪静态问题整理下,与大家分享. 1.设置URL伪静态 在config.ini.php中设置,如果只想前台URL伪静态,那么只在前台的con ...

  7. phpcms wap端和pc端 url伪静态

    下载地址:   https://download.csdn.net/download/qq_39161501/12320196 linux服务器下使用.htaccess.windows服务器下使用we ...

  8. YII 开启URL伪静态方法(yii中urlManager匹配和注意点)

    Yii高性能PHP框架 Yii Framework是一个基于组件.用于开发大型 Web 应用的高性能 PHP 框架.Yii提供了今日Web 2.0应用开发所需要的几乎一切功能.Yii是最有效率的PHP ...

  9. iis搭建php出现301,IIS下万能301跳转方法:URL伪静态重写+PHP301

    核心提示:大家也通常会在不同情况下有不同的301重定向需求,如要将不带www的域名301到带www的域名.将闲置老域名301到主域名.将原放在子目录下的论坛301到新的bbs二级域名.更换域名将某域名 ...

最新文章

  1. 调试H3C MSR 20-20 PPPOE拨号
  2. JQUERY的父,子,兄弟节点查找方法
  3. Qt 原理-MOC(3) 对象模型
  4. 处理时间_6_SQL Server常见的时间格式转换
  5. CoreAnimation编程指南(七)图层Action
  6. 网络与并行计算机,并行计算机系统结构网络版 白中英,杨旭东编著.pdf
  7. 机器学习中树模型算法总结之 决策树(下)
  8. MySQL---主从复制
  9. php九九乘法表带表格,九九乘法表打印(js打印九九乘法表用表格显示)
  10. Kali linux安装拼音、双拼、五笔拼音输入法:fcitx-table-wbpy中文输入法步骤详解
  11. pipeline离线安装
  12. 分布式事务--TX-LCN(介绍)
  13. 18北大考研经验贴汇总
  14. BBEdit 12.6.3 FIXED 特别版 Mac 强大的文本和HTML编辑器及汉化工具
  15. 手机的发展史,手机未来的发展趋势
  16. 如何针对数据中心进行安全疏散和消防应急管理
  17. Android 7.0新特性——依然范特西
  18. 解决远古VOD注入漏洞
  19. 计算机网络要点归纳(一文带你快速掌握网络知识)
  20. 计算机等级一考通2021,驾校驾考一点通2021最新版电脑版

热门文章

  1. [转]关于openstack的一些废话(非技术)
  2. 读完《人类简史》的感受
  3. 亲测好用的系统维护工具:System Toolkit for Mac中文版
  4. u盘安装LINUX键盘失灵,U盘启动键盘失灵怎么办?u盘启动键盘无法选择PE处理方法...
  5. STM32F0 使用ST-LINK实现对外部Flash芯片的烧录
  6. linux定时备份网站发布目录,Linux 定时备份网站文件至七牛云存储 | 厘米天空
  7. 分布式消息队列RocketMQ工作原理与应用(一)
  8. 双电阻差分电流采样_模拟电路-差分放大电路
  9. 修改readonly属性的值
  10. 盘点一些惊世骇俗的壁纸网站!多年珍藏干货!