拐弯抹角
来源:互联网 发布:dem软件 编辑:程序博客网 时间:2024/04/29 07:13
http://www.shiyanbar.com/ctf/1846
拐弯抹角
如何欺骗服务器,才能拿到Flag?
格式:CTF{}
解题链接: http://ctf5.shiyanbar.com/10/indirection/
解:
mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
该函数返回一个字符串或者数组。该字符串或数组是将 subject 中全部的 search 都被 replace 替换之后的结果。
$code = str_replace($flag, 'CTF{???}', file_get_contents('./index.php'));所以从这句话就知道结果
在url后面添加/index.php
得到Flag: CTF{PSEDUO_STATIC_DO_YOU_KNOW}
拐弯抹角
如何欺骗服务器,才能拿到Flag?
格式:CTF{}
解题链接: http://ctf5.shiyanbar.com/10/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/./ µÈµÈÕâÒ»ÀàµÄ //ËùÒÔ£¬µÚÒ»¸öÒªÇó¾ÍÊDz»µÃ³öÏÖ ./ if($flag && strpos($URL, './') !== FALSE){ $flag = ""; $stop = 1; //Pass } //µÚ¶þ£¬ÎÒÃÇ¿ÉÒÔ¹¹Ôì \ À´´úÌæ±»¹ýÂ赀 / //ËùÒÔ£¬µÚ¶þ¸öÒªÇó¾ÍÊDz»µÃ³öÏÖ ../ 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 } //µÚËÄ£¬¶à¸ö / Ò²ÊÇ¿ÉÒ﵀ //ËùÒÔ£¬µÚËĸöÒªÇóÊDz»µÃ³öÏÖ // if($flag && strpos($URL, '//') !== FALSE){ $flag = ""; $stop = 4; //Pass } //µÚÎ壬ÏÔÈ»¼ÓÉÏindex.php»òÕß¼õÈ¥index.php¶¼ÊÇ¿ÉÒ﵀ //ËùÒÔÎÒÃÇÏÂÒ»¸öÒªÇó¾ÍÊDZØÐë°üº¬/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>';
mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
该函数返回一个字符串或者数组。该字符串或数组是将 subject 中全部的 search 都被 replace 替换之后的结果。
$code = str_replace($flag, 'CTF{???}', file_get_contents('./index.php'));所以从这句话就知道结果
在url后面添加/index.php
得到Flag: CTF{PSEDUO_STATIC_DO_YOU_KNOW}
阅读全文
1 0
- 拐弯抹角
- 拐弯抹角WP
- 实验吧 web 拐弯抹角
- 实验吧WEB--拐弯抹角
- 李阳疯狂英语突破对话(40)-不要拐弯抹角
- nyoj 36 最长公共子序列 dp问题最长公共子序列 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共
- Reorder List leetcode java
- 2017.8.17 校内赛 解题报告 数论 【离散对数】【莫比乌斯反演】【莫比乌斯反演】
- java 反射 动态调用不同类的静态方法(推荐)
- hdu 2050 折线分割平面 简单
- 第十八天总结
- 拐弯抹角
- 迷enc
- Java笔记:接口
- 构造函数能不能是虚函数
- [POJ](1067)取石子游戏 ---威佐夫博弈(博弈)
- 牛客网算法课系列(一):字符串和二叉树打印问题
- Hdu 1004 (Let the Balloon Rise) 简单的map应用
- JSP转译成Servlet详细过程
- 系统性思维:问题分析与逻辑链