BUUCTF--Web—secret_file
题目打开
啥也没有,f12看源码;
有个Archive_room.php,访问后:
超链接进去:
听了他的鬼话,就会:反复横跳~
我对前个网页和这个网页抓包后什么都没有,于是对超链接抓包,抓到了好东西:
访问secre3t.php后:
可恶的代码审计,
大佬:看到 data ,input ,tp等词眼,想到前不久刚学的 php 伪协议;
函数作用分析:
highlight_file(FILE) ,使php 代码高亮; error_reporting(0), 不报错; strstr() ,查找一个子串是否在另一个字符串中存在,存在则返回子串以及后面剩余部分,区分大小写; stristr() ,与 strstr() 函数作用相同,不区分大小写; 代码分析: 源码中提示 flag 在flag.php中,而要使得 include()将flag.php 包含进来,则要使得 前面的 if 不成立,而 if 不成立,需要满足4个条件:
file 变量不能含有 …/ 这样目录穿越的字符; file 变量不能含有 tp,input,data 这几个字符; 既然 input,tq,data …/, 被禁用,那我们就无法进行目录穿越,或者shell写入连接蚁剑,所以想到使用 php://filter 这个php伪协议;
构造payload : secr3t.php?file=php://filter/read=convert.base64-encode/resource=flag.php
(php伪协议原理):https://segmentfault.com/a/1190000018991087
payload 解析:
php://fliter: 用于读取文件源码; read: php://filter的参数,用于读取数据; convert.base64-encode 将读取的PHP代码(数据流)进行base64 编码,否则php代码会被执行而不再页面显示; resource:指向要读取的文件,(要筛选的数据流);
最后,把得到的字符串base64解密:
flag{9f363a0c-59ea-4ff3-9361-ww22657601af}