2024春秋杯部分Re-wp+复现
day1earecustom_md5_init(seed);会检测断点,我们可以在输入和比较的数据下硬件断点,用写内存的方法把密文写回内存就可以在s1中看到flag。\n 密文:5C 76 4A 78 15 62 05 7C 6B 21 40 66 5B 1A 48 7A\n 1E 46 7F 28 02 75 68 2A 34 0C 4B 1D 3D 2E 6B 7A 17 45 07 75 47 27 39 78 61 0B ko0h前面的flag是假的,修一下jzjnz的花指令,可以看到主逻辑 魔改RC4 密文在sub_402A70()里,”DDDDAAAASSSS” 脚本如下 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657#include<stdio.h> #include<stdlib.h>#include<string.h>//s 表的长度取 256#defi...
IDApython初步使用和花指令的初步学习
ida版本为IDA9.0 用VScode编写IDApython 找到这个项目IDAcode,把下来的文件加到你ida的plugins文件夹中。 修改idacode_utils/settings.py中的PYTHON路径为本地的python路径 在本地中用控制台安装依赖 1python -m pip install --user debugpy tornado 在VScode中安装IDAcode插件 在VScode按CTRL+Shift+P输入”Open User Settings(JSON)”打开后添加如下代码。 123456"python.autoComplete.extraPaths": [ "E:\\CTFtoolsNEW\\Reverse\\IDA90\\python\\3" //你的ida库路径 ], "python.analysis.extraPaths": [ "E:\\CTFtoolsNEW\\Reverse\\IDA90\\p...
2024软件创新大赛部分Re-wp
主函数在start的第一个参数里面。去除如下花指令 一个rc4加密,密钥在第一个生成盒函数的参数里。第二个函数是加密函数,动调密钥会被修改。 在第二个函数的call处下断点动调就可以看到加密函数,进入加密函数后发现花指令,和上面一样的nop掉后可以发现魔改RC4。 我们输入一串字符进行动调,在主函数的unk_5C6CC0中下硬件断点。后面会断在如下位置,这里就是比较的位置。去除这里的花指令后就可以看到逻辑,密文就是上面这些。所有数据都已经拿到,记得把密文转一下端序(见python脚本),最后还有一个异或0x23。 密文:25cd54af511c58d3a84b4f56ec835dd4f6474a6fe073b0a5a8c317815e2bf4f671ea2fffa8639957 密钥:921C2B1FBAFBA2FF07697D77188C 1234567a = [0x0D3581C51AF54CD25,0x0D45D83EC564F4BA8,0x0A5B073E06F4A47F6,0x0F6F42B5E8117C3A8,0x579963A8FF2FEA71]b=&q...
常见加密和编码
Base64一种基于64个可打印的字符来表示二进制的数据的一种方法。 https://cloud.tencent.com/developer/article/1868972 动画演示 总的来说就是把原数据的二进制按3字节分块,后再按6位二进制分成4块,然后在每组二进制前面补00,变成8位(一块二进制内少于6位在末尾补0,三字节数据块内存在空字节就用等号补上。),按分块的二进制表示的值为索引到表中去寻找对应的元素。 解码时按4字节到表中寻找元素后计算索引按三字节恢复就行。 源码解读,来自 https://gitcode.com/g310773517/base64/overview?isLogin=1 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001...
python脚本
enumerate()12enumerate(obj) # 迭代器,输入可迭代对象,返回索引和迭代元素for i, char in enumerate(chars): fromhex()1bytes.fromhex(hex_char) # 输入十六进制,按两位转换为byte数据 join()12345separator.join(iterable) # 将可迭代对象中的元素连接成一个新的字符串。# separator:连接符,通常是一个字符串,表示元素之间的分隔符。# iterable:一个可迭代对象(如列表、元组、字符串等)要求元素是字符串。chars = "".join(chr(i) for i in range(32,127)) get()12345dict.get(key, default=None)# 获取字典中指定键对应的值。# key:要查找的键。# default:当指定的 key 不在字典中时返回的默认值。如果未指定,默认返回 None。plaintext += mp.get(bytes([b]), '?') # 用g...
2024长城杯初赛Re部分复现
dump原程序是一个命令行工具,需要用命令行参数来进行使用,使用方法是在命令行输入以下命令 1re.exe [data] 我们输入的数据会被加密,我们尝试输入几个字符就可以发现每个字符加密的对应结果是相同的,也就是单字节加密,那么我们就可以输入所有可打印字符得到加密后的结果,再把结果和原字符的数据映射起来就可以依据密文得出明文。 在这里密文被以二进制的形式保存都在flag文件中,我们需要用读文件的方式把密文读入。 脚本如下 在这个脚本中我尝试直接获得可打印字符,但是最后对比了其他人的wp,发现引号是不会被re.exe输出的,也就是如果你把引号也输入进去获取映射表,那么你的获得的映射表就会少一位,导致映射错误。在最后我们会发现还缺少了一个字符,但是base64编码的样子已经出来了,我们手动添加一个字符解码看看规律。 解码后我们会发现很多奇怪的数字,感觉上像是一个时间戳,于是我们过滤掉那些含有符号的结果,最终找到上面的结果,把每个都输入一下就可以发现flag就是(原题中告诉了我们第十三位为4,我们假设不知道,分析数据解决) flag{MTczMDc4MzQ2Ng=...
IDApython的初步学习
ida版本为IDA9.0 用VScode编写IDApython 找到这个项目IDAcode,把下来的文件加到你ida的plugins文件夹中。 修改idacode_utils/settings.py中的PYTHON路径为本地的python路径 在本地中用控制台安装依赖 1python -m pip install --user debugpy tornado 在VScode中安装IDAcode插件 在VScode按CTRL+Shift+P输入”Open User Settings(JSON)”打开后添加如下代码。 123456"python.autoComplete.extraPaths": [ "E:\\CTFtoolsNEW\\Reverse\\IDA90\\python\\3" //你的ida库路径 ], "python.analysis.extraPaths": [ "E:\\CTFtoolsNEW\\Reverse\\IDA90\\p...
AWD的一些杂物
Linux操作打包备份在 Linux 中,可以通过将 .tar 文件解压到指定目录来完成备份恢复。以下是详细步骤: 1. 解压到目标目录使用 tar 命令时可以通过 -C 选项指定目标解压目录。假设你的备份文件是 backup.tar,目标目录是 /home/user/restore,操作如下: 基本解压命令1tar -xvf backup.tar -C /home/user/restore -x:表示解压。 -v:显示解压的详细过程(可选)。 -f:指定解压的文件。 -C:指定解压的目标目录。 2. 备份目录打包恢复如果你有一个备份文件夹 mydata,需要先打包备份,然后再恢复,操作如下: 备份文件夹到 .tar1tar -cvf backup.tar /path/to/mydata 恢复到指定目录如果目标目录不存在,可以先创建: 1mkdir -p /home/user/restore 然后执行解压: 1tar -xvf backup.tar -C /home/user/restore 3. 带压缩的备份与恢复压缩备份使用 gzip 或 bzip2 进行压...
常用的adb命令记录
adb命令初始化查看设备1adb devices 指定设备操作1adb -s 设备 指令 查看Activity/包名查看运行中的包名1adb shell dumpsys activity top 第二种方法 123adb shellsudumpsys activity top 查看安装应用的包名123adb shellsupm list packages 根据某个关键字查找包1pm list packages | grep ... 端口转发(IDA)1adb forward tcp:23946 tcp:23946 端口转发(frida)1adb forward tcp:27042 tcp:27043 root启动1adb root 获取root在shell下执行 123456su -c "resetprop ro.debuggable 1"su -c "resetprop service.adb.root 1"su -c "magiskpolicy --live 'allow adbd adbd ...
调试学习
arm文件 安装qemu-arm虚拟机以及依赖 1234567891011apt install re2capt install ninja-buildapt install build-essential zlib1g-dev pkg-config libglib2.0-devapt install binutils-dev libboost-all-dev autoconf libtool libssl-dev libpixman-1-dev libpython-dev python-pip python-capstone virtualenvapt install libpixman-1-devapt install bison flexapt install mesonapt install libpixman-1-devapt-get install libpcap-dev libnids-dev libnet1-devapt-get install libattr1-devapt-get install libcap-ng-dev qemu-arm –versio...