知识点:文件包含、代码审计、parse_url()绕过、命令执行
进入页面
查看源码发现有login.php文件,猜测有register.php,访问后注册一个账号进行登录,登录后的页面有page参数,猜测存在文件包含,使用filter伪协议读取user.php源码
解密后进行代码审计
user.php源码里没有什么可以利用的代码,但是包含了一个function.php,再使用伪协议读取function.php,从function.php发现这么一段代码
代码应该是想让我们访问ffffllllaaaaggg文件,但是下面还有parse_url()猜测用伪协议读取ffffllllaaaaggg时要绕过parse_url()
payload:http://b3391875-c36b-4229-84b1-22d809702d09.node3.buuoj.cn//user.php?page=php://filter/convert.base64-encode/resource=ffffllllaaaaggg
查看m4aaannngggeee
访问templates/upload.html后尝试上传文件,发现是个假的上传页面
查看源码有提示,但是好像也猜不出什么东西
读取upllloadddd.php
审计后发现之前提示的内容,并且发现上传的文件名没有经过过滤,可以利用文件名进行代码注入
找到真正的上传点/user.php?page=m4aaannngggeee
查看ffffllllaaaaggg,但是好像没有什么东西
使用;ls;#看看其他的文件,emmmm,好像也没有什么有用的
看看/下有什么吧,但是发现/被过滤了,使用cd ..绕过
有个flag_233333文件,看来flag应该是在里面了,读取一下得到flag