摘要:这两段是把输入串拆成两个一组,每组是两个各位十六进制数 然后这里是每取出一对数操作fuyi数组,0位是值1位是下标,然后根据dword_47212C和dword_472140数组对这个下标和值操作 因为是异或1<<,两个数组看着也像坐标操作,就把fuyi数组每个数拆成二进制排一行,转换成16x16的
阅读全文
摘要:首先查壳 upx,用upx -d notsudoku.exe脱掉 然后是个python的exe,用python pyinstxtractor.py notsudoku.exe拆开(pyinstxtractor.py随便下一个) 其中的2是pyc文件,但是缺少文件头,把struct文件里的头和2文件的
阅读全文
摘要:参考:https://blog.csdn.net/huanghelouzi/article/details/82943615 公共模数攻击 给定两组密文和公钥和n c1 = pow(m, e1, N) c2 = pow(m, e2, N) 因为e1e2互质,所以可知若有xy满足pow(x,e1)+p
阅读全文
摘要:KCTF 第二题 南冥神功 硬看,发现通关要求是把aS_1全搞成1 然后这里是在aS_1数组里的移动,像是二维平面八方向走一样 有个很智障的地方就是aS_1的起始数值是这个'S'不是0……直接跳过结果搜不出路径 只能走到为0的位置,走过之后就置为1,也就是一笔画路径 搜了一下果然只有一条符合要求的路
阅读全文
摘要:normal16 password1 因为前面有个提取数字,所以可以确定这个六位密码都是数字,SHA1之后比较,暴力即可 对照:https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id import hashlib a=[] fo
阅读全文
摘要:normal1 一开始用的IDA7.0,逆出来少个传参看半天没看懂( 换7.5就可以 #include<iostream> #include<cstdio> #include<cstring> using namespace std; int clc(int a) { if(a>=110&&a<=1
阅读全文
摘要:放进IDA看main,发现比较函数: 根据意思写个脚本就行了 这里有个错误,就是查看三个数组值的时候是这样的 下面的2是高位,我一开始没注意直接删了就老是不对…… #include<iostream> #include<cstdio> #include<cstring> using namespac
阅读全文
摘要:发现不能用IDA,用PEiD看是32位的.NET 然后用dnSpy打开,查看02000003处的代码 发现这里直接求出了flag,所以下断点,然后运行到这里查看b的值 就行了
阅读全文
摘要:拖进IDA,发现jugde部分反编译不出来 然后看main函数 7-11行有奇怪的操作(好像是花指令?),所以写个IDApy s是judge的起始位置,运行脚本后,将有红色报错的代码按U(取消原来定义),再按 C(重新生成汇编代码),选中600B00-600BB5(judge 的起止位置)按P(重新
阅读全文
摘要:拖进IDA看伪代码,找到main函数 进到这个函数看一下 大概意思就是顺序遍历传进去的a1数组并更新a2的值直到a2=2或8为止,要使result返回1,所以能倒推出a1数组 然后看这里 就是普通的异或,把刚求出来的数组和unk_8048760位置的数组异或一下即可 #include<iostrea
阅读全文
摘要:放进IDA,先看看字符串窗口 flag是假的,另一串字符串看着比较可以,然后看看right所在的函数 照着写一遍代码,输出: 不太对劲,倒着输出一下: #include<iostream> #include<cstdio> #include<cstring> using namespace std;
阅读全文
摘要:载入IDA,然后发现main里主要用了三个函数,分别分析一下 这个是乘 这个是加 这个是减 把简化版本的函数运行一下即可 #include<iostream> #include<cstdio> using namespace std; int sub_401000(int a1, int a2) {
阅读全文
摘要:因为不会动态调试所以完全是IDA静态做的 反编译一下,关键伪代码是这部分: 如果会动态的话绕过check_key()就行了,这里静态直接进入interesting_function(): v4是这一段: 然后flag_data是这一段: 这一句 v2 = *(_DWORD *)(4 * i + v4
阅读全文