2022春秋杯-春季赛 勇者山峰 writeup(misc全部+web签到)

改改比赛wp发上来

本文来自csdn的⭐️shu天⭐️,平时会记录ctf、取证和渗透相关的文章,欢迎大家来我的主页:shu天_CSDN博客-ctf,取证,web领域博主:https://blog.csdn.net/weixin_46081055 看看ヾ(@ ˘ω˘ @)ノ!!

2022春秋杯-春季赛 勇者山峰 writeup

  • 2022春秋杯-春季赛 勇者山峰 writeup(misc全部+web签到)
  • 一、 解题情况
  • 二、 解题过程
    • 1 Capture Radiate Chart
      • 操作内容:
        • 1.rar提取
        • 2.pdf分析
        • way1
          • 1) png文件头
          • 2) IDAT段
        • way2
    • 2 RecoverMe
      • 操作内容:
    • 3 PINTU
      • 操作内容:
    • 4 tiger
      • 操作内容:
    • 5 被带走的机密文件
      • 操作内容:
    • 6 签到
      • 操作内容:
    • 7 Mercy-code
      • 操作内容:

一、 解题情况

二、 解题过程

1 Capture Radiate Chart

操作内容:

1.rar提取

用TweakPNG(工具地址cloud.tencent.com/developer/article/1808156)查看图片,发现每个IDAT块的crc值最后两位,正好是rar的文件头(52 61 72 21→R a r !)

利用010editor导出crc,在csv和excel中处理

整理一下写成新的rar文件

2.pdf分析

way1

解压得到一个pdf,打开看是空空的。

对pdf的结构分析,其中有一个78 9C开头的stream数据段,应该是里面有一张图片,所以对pdf进行strings(pdf结构解析可以看这位师傅的文章www.jianshu.com/p/f48cc9077c10)

对象的内容应该是包含在<< 和>>之间的,最后以关键字endobj结束.

Stream说明一个流对象的开始。
Endstream为流对象的结束标志

……
7 0 obj
<</BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter /FlateDecode /Height 1403 /Length 12538 /Subtype /Image /Type /XObject /Width 992>>
stream
……

根据上面这段对象内容属性的说明,我们知道图片的长度/Height 1403 和宽度/Width 992,以及IDAT段的长度/Length 12538,流则是提取Stream和Endstream之间的部分。(快速提取直接用binwalk,1F9.zlib即是我们需要的,要把最后多出来的Endstream等等删除),我这里一共12538字节,多点少点都没事(和/Length 12538对应啦

然后我们开始构造png文件头以及IDAT块的头

1) png文件头

png文件头分析参考David.Turing师傅:www.blogjava.net/security/archive/2006/06/08/51292.html

如下图,前面几段是固定值,图片的长度/Height 1403 =57B和宽度/Width 992=057B,再计算一下crc(不算乱填也可)

Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F00000000   89 50 4E 47 0D 0A 1A 0A  00 00 00 0D 49 48 44 52   塒NG        IHDR
00000010   00 00 03 E0 00 00 05 7B  08 02 00 00 00 29 34 52      ?  {     )4R
00000020   90

2) IDAT段

IDAT结构根据这位师傅的文章juejin.cn/post/6844903983258173454

IDAT段的长度/Length 12538=30FA(我不知道有没有写反……我一直分不清小端序大端序,感觉回到了学存储原理时候……)

即可正常显示

不过我赛后复盘时候猜,这张图片应该是放在word里,然后把写着flag的地方移到展示页面之外,所以转换为pdf之后我们看不见,于是有了第二种解法

way2

利用pythonfitz 库对pdf操作提取图片(代码参考刘早起师傅cloud.tencent.com/developer/article/1785670)

import fitz
import re
import osfile_path = r'flag.pdf' # PDF 文件路径
dir_path = r'./1/' # 存放图片的文件夹def pdf2image1(path, pic_path):checkIM = r"/Subtype(?= */Image)"pdf = fitz.open(path)lenXREF = pdf.xref_length()count = 1for i in range(1, lenXREF):text = pdf.xref_object(i)isImage = re.search(checkIM, text)if not isImage:continuepix = fitz.Pixmap(pdf, i)new_name = f"img_{count}.png"pix.save(os.path.join(pic_path, new_name))count += 1pix = Nonepdf2image1(file_path, dir_path)

