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}
 

posted @ 2021-11-27 23:18  Luccky  阅读(39)  评论(0编辑  收藏  举报