有源码直接看源码了

<?php
include 'config.php'; // FLAG is defined in config.phpif (preg_match('/config\.php\/*$/i', $_SERVER['PHP_SELF'])) {exit("I don't know what you are thinking, but I won't let you read it :)");
}if (isset($_GET['source'])) {highlight_file(basename($_SERVER['PHP_SELF']));exit();
}$secret = bin2hex(random_bytes(64));
if (isset($_POST['guess'])) {$guess = (string) $_POST['guess'];if (hash_equals($secret, $guess)) {$message = 'Congratulations! The flag is: ' . FLAG;} else {$message = 'Wrong.';}
}
?>

源码审计

有关于$_SERVER[‘PHP_SELF’]。

(preg_match('/config\.php\/*$/i', $_SERVER['PHP_SELF']))

不能以config.php结尾
secret反正猜不着,

那么就要好好利用basename($_SERVER[‘PHP_SELF’])了
basename() 函数会返回路径中的文件名部分
假如路径是/index.php/config.php
basename后会返回config.php,就算后面跟上多余的字符也会返回文件名部分

在官方的英文描述中

With the default locale setting “C”, basename() drops non-ASCII-chars
at the beginning of a filename.

basename()函数会去掉文件名开头的非ASCII值
ASCII值范围为0-255,但ASCII码并没有规定编号为128~255的字符(大于%ff的会报错400 Bad Request)
ASCII表范围为0-127,也就是我们传入128(%80)以上的数值,即可绕过正则
除此以为根据题目提示我们读取flag还需要用到?source
跑一跑

 <?php
for ($i=80; $i < 255; $i++) {$filename='config.php/'.chr($i);if (!preg_match('/config\.php\/*$/i', $filename)){if(basename($filename)=='config.php'){echo dechex($i).'&nbsp;&nbsp;';}}
}

%5c是反斜杠,会报错剩下的80-ff随便带一个就行
Payload: /index.php/config.php/%81?source

buu-[Zer0pts2020]Can you guess it?相关推荐

  1. BUU CODE REVIEW 1

    目录 源码 思路 题解 总结 源码 <?php /*** Created by PhpStorm.* User: jinzhao* Date: 2019/10/6* Time: 8:04 PM* ...

  2. [Zer0pts2020]ROR

    [Zer0pts2020]ROR 题目 import random from secret import flagror = lambda x, l, b: (x >> l) | ((x ...

  3. BUU刷题记录——Misc(一)

    文章目录 前言: 1.九连环 2.面具下的flag 3.刷新过的图片 4.snake 5.[BJDCTF 2nd]圣火昭昭 前言: 最近学习之余在BUU上刷了几道misc题,有一些没接触过的知识,挺有 ...

  4. BUU OJ 做题记录

    buu oj题库的题质量很高,这里记录一下 1.WarmUp 代码审计 查看源码发现提示source.php和hint.php source.php <?phphighlight_file(__ ...

  5. [Zer0pts2020]Can you guess it?

    [Zer0pts2020]Can you guess it? 查看源码: <?php include 'config.php'; // FLAG is defined in config.php ...

  6. re -12 buuctf [Zer0pts2020]easy strcmp

    [Zer0pts2020]easy strcmp 前话:这题要用到ida64位远程调试先记录一下配置方法,因为本人使用的是ida7.6版本差异可能导致问题. application与input fil ...

  7. 每日一题 [Zer0pts2020]musicblog

    进去一个登陆注册,先随便注册一个,然后进入以下页面 New post,看到他说都会replace radio,例如我们在我们服务器传一个MP3文件,那么Content内填[[url/xxx.mp3]] ...

  8. BUUCTF之[Zer0pts2020]Can you guess it? basename函数绕过

    BUUCTF之[Zer0pts2020]Can you guess it? basename函数绕过 题目 后台PHP源码: <?php include 'config.php'; // FLA ...

  9. [buuctf][Zer0pts2020]easy strcmp

    [Zer0pts2020]easy strcmp 思路 脚本 思路 第一步还是先查壳 放在linux中运行一下,发现竟然没有任何输入的位置. 放入ida64中查看,因为这个是一个64位的可执行文件,有 ...

  10. buu(前三页第二弹) RSA习题与相关知识总结

    文章目录 buu [ACTF新生赛2020]crypto-rsa3 1 题目描述: 题目分析: 收获与体会: buu [WUSTCTF2020]情书 1 题目描述: 题目分析: 收获与体会: buu ...

最新文章

  1. .NET Framework 4.0的新特性
  2. 【转】symbian操作系统 入门篇
  3. 阿里云容器服务发布 Knative 托管服务 | 云原生生态周报 Vol. 49
  4. widget模式弄不出来_【春天文化】互联网时代的教育模式培养精英
  5. 排序算法第五篇——快速排序
  6. 【HIHOCODER 1133】 二分·二分查找之k小数
  7. 珍爱网App竞品分析报告
  8. 计算机主机清洁维护,电脑主机日常维护保养
  9. 【生活】深圳驾考经历
  10. 丹佛机场行李系统案例分析
  11. ps如何图片调色教程及ps有哪些好用的调色滤镜插件
  12. 【资料】wod旗帜,纹章
  13. mybatis mysql连接时区_MySQL时区的查看和设置
  14. 事务的特性——持久性(实现原理)
  15. Warning [gazebo.cc:215] Waited 1seconds for namespaces.
  16. C语言学生成绩信息管理系统课程设计报告
  17. 密码锁屏保护隐私更安全,这款口碑好的手机浏览器值得拥有
  18. 力扣第四十六题(全排列)详解
  19. Java中boolean型变量的默认值问题
  20. python绘制缓和曲线_CAD中缓和曲线的画法 - AutoCAD基础应用 - CAD论坛 - 明经CAD社区 - Powered by Discuz!...

热门文章

  1. 【转】Url Rewrite Filter 使用全攻略
  2. BFS解决一般性的泊松分酒问题
  3. 进阶-第28__深度探秘搜索技术_实战掌握误拼写时的fuzzy模糊搜索技术
  4. CTF 流量分析Wireshark Certificate例题
  5. 2021最新 阿里云部署 Flask + WSGI + Nginx 详解
  6. 如何做好一名合格的项目组长
  7. simpleCaptcha语音验证码实现及其扩展
  8. 如何增加你的被动收入
  9. linux远程连接硬件加速,Linux中为谷歌Chrome浏览器启用视频硬件加速的方法
  10. 对vue初学者建议 vue如何上手