摘要: 两种思路 第一种 修改程序使MessageBox输出完整flag (这是修改后的版本) 查看 byte_402008 很长一串 而修改前 sub_401160只处理了28个字符 所以我们将28改为0xaf 这里由于Ollydbg打开地址偏移很难定位 直接用WinHex 找到对应的 6A 1C (pu 阅读全文
posted @ 2023-09-30 21:25 N0zoM1z0 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 大开眼界! main函数逻辑很清晰 只是最最关键的sub_83A 反编译不了 尝试阅读汇编代码 有一个很有意思的点: 这里有个printf("wrong on %d") 也就是根据我们输入的flag程序会告诉我们是否出错! 由于flag本体只有12位 所以可以利用pwn模块本地逐一爆破 思路就是从" 阅读全文
posted @ 2023-09-30 18:16 N0zoM1z0 阅读(64) 评论(0) 推荐(0) 编辑
摘要: 花指令初步+迷宫逆向 首先进行upx脱壳 然后IDA打开 这里有一个经典的花指令 (导致找不到main函数) 我们可以发现 call的这个地址根本不存在 所以我们用Ollydbg将这些patch掉 ollydbg打开 找到这条call指令对应的地址 由于 0040102C执行了jump 所以也要跟着 阅读全文
posted @ 2023-09-30 13:17 N0zoM1z0 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 两个考点: 假的strcmp 实则调用的是其他的函数 用C实现反汇编中的_QWORD等 其实关于第一个考点 表层分析: 这个肯定不是flag strcmp也是看似正常的extern strcmp 我们在左边的函数列表中逐一查看 只有这个函数有变换的作用 深层分析: 在init()函数中 可以发现 f 阅读全文
posted @ 2023-09-30 12:43 N0zoM1z0 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 学习z3库求解方程 """ z3约束求解方程 """ from z3 import * v1,v2,v3,v4,v5,v6,v7,v8,v9,v11 = Ints('v1 v2 v3 v4 v5 v6 v7 v8 v9 v11') s = Solver() s.add(-85 * v9 + 58 * 阅读全文
posted @ 2023-09-30 11:47 N0zoM1z0 阅读(62) 评论(0) 推荐(0) 编辑
摘要: 这题考了好多以前没关注的知识点 找了好久才全部解决 这里记录一下 无论哪个所谓的"讨论群"都以比赛时不让讨论... 题目源码: 第一步 要想办法让md5(password)的前6位满足 这里给出MD5截断 爆破脚本: 点击查看代码 import multiprocessing import hash 阅读全文
posted @ 2023-09-30 09:21 N0zoM1z0 阅读(501) 评论(0) 推荐(0) 编辑