也可以得到(ps我也试了网上一些pdf转换工具,基本上不行,可能他们是基于可见元素分析pdf并转换的,并没有分析pdf的zlib块,所以得不到完整图片)

pps补个png的phys数据块知识点www.cnblogs.com/mqxs/p/3552658.html

我觉得出这题的师傅真的很厉害,对pdf和png的文件结构一定烂熟于心,复盘时候学到了很多,谢谢师傅们出了这么好的题目!

flag值:

flag{Create_Remarkable_Ctf}

2 RecoverMe

操作内容:

根据提示用Passware字典爆破vc加密容器密码aaaAAA111

(ps.vc加密容器是有outer容器和隐藏容器的区别,不过这题没有考)

挂载容器,然后用x-way查看磁盘,发现之前存在一个流量包,恢复该流量包

流量包中都是icmp协议的流量,data段的长度(十进制转ascii 80 75 →PK)正好可以构成一个压缩包

xz.aliyun.com/t/4527参考这篇文章

首先筛选ip.src_host==192.168.43.186

tshark -r 1.pcapng -Y "icmp" -T fields -e data.len | tr "\n" ","

然后对得到的十进制数字就行简单替换,逗号之间补充0

py脚本写文件

import structraw = [80,75,3,4,20,0,1,0,0,0,201,158,124,84,241,77,1,151,50,0,0,0,38,0,0,0,10,0,0,0,115,101,99,114,101,116,46,116,120,116,202,7,76,52,18,217,95,209,16,103,33,82,12,242,206,138,103,184,241,65,43,57,75,43,130,112,107,178,89,108,190,217,11,246,105,237,181,32,234,243,226,240,182,130,97,109,1,132,196,168,80,75,1,2,63,0,20,0,1,0,0,0,201,158,124,84,241,77,1,151,50,0,0,0,38,0,0,0,10,0,36,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,115,101,99,114,101,116,46,116,120,116,10,0,32,0,0,0,0,0,1,0,24,0,237,79,170,141,154,66,216,1,34,16,235,170,154,66,216,1,24,255,80,114,154,66,216,1,80,75,5,6,0,0,0,0,1,0,1,0,92,0,0,0,90,0,0,0,21,0,105,112,181,196,177,228,187,175,202,199,185,202,210,226,181,196,194,240,163,191,0,0]
m = [int(i) for i in raw]with open('1.zip', 'wb') as fp:for i in m:s = struct.pack('B',i)fp.write(s)

提示ip的变化,ip.src==192.168.43.186筛选IP,导出为文本文档,然后导入excel,取出destination ip

去掉换行,得到

011100000110000101110011011100110111011101101111011100100110010001101000001100110111001000110011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

www.rapidtables.org/zh-CN/convert/number/ascii-hex-bin-dec-converter.html转换为ascii,密码为passwordh3r3,解压得到flag

flag值:

flag{efaaf34db0bad8e1888e8f671f3cb7ab}

3 PINTU

操作内容:

观察图片规律,推测第六字节和第八字节是拼图的定位

搜搜Bmp文件头:www.cnblogs.com/l2rf/p/5643352.html,这两个位置是保留字节(所以可以做手脚

先写个脚本提取第六字节和第八字节

from PIL import Imagex_list=[]
y_list=[]for i in range(0,14400):f = open(f'img/{i}.bmp', 'rb').read()x = f[6]y = f[8]x_list.append(x)y_list.append(y)#print(x_list)
#print(y_list)
print(max(x_list))
print(max(y_list))

基本可以确认是根据第六字节和第八字节排序,x和y的最大值都是119,可以得到我们最终拼图的尺寸为(12032)x(12018),即3840x2160,再整个拼图脚本

from PIL import Imageflag = Image.new('RGB', (3840, 2160))
for i in range(0,14400):f = open(f'img/{i}.bmp', 'rb').read()x = f[6]y = f[8]raw = Image.open(f'img/{i}.bmp')flag.paste(raw, (x*32, y*18))flag.save('flag.bmp')

得到flag

flag值:

flag{Bmp_index_PinTu}}

