日常刷题记录20210812
感谢郭哥提供的环境和一万个hint
[724]upload
给了一个上传页面,beatiful front(笑)
看一下给的源码中关于上传文件的部分
1 |
|
filename中不能含有h,很方便地把一堆后缀连带.htaccess给过滤了
题目还给了一个info.php的界面,可以直接看到服务器的phpinfo,得到session的路径
然鹅路径里带h,session动不了手脚
然后就在这题卡了一个多星期😅
后来找郭哥证实了是环境没配好,原题是session路径是tmp。那么这里我本地搭建环境,手动改session模拟一下
看一下下面这段源码
1 |
|
显然易知,session可控的情况下可以new一些奇怪的类出来。(参考链接:http://www.whoamianony.top/2021/03/10/Web%E5%AE%89%E5%85%A8/PHP%20%E5%8E%9F%E7%94%9F%E7%B1%BB%E7%9A%84%E5%88%A9%E7%94%A8%E5%B0%8F%E7%BB%93/#2021-MAR-DASCTF-%E6%98%8E%E5%BE%A1%E6%94%BB%E9%98%B2%E8%B5%9B-ez-serialize)
在phpstudy的目录下面放一个flag文件模拟一下
上传文件名为../../flag的文件,然后把$_SESSION[‘paths’][$filepath]改为SplFileObject
SplFileObject 类
SplFileInfo 类为单个文件的信息提供了一个高级的面向对象的接口,可以用于对文件内容的遍历、查找、操作等。详情请参考:https://www.php.net/manual/zh/class.splfileobject.php
flag{ibukifalling_test_flag}
感想和总结
php有很多可以利用的原生类,在new出来的类可控的时候可以考虑利用。
代码审计真的很重要,对代码逻辑有清楚的认识才能更好地解题(来自一个看php代码看了几天才看懂的人)