Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >CISCN初赛Misc

CISCN初赛Misc

作者头像
回天
发布于 2023-04-25 07:54:19
发布于 2023-04-25 07:54:19
37900
代码可运行
举报
文章被收录于专栏:Ga1@xy's W0r1dGa1@xy's W0r1d
运行总次数:0
代码可运行

robot

翻流量包追踪tcp流,可以看到一些tgPos{}.value.[]样式的数据,后面的内容很明显是坐标

先把整个tcp流保存为txt,然后写个脚本把那些tgPos数据提取出来

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
f = open('1.txt', 'r')
fi = open('tgPos.txt', 'w')
while 1:
    a = f.readline().strip()
    if a:
        for i in range(200):
            if "tgPos{%d}"%(i) in a:
                #b = a[a.find("tgPos") : a.rfind("0]") + 2]
                fi.write(a[a.find("tgPos"):a.rfind("0]") + 2] + "\n")
    else:
        break
fi.close()

得到一系列数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tgPos{1}.Value.[27,36,0]
tgPos{2}.Value.[28,35,0]
tgPos{3}.Value.[29,35,0]
tgPos{4}.Value.[31,35,0]
tgPos{5}.Value.[32,35,0]
tgPos{6}.Value.[33,35,0]
tgPos{7}.Value.[35,35,0]
......

坐标的最后一位都是0,所以是个平面,提取前两位画个图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from PIL import Image

flag = Image.new("RGB", (400, 400), (255, 255, 255))
f = open('tgPos.txt', 'r')
while 1:
    a = f.readline().strip()
    if a:
        x = int(a[a.find('[') + 1 : a.rfind(',')].split(',')[0])
        y = int(a[a.find('[') + 1 : a.rfind(',')].split(',')[1])
        flag.putpixel((x, y), (0, 0, 0))
    else:
        break
flag.save("flag.png")

字符串求md5得到flag

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CISCN{d4f1fb80bc11ffd722861367747c0f10}

running_pixel

分离gif图,得到382张单独的图片

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
convert running_pixel.gif ./out/out.png

在最后几张图中放大可以看到有一个像素点挡住了原本的图像,像素值为(0xe9, 0xe9, 0xe9),即233

写脚本遍历一下所有图片,把特定像素值的像素点画出来 由于题中给的是gif,分离出来的图片为P模式,所以在取像素之前要把它转换成RGB模式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from PIL import Image

out = Image.new('RGB', (400, 400), (0, 0, 0))
f = 0
for i in range(382):
    f += 1
    pic = Image.open("out-%d.png"%(i)).convert("RGB")
    x = pic.size[0]
    y = pic.size[1]
    for xx in range(x):
        for yy in range(y):
            a = pic.getpixel((xx, yy))
            if a == (233, 233, 233):
                out.putpixel((yy, xx), (255, 255, 255))
                #if f % 8 == 0:
                out.save("%d.png"%(f))

out.save("flag.png")

通过画出来的382张图,按照图片生成顺序,可以依次找到36个字符,构成uuid的格式,小写即为flag

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CISCN{12504d0f-9de1-4b00-87a5-a5fdd0986a00}

tiny traffic

导出http流有flag_wrapper,改后缀为gz能解压出来CISCN{}

还有两个br文件,其中test.br能解压出来

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
syntax = "proto3";

message PBResponse {
  int32 code = 1;
  int64 flag_part_convert_to_hex_plz = 2;
  message data {
    string junk_data = 2;
    string flag_part = 1;
  }
  repeated data dataList = 3;
  int32 flag_part_plz_convert_to_hex = 4;
  string flag_last_part = 5;
}

message PBRequest {
  string cate_id = 1;
  int32 page = 2;
  int32 pageSize = 3;
}

https://cloud.tencent.com/developer/article/1510536 https://blog.csdn.net/mijichui2153/article/details/99585860

利用上面文章里提到的protoc把test文件编译为test_pb2.py,利用python把secret反序列化

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import test_pb2

