1.进入页面查看源码
找到提示有一个Archive_room.php文件,查看
点进去查看
回去看Archive_room.php的源码,发现url是action.php但是进来之后重定向导论了end.php。抓包重放查看相应包发现 secr3t.php
查看出现源码
2.文件包含
代码审计,这里可以文件包含并且过滤了一些特定字符,但是php没有被过滤。先直接包含flag.php看看。
存在文件,经典姿势查看源代码:php://filter/read=convert.base64-encode/resource=flag.php
base64解密
找到flag
文件包含常用协议(姿势)
一、协议:
1.php://filter 读取文件源码
php://filter 协议可以对打开的数据流进行筛选和过滤,常用于读取文件源码
使用文件包含函数包含文件时,文件中的代码会被执行,如果想要读取文件源码,
可以使用base64对文件内容进行编码,编码后的文件内容不会被执行,而是展示
在页面中,我们将页面中的内容使用base64解码,就可以获取文件的源码了
2.php://input 任意代码执行
php://input 可以访问请求的原始数据,配合文件包含漏洞可以将post请求体
中的内容当做文件内容执行,从而实现任意代码执行,需要注意的是,当
enctype=multipart/form-data时,php:/input将会无效
3.data://text/plain 任意代码执行
协议格式: data:资源类型;编码,内容
data://协议通过执行资源类型,使后面的内容当做文件内容来执行,从而造成任
意代码执行
4.zip:// 配合文件上传开启后门
ziip://协议用来读取压缩包中的文件,可以配合文件上传开启后门,获取
webshell将shell.txt压缩成zip,再将后缀名改为jpg上传至服务器,再通过
zip伪协议访问压缩包里的文件,从而链接木马
二、姿势:
?page=php://filter/read=string.rot13/resource=index.php
?page=php://filter/convert.base64-encode/resource=index.php
?page=pHp://FilTer/convert.base64-encode/resource=index.php
?page=zip://shell.jpg%23payload.php
?page=data://text/plain;base64,[base64_encode_shell]
?page=expect://id
?page=expect://ls
?page=php://input | POST DATA: