赛后题解
文章平均质量分 62
5WDD
这个作者很懒,什么都没留下…
展开
-
NKCTF2024-Eznative
看到上层函数,其实这个sub_27F2d4是有符号的,我这里写wp的时候没有导入全部,名字叫做dialog,那么写过安卓开发的就知道这玩意就是弹窗了。然后在之前给出的GitHub项目中,发现其实他的enc出来的结果就是base64的,所以我们直接使用库就可以解密了。在old中也是有符号的,很明显的base。这里有个巨jb坑的地方,我点了n次一直不触发,后面来脾气了,长按一下,结果。短按是用来触发aaa的,当时hook过aaa,发现短按确实能触发。触发了,tnnd,后面发现应该是这个aaa与bbb的问题。原创 2024-03-25 00:39:29 · 622 阅读 · 0 评论 -
[BeginCTF]真龙之力
在AndroidKiller中将Mainfest文件修改成android:testOnly:"flase"或者直接删除这一句,然后编译签名安装就可以了。具体逻辑就是通过填充00然后置换之后与密文进行比较,正确则输出”YOU GET IT“不正确则输出交换的结果。可以发现android:testOnly:“true”,也就是导致我们无法安装的主要原因。可以发现算法只是涉及到了密文的位置置换,不涉及任何的加密等。出现了安装失败的标签,开发者不允许测试。使用-t参数直接测试安装。两个按钮的监听事件,原创 2024-02-08 20:25:22 · 1889 阅读 · 3 评论 -
[网鼎杯 2020 青龙组]singal 1
在主函数中找到了一个vm的译码器,译码器主要是解释传入的opcode,然后对我们输入的字符操作,这里我们发现他是单字节比较的,方法很多可以使用单字节映射,也可以是使用符号化执行,当然也可以硬着头皮去看。原创 2023-12-01 23:34:00 · 522 阅读 · 0 评论 -
ISCTF-Reverse-WriteUP
处理程序的调用顺序。如果参数为非零值,则处理程序是要调用的第一个处理程序。如果 参数为零,则处理程序是最后一个要调用的处理程序。保证坐标向下递增,同时放入byte_434d3c中,比较byte_41C0A0,那么byte_41C0A0保存的就是我们的坐标。发现有5个地方出现重复值,hint给出了正确答案的md5,那么我们排列组合产生32组数据判断哈希。TEA的加密流程为加密一号位和二号位时取三号位,最后两位取第一位作为key。那么会发现当加密78位时,使用的key是加密后的1位,因此我们需要倒序解密。原创 2023-11-30 01:09:02 · 310 阅读 · 0 评论 -
[Reverse][HGAME]kunmusic
dll文件检查之后发现是.net直接使用dnspy反编译发现这里在对这个data做什么处理下断点动态调试查看内存发现mz文件头,将数据dump出来,构成一个新的dll文件再使用dnspy反编译music类中发现了约束求解的逻辑,揭秘之后在和enc异或就可以得到flag。原创 2023-02-02 16:54:44 · 133 阅读 · 0 评论 -
[Reverse][Hgame2023]patchme
点开文件可以看到一个可疑函数对文件地址进行操作跟踪过去看一看发现地址爆红,出现大量没有被解析的数据段那么我们猜测这里是对文件进行保护的一个函数,那么我们将其异或回去,使用idc或者idapython运行idapython脚本之后发现本来ida无法识别的汇编代码变得可以识别了,那么我们声明所有的未声明函数就可以在下面找到输出flag的方法了。原创 2023-02-02 16:27:28 · 160 阅读 · 0 评论 -
[SWPUCTF 2021 新生赛]easy_md5
由于php中存在==的弱类型比较,所以我们可以通过hash比较的缺陷去绕过也就是只要两个数的md5加密后的值以0e开头就可以绕过,因为php在进行弱类型比较(即==)时,会现转换字符串的类型,在进行比较,而在比较是因为两个数都是以0e开头会被认为是科学计数法,0e后面加任何数在科学计数法中都是0,所以两数相等,在进行严格比较(===)时才会先判断字符串类型是否相等,在比较。像这样特殊的md5值还有。原创 2023-01-16 14:52:41 · 1633 阅读 · 0 评论 -
[Revserse][BJDCTF2020]encode
那么flag长度是21的话,经过base64加密之后应该是28位数,但是v6中存储的却只有49位数字,这是因为这个字符串有些01或者0E被识别成了1和E。首先将v6地址上存储的数据进行rc4解密,然后循环异或,最后再使用base64变表解密,就行了。sub_80481D0是将base64加密后的数据存到v5 + 18 的地址上面。文件将输入点放在v6数组的第50个地址上面,输入之后判断长度为21.题目中这个v6的字符串,由于ida的原因是分析错误了的。然后文件进入了sub_8048AC2进行了加密。原创 2022-12-28 17:28:13 · 273 阅读 · 1 评论 -
2022年春秋杯godeep
我们可以发现引用回来的函数,在上面就是1在下面就是0,那么我们可以发现函数头地址减去引用点的地址如果小于111那么函数就是在上面的,然后我们就通过idapython来进行判断然后输出。欸,发现正好是123123,那么逻辑就是很明显了,就是把我们输入的东西变成二进制,然后通过二进制里面的01来判断进入if里面的上面的函数还是下面的函数。主函数里发现了一个hint,告诉我们如果我们成功了就会输出一个right。发现输出了我们想要的二进制数据,不过可能是我的脚本太烂了。发现这个就是输出right的函数。原创 2022-12-25 22:27:49 · 96 阅读 · 0 评论 -
[Reverse]2022年春秋杯easy_python
直接看到题目文件显然这是一段python文件的字节码,看到129行之前的一连串的赋值语句,加上数组名字叫做flag我们可以知道这个就是我们需要解密的明文,那么我们再看接下来的加密部分看到这个指令,就是进行一个循环,也就是189-54=135那么就是135行到189行设置了一个循环,迭代器是0-42可以看到循环的主要内容就是,首先拿到flag[i]的值然后右移5位然后再取flag[i]的值,然后左移3位,然后将两个值进行位或运算之后再与255再存入flag[i]原创 2022-12-25 15:36:56 · 116 阅读 · 0 评论 -
[第五空间 2021]StrangeLanguage
由于pyd文件的本质就是dll文件所以我们直接使用ida64来反汇编程序就好了。字符串中可以发现这个数据,很明显这个数据就是brainfuck代码。反编译main.pyc文件后可以发现里面只是单纯的调用了一个文件。运行之后就可以得到一段反编译过来的python代码了。然后我们看后序的加密,根据逻辑推断可以发现是异或,此处发现大量的赋值语句,显然这就是enc了。我们直接利用python脚本将其解释。我们找到这个brainfuck文件。修改逻辑后将这一段代码输出来。并且是本位异或下一位的数据。原创 2022-12-25 01:38:03 · 328 阅读 · 0 评论 -
[Reverse]2022弱口令安全招新赛 tea
TEA算法使用64位的明文分组和128位的密钥,它使用Feistel分组加密框架,需要进行 64 轮迭代,尽管作者认为 32 轮已经足够了。该算法使用了一个神秘常数δ作为倍数,它来源于黄金比率,以保证每一轮加密都不相同。但δ的精确值似乎并不重要,这里 TEA 把它定义为 δ=「(√5 - 1)231」(也就是程序中的 0×9E3779B9)原创 2022-12-24 12:46:22 · 201 阅读 · 0 评论 -
[Reverse]NISACTF 2022 string
C 库函数 void srand(unsigned int seed) 播种由函数 rand 使用的随机数发生器。原创 2022-12-24 12:43:55 · 76 阅读 · 0 评论 -
[Reverse]NISACTF 2022 string
C 库函数 void srand(unsigned int seed) 播种由函数 rand 使用的随机数发生器。原创 2022-12-24 12:40:46 · 210 阅读 · 0 评论 -
[Reverse]首届“天权信安&catf1ag”网络安全联合公开赛checkin
进入这个界面看到pushad就可以确定是有壳了,我们按f8单步运行至mov指令。(这里直接nop会从E8变成90,我们需要先把90单独按c转化为nop指令)然后一直按f8直到程序第一次跳转后再按f8 就是找到了程序入口。选择刚刚重命名的文件,就可以看到桌面上出现了,就是脱壳成功了。接下来发现下面还有红色的部分也是按照上面的操作类似操作。再把数据E8用nop填充然后逐行按c转化为代码。讲红色部分全部框住然后按p声明之后进入函数。操作到这里然后把上面的代码都括住按p声明。这样的数据都按c转化为汇编代码。原创 2022-12-24 12:38:40 · 390 阅读 · 0 评论 -
[Reverse]BABYRE(idapython解题)
脚本内容就是每一位数字对0xC也就是12进行异或,我们这里需要使用到的是 PatchByte 函数.(我个人的理解 PatchByte函数就是将后面的值赋值给前面的地址)这一段对judge函数进行了处理,那我们思路就来了我们只需要按照这个方式将judge数组里面的东西处理了之后再按c分析代码就可以出来judge函数了。循环的内容是将上面字符串循环13次恰好等于[rbp+var_13]的长度,也就是进行处理字符串。我们点击下面的run运行之后会发现judge的值已经被我们改变了。原创 2022-12-24 12:35:04 · 319 阅读 · 0 评论 -
[Reverse]NISACTF 2022 string
C 库函数 void srand(unsigned int seed) 播种由函数 rand 使用的随机数发生器。原创 2022-12-24 12:34:28 · 252 阅读 · 0 评论 -
[Reverse]crypt(rc4)
可以发现0x14000131B处出现了异或,也就是执行22行代码的位置,我们只需要把所有异或的v9储存下来然后与0x22和密文异或就行了。我们继续按f8当rip运行到。按f9进入动态调试,我们需要输入22位数据(flag长度为22位)该处时我们将鼠标放到rdx上可以看到里面的数值也就是此刻v9的数值。进入这个窗口后我们选中22行按tab进入汇编界面。反复操作22次我们可以得到如下数据。首先我们在这两处下断点。原创 2022-12-24 12:32:30 · 237 阅读 · 0 评论 -
[Reverse][NISACTF 2022]sign-ezc++(追踪命名空间)
例如,您可能会写一个名为 xyz() 的函数,在另一个可用的库中也存在一个相同的函数 xyz()。因此,引入了命名空间这个概念,专门用于解决上面的问题,它可作为附加信息来区分不同库中相同名称的函数、类、变量等。假设这样一种情况,当一个班上有两个名叫 Zara 的学生时,为了明确区分它们,我们在使用名字之外,不得不使用一些额外的信息,比如他们的家庭住址,或者他们父母的名字等等。我们举一个计算机系统中的例子,一个文件夹(目录)中可以包含多个文件夹,每个文件夹中不能有相同的文件名,但不同文件夹中的文件可以重名。原创 2022-12-24 12:31:04 · 463 阅读 · 0 评论 -
[NISACTF 2022]ezpython(PyInstaller封装程序反编译)
[NISACTF 2022]ezpython(PyInstaller封装程序反编译)原创 2022-12-24 03:28:35 · 878 阅读 · 0 评论 -
[BJDCTF 2020]Easy
[BJDCTF 2020]Easy原创 2022-12-24 03:27:48 · 206 阅读 · 0 评论 -
赛后题解11月 月赛 总题数11,4未解;
赛后题解原创 2021-11-30 21:33:28 · 322 阅读 · 0 评论 -
A. Jeff and Digits 赛后题解
A. Jeff and Digits 赛后题解原创 2021-11-29 21:23:05 · 200 阅读 · 0 评论 -
A. Jeff and Digits Codeforces 352-A 赛后题解
A. Jeff and Digits Codeforces 352-A 赛后题解原创 2021-11-29 20:09:10 · 2777 阅读 · 0 评论 -
B. Table Tennis Codeforces 879-B 赛后题解
B. Table Tennis Codeforces 879-B 赛后题解原创 2021-11-29 19:41:41 · 151 阅读 · 0 评论