web10
Docker安装在虚拟机中输入以下命令: 1sudo curl -fsSL https://gitee.com/tech-shrimp/docker_installer/releases/download/latest/linux.sh| bash -s docker --mirror Aliyun 检查以下 1docker -v 给docker配一个代理 1234567891011121314# 创建或覆盖原有的daemon.json文件,配置新的镜像源echo '{ "registry-mirrors": [ "https://docker.1ms.run", "https://docker.1panel.live", "https://docker.ketches.cn" ]}' | sudo tee /etc/docker/daemon.json# 重启Docker服务使配置生效sudo systemctl restart...
re10
EQUATION先查壳 拖进ida,查看一下main函数 这个函数非常长 这个是Z3约束求解,数据都在if语句条件下,都成立的情况下,就是flag 在其中每一个||,都代表一个独立方程,一共是31个 我们假设已知前缀为moectf{ 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152from z3 import *def solve_equations(): s = Solver() # 创建31个字节变量(v4[0]到v4[30]) v4 = [BitVec(f'v4_{i}', 8) for i in range(31)] # 添加已知flag前缀约束(可选) s.add(v4[0] == ord('m')) s.add(v4[1] == ord('o')) s.add(v4[2] ==...
week7-web-绕过
我们在做题过程中,会有各种各样的过滤限制,我们就可以绕过,具体怎么绕 绕过空格 /**/代替空格 Tab代替空格 %a0代替空格 常见的绕过空格的方法有$IFS$9,$IFS,$IFS$1,${IFS},%09,$IFS是linux下的分隔符,加上{}或者后面加$表示截断,防止与后面的变量名粘连导致命令无法执行 绕过分隔符通常有两种表示方法||后者; 都试一下 绕过关键字 中间加符号 123456ls -> l\sls -> l""sls -> l``scat /flag -> ca\t /flag -> c\a\t /flagcat /flag -> ca""t /flag -> c""a""t /flagcat /flag -> ca``t /flag -> c``a``t /flag 拆分命令绕过 12ls -> a=l;b=s;$a$bcat /flag ->...
week7-re-ISCC
something先die查壳 用ida打开后,直接进入main函数,看到与pyinstaller有关,利用python反编译一下(需要在同一目录下) 这个题不会啊 冗余的代码依旧是先查壳 拖进ida shift+f12看一下 关键字,看到下面的部分,猜测可能是与flag有关,跟进看看 看到爆红的部分,可能是花指令,去除一下,nop掉,按C编译 一个接着一个,本来想数一下的,但是太多了,没数过来,我们把他们全部nop掉就行了 方法一:重新看一下关键字,依旧是刚才那个地方 跟进一下,看到那个部分的函数,试一下动调 目前没有成功 方法二:看wp中写的,直接利用idapython一把梭,先把代码放上,再看看逻辑 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748import structdef xxtea_encrypt(data, key): def mx(): return (((z >> 5 ^ y...
week5-web-流量分析
https://www.wireshark.org/download.html 上面的是安装网址,直接安装就好 我们通常使用wireshark来分析,捕获,可视化网络流量 flag等信息直接隐藏在流量包中,或者通过分析流量包看流量包中是否有其他文件(jpg,zip,png等类型),通过提取解决,进行下一步分析 类型:1.流汇聚(直接流汇聚得到flag)明文的就不说了,很简单 2.提取数据的(1)藏在压缩包中没找到例题 (2)藏在图片中Cephalopod我们先查找一下,在列表,详情,字节流中都找一下flag这个关键字 我们看到了flag.png这个字符串 重新搜索一下png文件头(89 50 4E...
week5-re-例题
[HNCTF 2022 WEEK2]e@sy_flower 先查壳,32位,并且没有加壳 直接拖进ida 看到这一部分,可能是花指令 我们把前面的E9改为90 在main函数按P生成一下,再f5转换 发现有两段加密代码 第一段 这个的作用是将原本的字符串重排,循环的次数=字符串长度/2 第二段主要就是一个异或 我们可以利用脚本来解决这个问题 12345678910111213141516171819202122232425#include<stdio.h>#include<string.h>int main(int argc, char const *argv[]){ char flag[] = "c~scvdzKCEoDEZ[^roDICUMC"; char v5; int len = strlen(flag); for (int i = 0; i < len / 2; ++i) { v5 = flag[2 * i]; ...
week4-re-迷宫
迷宫[SWPUCTF 2021 新生赛]老鼠走迷宫我们先用die查壳 发现有一个打包工具Pylnstaller,我们可以利用pyinstxtractor.py来解决,我们先看看这个附件的文件类型,拖进010后,文件头是4D 5A 90...
week3-re-tea
week3-re-tea算法特征tea 算法主要特征表现在 sum 和 delta 变量,以及三行核心加密中出现的右移 4 左移 5,两行各有 3 个小括号相互异或。 加密过程密钥长度为 128 位 下面被拆分成 4 个子密钥 [K0,K1,K2,K3] 将 64 位明文分成两部分(假设为 L,R,各 32 位) 进行 64 轮加密,更新 L,R 12345for (int i = 0; i < 64; i++) { L += ((R << 4) + K0) ^ (R + sum) ^ ((R >> 5) + K1); R += ((L << 4) + K2) ^ (L + sum) ^ ((L >> 5) + K3); sum += delta; // delta = 0x9E3779B9(黄金比例相关)} (R << 4) + K0:左移 4 位后叠加 K0。 (R >> 5) + K1:右移 5 位后叠加 K1。 sum 初始值为 0,每轮加密累加...
week1-re-校赛wp
week1-校赛复现Miscbaby_misc下载压缩包打开后,其中还有一个压缩文件和一个 mp3 格式文件,其中的压缩文件是加密的,如下: 所以我们要找到这个文件的密码,由题目中的提示,如下: 可知 mp3 音频的密码是 1111,解决音频后可能得到压缩包的密码 对于如何在 MP3stego 中执行解码命令 decode -X -P 密码 输入.mp3 打开后发现是压缩包,将其复制进入 010,并保存 保存成压缩包形式打开后 发现每一个文本中都有循环冗余,原始大小都为 6 字节 依次暴破 找到了压缩文件密码,如下: oh_you_are_9ood_at_CRC32 解压完成后打开,内容如下: 看他的文件头,就可以发现这是一个 gif 动图,将其复制进 010 中并保存 重新打开后就可以看到转瞬即逝的 flag,利用 stegsolve 分析 选择 Frame Browser 对动图进行逐帧分析 得到 QLNU{L1st3n_bE4ut1ful_5ong} Ez_QR下载并解压附件后是 50 个二维码 方法一:依次扫描...
week1-web-校赛wp
week1-校赛复现Miscbaby_misc下载压缩包打开后,其中还有一个压缩文件和一个 mp3 格式文件,其中的压缩文件是加密的,如下: 所以我们要找到这个文件的密码,由题目中的提示,如下: 可知 mp3 音频的密码是 1111,解决音频后可能得到压缩包的密码 对于如何在 MP3stego 中执行解码命令 decode -X -P 密码 输入.mp3 打开后发现是压缩包,将其复制进入 010,并保存 保存成压缩包形式打开后 发现每一个文本中都有循环冗余,原始大小都为 6 字节 依次暴破 找到了压缩文件密码,如下: oh_you_are_9ood_at_CRC32 解压完成后打开,内容如下: 看他的文件头,就可以发现这是一个 gif 动图,将其复制进 010 中并保存 重新打开后就可以看到转瞬即逝的 flag,利用 stegsolve 分析 选择 Frame Browser 对动图进行逐帧分析 得到 QLNU{L1st3n_bE4ut1ful_5ong} Ez_QR下载并解压附件后是 50 个二维码 方法一:依次扫描...