pb = test_pb2.PBResponse()
f = open('secret', 'rb').read()
pb.ParseFromString(f)
print(pb)

直接根据反序列化得到的内容一行一行搞一下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
part1 hex(15100450) : 0xe66a22
part2 e2345
part3 7889b0
part4 hex(16453958) : 0xfb1146
part5 d172a38dc

拼成完整flag

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CISCN{e66a22e23457889b0fb1146d172a38dc}

隔空传话

0011000D9开头编码,能搜到个PDU短信协议,在线网站解一下,前几行可以得到一些明文信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hello,bob!what is the flag?
the first part of the flag is the first 8 digits of your phone number
那其他部分呢
看看你能从这些数据里发现什么?w465

可以得知第一部分flag的为发送第一句对话的人的手机号的前八位

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SMSC#
Receipient:+8615030442000
Validity:Rel 4d 
TP_PID:00
TP_DCS:00
TP_DCS-popis:Uncompressed Text
No class
Alphabet:Default

hello,bob!what is the flag?
Length:27

删去+86前八位为 15030442 从 http://www.sendsms.cn/pdu/ 提取出 pdu.js:https://paste.ubuntu.com/p/Z3hVKb5kbQ/ 写个脚本调用一下,按照时间顺序把png的十六进制还原

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let { getPDUMetaInfo } = require('./pdu');
let fs = require('fs');
let data = fs.readFileSync('data.txt').toString();
let objs = []
for(let line of data.split('\n')) {
    let meta = getPDUMetaInfo(line);
    let body = meta.split('\n\n')[1].split('\n')[0]
    let headers = meta.split('\n\n')[0].split('\n')
    let datetime = headers[2].slice(headers[2].indexOf(':')+1);
    let a = datetime.split(' ')[0].split('/');
    let date = new Date(`20${a[2]}-${a[1]}-${a[0]} ${datetime.split(' ')[1]}`);
    objs.push({date:date, body:body});
    // console.log(.split('\n'))
}

let result = ''
for(let o of objs.slice(4)) {
    result += o.body;
}
console.log(result)

十六进制转成png

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from binascii import unhexlify
with open('data', 'r') as f, open('a.png', 'wb') as img:
    img.write(unhexlify(f.read()))

得到的图片宽度不对,在最开始的消息中提到了w465,想到修改宽度为465,得到最后的图片