4 tiger

操作内容:

根据提示Rot47所以lsb密码是28a217fe

用工具github.com/livz/cloacked-pixel解密lsb得到71zr9H6jnXRHn64WBxMbCzz16saCZWiw,解密压缩包然后明文爆破

里面flag是个图片,是二维码

扫码后发现是零宽字符

f‍‎‍‏‍‏‏‌‍‍‍‌‎‏‏‌‌‎‏‏‌‎‎‏‌‏‏‏‌‍‏‍‌‍‏‍‌‌‍‌‍‍‏‏‌‏‌‌‍‏‍‏‌‍‍‍‍‌‏‏‌‎‍‎‌‌‍‏‏‌‎‍‏‏‍‌‏‏‌‏‏‎‎‎‏‍‌‏‏‌‍‌‌‌‏‏‌‏‏‍‏‏‏‍‎‏‏‌‌‍‌‏‍‏‏‌‍‍‍‍‍‏‎‏‏‌‍‏‌‏‏‌‏‏‌‎‏‎‏‏‌‌‌‏‎‎‍‍‏‏‌‍‌‍‎‎‎‏‏‌‌‌‌‏‏‌‏‍‍‌‏‍‎‏‏‌‏‍‏‏‌‏‎‍‏‏‌‍‍‌‍‏‏‌‍‌‍‏‏‌‏‍‌‏‏‌‍‎‎‏‌‌‍‌‏‏‌‎‌‎‌‍‌‎‏‌‏‎‌‎‍‌‎‍‏‎‍‏‌‎‏‌‎‍‌‏‏‏‎‌‎‍‏‏‌‏‌‏‎‍‏‎‌‎‌‏‎‏‏‍‌‍‌‎‌‎‌‎‎‏‌‏‏‏‍‌‏‌‌‏‌‏‏‎‎‎‏‍‏‏‌‍‌‌‌‏‍‌‏‏‌‌‏‏‌‍‍‏‏‍lag is not here

yuanfux.github.io/zero-width-web/网站解密零宽字符

www.guballa.de/vigenere-solver网站爆破出flag

You are a good CTFer because you can solve my challenge, next I will give you my secret, my secret is flag{866d3755-c358-5119-abeb-bda666a8099d}, have fun!

flag值:

flag{866d3755-c358-5119-abeb-bda666a8099d}

5 被带走的机密文件

操作内容:

取证大师进行自动化取证,在打印机缓存里面发现有打印图片的记录

flag值:

flag{1136d459-2885-409a-bc54-beea0739544b}

6 签到

操作内容:

弹钢琴,弹完之后自动跳转

7 Mercy-code

操作内容:

首先echo,发现前后都附加了header,构造命令并执行

cmd=echo(implode(apache_request_headers()));

传header
111:#;php.a898xx-gallff-7ckisj-ilkd8x tac;  //system这里是没有报错回显的,如果执行的命令太长会报错而无法返回,所以我们需要插入#将之后的长段命令注释掉
……
cmd=system(strrev(implode(apache_request_headers())));

看了别的师傅的wp:mp.weixin.qq.com/s/FGGceMvAZ9iRmIVIufBpBw ,发现可以用uniqid加上strrev函数随机取值,爆破出字符.,scandir+show_source直接读文件的

