training-6
week3-4(3)
BUUCTF phpdest
文件包含
看了预期解是利用require_once的漏洞
原理实在看不懂粒→原理
因为是”once“,flag.php文件从正常使用的路径中无法再次包含
而proc/self
表示当前进程目录,目录中是当前进程本身相关信息的文件(包含flag.php)
root
是指向当前进程运行根目录的符号链接
组成proc/self/root
,之后…?就得到下面的payload
1 | php://filter/convert.base64-encode/resource=/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/var/www/html/flag.php |
伪协议+多级符号链接 绕过,这一堆最后指向了flag.php
最后base64解码得到flag
还有一种方法是利用访问日志
先尝试打开访问日志目录
能打开,抓包注入(UA)
成功连接,得到flag
EasyPHP
有思路,但没技术
源码
1 |
|
中间那些时间戳的东西明显达不到条件,故这条路行不通
之后看看set_error_handler
函数,是设置用户自定义的错误处理的函数
能看到触发这个函数也能输出flag
问题是怎么触发这个错误函数
emm利用把数组当作字符串进行拼接运算时会报错这一点
funny_upload
前端过滤+黑名单过滤+内容过滤<?
抓包试了一下php、phtml不行,但.htaccess可以上传
因为有内容过滤,就想着利用script代替<? 、?>
标签
但是试了好久都连不上
查了一下发现这个payload只能在PHP5.x版本中使用
应该是版本不对
内容过滤就要用base64编码绕过
.htaccess内容如下
1 | Addtype application/x-httpd-php .gif |
之后传入的hacker.php内容要经过base64编码
地址栏输入gif地址,POST传入“a=phpinfo();”,可得到关于php配置的信息,证实上面的版本问题
最后连接蚁剑,得到flag
还有两道下周补吧。。
- Title: training-6
- Author: dawn_r1sing
- Created at : 2023-11-16 22:33:23
- Updated at : 2023-11-16 22:52:48
- Link: https://dawnrisingdong.github.io/2023/11/16/training-6/
- License: This work is licensed under CC BY-NC-SA 4.0.