flag前八位为电话号前八位:15030442

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CISCN{15030442_b586_4c9e_b436_26def12293e4}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MRCTF部分wp
第一次出题,可能水平不是很高,如果给师傅带来了不是很好的做题体验,还请师傅多多包涵~
回天
2023/04/25
3920
MRCTF部分wp
第14届全国大学生信息安全竞赛-创新实践能力赛
来源于:https://r0yanx.com/2020/10/28/fslh-writeup/
MssnHarvey
2022/08/10
5450
第14届全国大学生信息安全竞赛-创新实践能力赛
ctfshow-萌新赛
那么这个sudoku.png就可能是伪加密,通过修改二进制解压出sudoku.png
2020/08/19
1.4K0
ctfshow-萌新赛
Writeup丨国赛线上初赛解题最后一波~
最后两趴... 是的~今天给出的是这次国赛最后两部分:Mobile和Pwn。 --------------- 特别感谢BXS战队 --------------- 再过几天放出西湖论剑杯的writeup
安恒网络空间安全讲武堂
2018/06/26
7830
Debuggerrr²战队CISCN初赛解题记录
签到题,开始没看到豪密剖析,对照密码表一个一个找的,额。将7个电码和密码本前28个数字每四个一组进行模十加法,看示例是加猜测全部是加运算,得到电码答案后send即可。
十二惊惶
2024/02/28
1470
Ciscn初赛——LovePHP题目wp
如果在应用过滤器链后服务器返回500错误,那么可以推断出该字符在flag文件中,因为服务器在某些条件下无法正确处理该输入,从而导致错误
h3110_w0r1d
2024/02/19
4970
MiniL2020部分wp
下载附件,依次strings查看每个文件,在data.unity3d这个文件最后得到flag
回天
2023/04/25
1490
MiniL2020部分wp
V&NCTF2021_MISC官方wp
首先打开rar会提示说报错,这个不是题目本身的问题,而是考点之一——RAR伪加密。
L1near
2022/11/11
8660
V&NCTF2021_MISC官方wp
[2020西湖论剑]Misc-Yusapapa-Writeup
搜索到了一个网站:https://goto.pachanka.org/crypto/pgp-wordlist
山深有杏
2024/01/30
1760
[2020西湖论剑]Misc-Yusapapa-Writeup
Writeup丨国赛线上初赛解题第二波~
接着昨天的... 今天主要放送Reverse类型题的writeup~所谓知其然也要知其所以然,逆向给小讲的感觉就像要去探索宇宙起源辣么新奇~ --------------- 特别感谢BXS战队 ---
安恒网络空间安全讲武堂
2018/06/26
5280
hctf2016 简单部分WEB && misc writeup
因为队伍里没有专门的misc选手,所以其实这次比赛的的misc都是我们凑的,除了最开始的杂项签到,只有你所知道的隐写就仅此而已嘛不是我出的,这里稍微整理一下,整体misc都非常简单,唯一一个比较难的misc题目还因为我的出题失误导致基本上只有一个师傅做题方式接近我的正解,下面稍微研究一下简单的web部分和misc题目
LoRexxar
2023/02/21
3320
hctf2016 简单部分WEB && misc writeup
网鼎杯青龙组2020部分题解
简单pop链构造:op=2的时候,去让read()中的file_get_contents执行。
KevinBruce
2020/05/25
1.7K0
网鼎杯青龙组2020部分题解
长安“战疫”2022 部分WriteUp (第四名)
本次比赛取得第四名!拿到一个一血,密码方向由NonupleBroken全部解出,2022年首战告捷!
Timeline Sec
2022/02/11
1.2K0
长安“战疫”2022 部分WriteUp (第四名)
De1taCTF2020 部分Writeup
Timeline Sec CTF组成立了两个月,终于迎来了第二次比赛(被师傅们锤),以下分享的是我们在De1ta2020比赛中针对部分题目的解题思路。
Timeline Sec
2020/05/25
1.8K0
De1taCTF2020 部分Writeup
go语言版串口获取银商秘钥工具
体验ç和GO语言混合编程,去语言的魅力。互联网时代的“”,“C”,没错,就是要简洁高效
杨永贞
2020/08/04
4360
网鼎杯 第四场 部分WriteUp
http://2e8c0fad02d147a6b3f23624556a2fe49a4b7d2b64484f3c.game.ichunqiu.com//.git/
ChaMd5安全团队
2018/09/29
8890
网鼎杯 第四场 部分WriteUp
De1CTF Misc wp
De1CTF这次队里师傅都很出力很牛逼,最后成绩也很不错,俺被直接带飞,这里对MISC做一个汇总wp,部分wp来自于队友。
L1near
2022/11/11
9650
De1CTF Misc wp
攻防世界_misc部分wp
下载后解压得到一张图片,扔进binwalk后得到两张看起来一样的图片和一个hint.txt,打开txt文件看到
回天
2023/04/25
1.1K0
攻防世界_misc部分wp
Flare-On 2018 writeup(上)
签到关,jar程序,直接拖入jd,很直接的flag: GoldenTicket2018@flare-on.com
ChaMd5安全团队
2018/10/23
8510
Flare-On 2018 writeup(上)
Python_基础_01
定义编码:只要符合coding[:=]\s*([-\w.]+)即可。如 #coding= utf-8 # -*- coding: utf-8 -*-
py3study
2020/01/14
4650
相关推荐
MRCTF部分wp
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验