- 博客(98)
- 资源 (1)
- 收藏
- 关注
原创 “天一永安杯”2023宁波市第六届网络安全大赛 re wp
这里会看高位是0还是1,0就会触发异常,我们的sum会进行异或。一直f7,循环就跳过。upx壳,被魔改了。so文件比对,base64直接解。发现有花指令,全patch掉。发现是RC4,但是有改动。然后就可以正常f5看了。
2023-05-28 23:34:35
723
原创 安恒9月赛re1
main里面先对输入进行异或在加1,进func1。有个花,jz,jnz,0xe8的花直接去。至此,异常处理完毕,主要看这个函数干嘛。所以在func1前面改成跳到这里。get it,太菜了re2寄了。让我们不等于这个进func2。这里要把表全体加个1。
2022-09-19 15:23:39
150
原创 HSCTF2021 re
baigeiRSAimport libnumfrom Crypto.Util import numberfrom secret import flagsize = 128e = 65537p = number.getPrime(size)q = number.getPrime(size)n = p*qm = libnum.s2n(flag)c = pow(m, e, n)print('n = %d' % n)print('c = %d' % c)真白给直接写from
2022-05-17 22:53:12
529
原创 [SUCTF2019]hardcpp_一道混淆题,熟悉控制流平坦化
首先用IDA打开,发现有很多while(1),大量代码混淆其中利用defalt进行控制流平坦化去混淆找到主函数地址好了开始执行输入 python .\defalt.py hardCpp 0x4007E0等几分钟后会执行完毕顺便说一下符号执行的原理符号执行大概是将内存寄存器值当成未知变量就像设一个方程当成x往下执行遇到分支保存一下尝试各种分支执行到你想要的地方后续可以约束求解好了,我们再打开逻辑清晰很多了进行分析每...
2022-05-09 15:25:45
795
1
原创 WUST_2021校赛re-AskforU
进入程序,刚刚做出来,先按照我做出的顺序来把发现无法f5直接看汇编花指令,我们直接nop掉。为了平衡栈箭头指向的地方全部nop同样,还有另外2处,全部nop掉,然后创建函数可以f5看逻辑了int __cdecl main(int argc, const char **argv, const char **envp){ const char *Str1; // eax const char *Str2; // [esp+14h] [ebp-E4h] int i.
2022-05-03 02:48:15
574
原创 WUST2020部分WP
[WUSTCTF2020]B@se密文:MyLkTaP3FaA7KOWjTmKkVjWjVzKjdeNvTnAjoH9iZOIvTeHbvD== JASGBWcQPRXEFLbCDIlmnHUVKTYZdMovwipatNOefghq56rskxyz012789+/oh holy shit, something is missing...明显base64,少了4个A44=24次,可以先找出缺少的4个字符,然后排序挨个解密#include<stdio.h>#include&
2022-04-30 22:58:26
641
原创 wustctf2021 Crypto RSA1
描述from Crypto.Util.number import bytes_to_long, getPrimefrom secret import flagp, q = getPrime(1024), getPrime(1024)n = p * qe = 0x10001s = pow(1314*p - 520*q, n - p - q, n)c = pow(bytes_to_long(flag), e, n)print(f'n = {n}')print(f's = {s}')pri
2022-04-30 20:44:49
1091
原创 BUU刷题第一集合
第一题easyreida查壳直接看flag{this_Is_a_EaSyRe}第二题reverse1定位到Str2{hello_world}根据 for ( j = 0; ; ++j ) { v8 = j; v2 = j_strlen(Str2); if ( v8 > v2 ) break; if ( Str2[j] == 'o' ) Str2[j] = '0'; }把o换成0flag{hell0_w0r...
2022-04-29 23:57:13
1134
原创 [HDCTF2019]bbbbbbrsa
题目描述from base64 import b64encode as b32encodefrom gmpy2 import invert,gcd,irootfrom Crypto.Util.number import *from binascii import a2b_hex,b2a_heximport randomflag = "******************************"nbit = 128p = getPrime(nbit)q = getPrime(nb
2022-04-24 19:19:47
3267
原创 [ACTF新生赛2020]crypto-rsa3
题目描述from Crypto.Util.number import *import gmpy2import randome=65537p = getPrime(512)q = int(gmpy2.next_prime(p))n = p*qm = bytes_to_long(FLAG)c = pow(m,e,n)print(n)print(c)#n=17760650483649924697095903022687160888596932177821105
2022-04-24 15:29:46
1323
原创 [ACTF新生赛2020]crypto-rsa0
首先涉及MISC一个伪加密伪加密原理:zip伪加密是在文件头的加密标志位做修改,进而再打开文件时识被别为加密压缩包。 一般来说,文件各个区域开头就是50 4B,然后后面两个字节是版本,再后面两个就是判断是否有加密的关键了方法:遇到504B0304,把其的第3、4个byte改成0000遇到504B0102,把其的第5、6个byte改成0000即可破解伪加密。直接解压from Cryptodome.Util.number import *import randomFLAG=#
2022-04-24 00:11:06
1230
原创 2022DASCTF Apr X FATE 防疫挑战赛 CRYPTO easy_real
逆向一道都不会,寄了。只做了密码的签到题题目描述import randomimport hashlibflag = 'xxxxxxxxxxxxxxxxxxxx'key = random.randint(1,10)for i in range(len(flag)): crypto += chr(ord(flag[i])^key)m = crypto的ascii十六进制e = random.randint(1,100)print(hashlib.md5(e))p = 6431...
2022-04-23 19:24:06
903
原创 IDA在linux下的动态调试的准备
记录一次ELF文件在linux下的调试,以*CTF2022的 simplefs为例。我们已经知道是ELF文件,并且确定到加密函数v4的值显得尤为重要,v4经过一个函数加密而来。我们进入我们难以分析,使用IDA动态调试启动我们的虚拟机一定要是Linux的,确保这个2个文件在虚拟机,这2个文件在IDA目录下的dbgsrv中,直接复制到虚拟机即可现在IDA下入一个断点在虚拟机中chmod a+x ./linux_serverx64 改变文件属性...
2022-04-22 22:35:41
2156
原创 网络安全空间导论密码学作业实现
好久之前写的,不过我这代码也确实没啥长进凯撒加密#include<stdio.h>#include<string.h>void m();//菜单void getinput(char input[]);//获得字符串void encrypt(char eninput[],char input[],char map[]);//加密void decode(char deinput[],char input[],char map[]);//解密int main(){
2022-04-18 23:59:16
4513
原创 2022DASCTF X SU 三月春季挑战赛 easyre
有壳aspack,一般遇到都是upx,网上搜了aspack脱壳工具都没脱成功,使用手脱手脱aspcak打开od下面使用ESP定律法进行脱壳push压栈了,我们观察到esp中的值变红了,改动了。在内存窗口中转到下这个地址下硬件断点运行软件,断到了。接着f7pop出栈,我们发现有个大规模跳转,应该就是oep了调用api,是oep准备dump一下使用Lord Pe先修正大小,然后dump这个时候,我...
2022-04-06 11:46:58
577
原创 wust-ctf2021校赛-re-findit 一道smc题
无壳,32位进去直接f5看main函数我们注意到这个把ssd的地址给了we地址存储的数据被异或了写ida的idc进行异或ida的idcpy可以写我这里用的是idc我们要找函数尾巴pop ebx,pop esi,pop ebp retn 这些标志函数结尾直接限定给出定义函数到这个函数尾,有些看不懂的数据直接,按c强行转换成汇编指令全部转换后可以回到ssd,这个时候可以看f5看伪代码函数加载出来了...
2022-03-27 00:53:27
802
原创 1464. 数组中两元素的最大乘积
原本用冒泡排序直接写的int maxProduct(int* nums, int numsSize){ int max = 0; int i,maxs = 0; for(i = 0;i<numsSize;i++) { for(int j = 0;j<numsSize-1-i;j++) { if(nums[j]>nums[j+1]) { int temp; temp
2022-03-27 00:23:22
1134
原创 GWctf-2019-pyre
拿到文件pyc,直接反编译得到源码l = len(input1)for i in range(l): num = ((input1[i] + i) % 128 + 128) % 128 code += numfor i in range(l - 1): code[i] = code[i] ^ code[i + 1]print codecode = [ '\x1f', '\x12', '\x1d', '(', '0',
2022-03-12 16:11:21
834
原创 汇编1 c中汇编
汇编函数调用push 参数1push 参数2call 内存地址或者mov ecx,参数1mov edx,参数2call 内存地址2 ,c语言中的函数调用函数名(参数1,参数2)总结:函数名就是编译器给起的内存地址的别名全局变量1,编译的适合就已经确定了内存地址和宽度,变量名就是内存地址的别名。2,如果不重新编译,全局变量的内存地址不变。游戏外挂中找的基址,其实就是找全局变量3,全局变量任何程序可以改,是公用的。(CE)局部变量1,其函数内部申请
2022-02-20 21:57:01
3250
原创 硬件hook
硬件hook的技术1,用来脱壳。2,游戏辅助。3,反调试。什么是线程?什么是EIP?EIP是指向下一个执行的代码,是寄存器进程是不能执行的,不能跑起来。我们的进程能执行是线程来进行辅助。宿主(进程)和寄宿者(线程)二者关系。cpu存在线程,在操作系统,线程是全局概念。线程上下文。即时不时运行。#include < iostream > #include <windows.h> using namespace std;int main() { C
2022-02-20 21:54:20
1077
原创 逆向疑问解集
逆向疑问解集1,为什么OD不能搜到字符串,而IDA能搜到?(干死只会搜字符串的小白)OD搜索字符串功能的实现是一个插件(本身不具备),我用的吾爱破解的大佬写的。大佬的插件功能是findascll函数中,它会取得反汇编中内存的模块的地址。判断push,lea,mov;例如找到push了,push ebp它会判断ebp里面是不是字符串。而判断字符串的标准是是否以\0结束,是的话则是字符串。如果是个结构体,里面有字符串则无法读取,例如01 00 00 00 d7 a2 b2 e1 ca
2022-02-20 21:52:29
1048
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人