【pcb5-Uplssse】
注册admin,admin发现说只有admin能上传,猜测可能cookie验证,抓包
先url解码再Base64解码,发现is_admin为0;修改后成功进入文件上传
看到会对文件删除,就想到条件竞争,一个包上传一个包访问即可,多发几个包
可以看到也是有成功有失败的。接下来就是换成ls /和cat了
最后在/flag6f67186d中有flag

【pcb5-ez_php】
一个登录页面,账号密码不知道,抓包看一下,发现cookie信息base64解密后是php序列化字符串,构造对应脚本
<?php
namespace Session;
class User {
private $username = "admin";
}
$obj = new User();
echo base64_encode(serialize($obj));这样可以构造对应的用户名信息,但是发现用其他字符串都会显示在页面,用admin就会报错,尝试之后猜测是会删除admin导致数量不一样(还以为是字符串逃逸) 所以我们改一下脚本,
- 把
admin改为admadminin,此时字符串数量是10 - base64加密前把10改回5,这样服务器替换后就不会报错
<?php
namespace Session;
class User {
private $username = "adadminmin";
}
$obj = new User();
/* 1. 正常序列化 */$ser = serialize($obj);
/* 2. 手动篡改字符串长度(10 → 5) */$ser = str_replace(
's:10:"adadminmin";',
's:5:"adadminmin";',
$ser
);
/* 3. 再 base64 */echo base64_encode($ser);
成功绕过,重定向到了仪表盘,然后把浏览器的cookie改一下即可;接下来就不会了
下面是得到的信息
- cookie除了上面的
identification后面还会出现user_hash默认是9efab2399c7c560b34de477b9aa0a465解密后发现是common,和个人信息管理页面显示的一样,不知道有没有联系 - 在
dashboard.php页面点击传入的文件会传入参数?filename=,此时会带上user_hash - 然后
?filename=php文件时会显示You cannot read .php files
try to bypass,应该是提示 - 然后个人信息管理页面的操作一般也会带上
user_hash。 - 上传头像的目录是admin_avatar/5a11e0bd65af42743f1db2f10bcbba8e/1.php这一串是md5,和
user_hash相关,你用那个上传的就会上传到哪个下面,默认是common
都扫出来了flag.php居然没想到去读取一下,我靠
最后是第三点的点,filename=flag.php/绕过了