2022春秋杯-春季赛 勇者山峰 writeup(misc全部+web签到)相关推荐

  1. 2022年春秋杯网络安全联赛春季赛 勇者山峰部分WriteUp

    前言: 由于是刚入门CTF,第一次打比赛 记录一下过程 大佬绕过即可 后续会继续加油努力. MISC: 签到题: 题目描述:题目描述:题目内容:因为疫情,有多久没听到上课铃声了.(如果你还不知道怎么签 ...

  2. 2022春秋杯联赛 传说殿堂赛道 sql_debug题目解析

    2022春秋杯联赛 传说殿堂赛道 sql_debug题目解析 前言 sql_debug sql_debug 题⽬介绍 dsn_from_uri 触发phar反序列化 Linux下PHP内核调试⼩知识 ...

  3. 2021年春秋杯网络安全联赛秋季赛勇者山峰 pwn The SIMS - Programming Girl

    名字很长,程序像名字一样长,估计主要是为了增加代码阅读量(加大难度) 菜单很多,就不复制代码了,大概重要内容如下: wroking 工作就是挣钱,看了半天感觉没用,要求钱太多,主要是靠赔钱. impr ...

  4. 2022春秋杯 勇者山峰 Misc-Tiger WP

    拿到题目如下: 首先打开tips.txt文档: 提示了两点: 1.rot 47加密 2.lsb图片隐写 再打开另一个文档 对里面的内容进行rot47解密得到lsb隐写的密码:28a217fe 对于ls ...

  5. 【2022春秋杯】两个题wp

    Mercy-code 无参数RCE,过滤了很多 解法一 <?php highlight_file(__FILE__); if ($_POST['cmd']) {$cmd = $_POST['cm ...

  6. 2022春秋杯-被带走的机密文件

    Misc-被带走的机密文件 正经取证题,没有任何套娃成分,请师傅们放心食用.(附件较大.) 题目给了一个E01镜像 使用取证大师(也有不使用的方法,并且并不是完全依靠取证大师)打开自动取证先简单进行信 ...

  7. 春秋杯秋季联赛勇者赛道MISC部分WP

    1.secret_chart 解压压缩包,获得一个图片,使用foremost分离出一个zip 进行爆破,得到密码9527 容易发现的事情是吃到这一列$B,还有王苗苗这一行,都是1 宋爱梅这一行都是10 ...

  8. Dest0g3 520迎新赛 writeup (misc部分 + web部分)

    Dest0g3 520迎新赛 文章目录 Dest0g3 520迎新赛 MISC Welcome to fxxking DestCTF 你知道js吗 StrangeTraffic Pngenius Ea ...

  9. 2022英雄联盟LPL春季赛什么时候开始

    英雄联盟冬季转会期已经结束了,全新的队伍全新的启程,还是很值得期待的.比如即将到来的2022LPL春季赛,大家知道什么时候开始吗?赛程比赛是怎么安排的呢?下面就和小编一起来看看英雄联盟LPL春季赛的相 ...

最新文章

  1. 线性表的存储结构总结
  2. Java Spring的IoC和AOP的知识点速记
  3. CSDN Blog V3.0 升级公告
  4. python绘制滑稽脸_用Python画滑稽
  5. 用AsyncCtp实现一个简单的EchoServer
  6. 【渝粤题库】国家开放大学2021春1107传感器与测试技术题目
  7. CGContextRef:mask和layer绘图
  8. CE教程第八关——搜索4级指针
  9. spring源码下载以及gradle的详细使用教程
  10. iPhone5s的App Store不能下载应用的解决方案
  11. 利用555定时器的双电源电路原理
  12. svc预测概率_sklearn-SVC实现与类参数
  13. 爬取网易严选某种衣服商品数据,实现可视化,结论有点吓人
  14. 怎么使用计算机公式,如何在电脑上输入运算公式?
  15. paramiko-简介
  16. layim的websocket消息撤回功能实现
  17. 高通batterydata电池曲线数据学习
  18. Python网络爬虫实战(一)快速入门
  19. 中国科学技术大学计算机学院读博,2019年中国科学技术大学拟录取博士研究生名单公示(27)...
  20. 计算涨价百分比php,价格上涨率计算公式,涨跌百分比计算公式

热门文章

  1. GNU KHATA——开源的会计管理软件
  2. vue项目打包成app,在ios端iconfont 部分字体图标不显示
  3. javascript动态网页制作
  4. 视频如何转换成GIF?简单2步即可完成
  5. 华硕电池关闭后电源键还亮解决方法
  6. PostgreSQL不区分大小写的排序规则
  7. libsvm rfe_IBM增强请求(RFE)允许IBM i客户影响未来的发展
  8. aws apigateway 使用httpapi私有集成ecs服务
  9. 蚂蚁金服架构调整:胡晓明任总裁 向井贤栋汇报
  10. ONLYOFFICE 文档 v7.3 现已发布:新增字段填写接收人角色、SmartArt、全新安全性设置、查看窗口等功能