reverse
文章平均质量分 82
NSSCTF,攻防世界,BUUCTF
波克比QWQ
CTF菜鸡新手
展开
-
攻防世界reverse_box
进入汇编来查看随机数的生成:and之后,取出eax(本身是32位),只取用eax的低8位作为种子密钥来生成box,因此可以在调试的时候将eax的值设置为。这里思路就是得到v4这盒子,然后用应该输出的数据对盒子进行逆查找,用值查其再盒子中对应的下标,根据题目要求的flag格式。来判定爆破的结果是否符合要求,或者,在输入部分正确的flag。进入bos分析:利用随机生成的数(非0)的。,在盒子中对应的下标即为。继续爆破,然后根据偏移为。观察输入的第一个值是否为。12. 最后的最后,参考了。原创 2024-05-16 16:44:18 · 1057 阅读 · 0 评论 -
攻防世界[asong]
题目地址:攻防世界 (xctf.org.cn)ida进入,可以看到就几个函数,进去逐一分析功能:首先时接受用户的输入,再check一下flag的形式,接着读取girl文件来初始化v4,最后进行flag的加密。字频替换(交换位置change_sit加密,逆向的顺序先做后做无所谓):位置交换逆向:最后:听下 that girl 喽:原创 2024-05-22 19:29:16 · 480 阅读 · 0 评论 -
攻防世界[GoodRe]
循环结束后续重复调用了四个一样的函数,这里推测大概率是加密函数了(后续直接就判断并输出error),但是v11,v12,v13似乎还并未初始化,这里直接去看汇编观察传入了哪些参数:这里是传入了两个地址,一个是前面初始化的v14,一个是,前面初始化的我们输入,这里换一个清晰点的输入。进入main函数看逻辑:要求输入的长度为64,完事后进一个循环,while循环中处理了一堆数据,后面加密时使用,依次看这两个函数。原创 2024-05-26 21:54:49 · 916 阅读 · 0 评论 -
2024蓝桥杯CTF--逆向
蓝桥杯CTF(付费CTF),逆向题难度签到题难度,题目质量。。。。,也难怪圈。原创 2024-04-27 14:33:17 · 1812 阅读 · 0 评论 -
攻防世界reverse
/ 共享资源// 互斥量// 线程函数sleep(4);// 睡眠3秒,让2先拿到共享资源i < 10;i++)// 锁定共享资源count = 1;// 如果不解除共享资源,那么下一个线程永远不会开始sleep(3);count = 2;sleep(2);sleep(1);int main()// 储存创建线程的ID// 初始话互斥变量// 两个线程同时运行,但是遇到互斥量时,先拿到共享资源的线程优先执行// 创建第一个线程// 创建第二个线程。原创 2024-04-06 17:39:17 · 717 阅读 · 0 评论 -
ESCTF赛题WP
4. 其实现的功能仍然是一样的,只不过将一个循环里的多个语句放在了不同的子模块中,再通过子模块之间的相互控制,来达到原有程序的效果。5. 知道控制流平坦化后,可以使用符号化执行来简化程序,使程序的可读性增强,便于反汇编,使用deflat.py脚本即可去除平坦化:命令如下。7. 这里可以看到,去平坦化后的程序刻度性增强,不过其中还有一些出题人塞进去的虚假指令(恒真/假),永远不会执行。脚本的逻辑**:将jnz指令的条件跳转修改为直接跳转,因为后面的。,后面的while循环同理,只会执行一次,因此利用脚本将。原创 2024-03-25 17:16:39 · 1425 阅读 · 0 评论 -
攻防世界乱刷
maze查壳无,直接使用ida打开,这应该时一道迷宫的题,打开后如下。分析,发现这是一道直线迷宫的题,解这类题目只需要找到该直线迷宫,分析键盘输入对应的移动操作即可,迷宫如下:在主循环中分析输入的flag对应的移动操作,可以看到0 后退1=79,前进1=111,后退8=46,前进8=48,由cmp函数可以看见只能停留在空格和分析出输入对应的移动操作后,即可走完迷宫,操作对应如下,代码附上:# 0 后退1=79# 1 前进1=111# 2 后退8=46# 3 前进8=48最后flag=原创 2024-03-21 15:11:36 · 908 阅读 · 1 评论 -
攻防世界[EASYHOOK]
hook(钩子),就是在执行程序的时候在程序的某个位置(一般在开头位置),安装一个钩子(实际上就是段内跳转的jmp指令),这个钩子的作用时跳到去执行其他函数,从而对当前函数进行阻断。当然,也可以,另外加一个程序在执行完hook的目标函数后,可以对当前被hook的函数进行恢复(上面的题目就是这种),然后再调用它(即上面题目中的writefile函数)。下面我给出一种简单的hook程序,对print_hello函数进行hook,不让其打印hello world,反而其打印我们指定的其他字符串:\n");原创 2024-03-23 22:17:23 · 1248 阅读 · 1 评论 -
BJDCTF2020[encode]
题目:encode,地址:encode查壳发现时upx壳,使用工具脱壳命令"upx -d ",如果遇到工具脱不了的壳就手动脱壳,手动脱壳请帅哥美女*们看这篇手动脱壳。使用ida打开,观察逻辑后重命名函数:逻辑为一个换表base64 + 异或 + RC4。其中RC4可以根据函数传入key,进而生成Box盒子来判断:知道逻辑后,先用RC4脚本解密,key=“Flag{This_a_Flag}”,密文为“E8D8BD91871A1E56F53F4889682F96142AF2AB8FED7ACFD5E”原创 2024-03-14 21:30:03 · 635 阅读 · 1 评论 -
CrackRTF
hash算法可根据其编号来选择。.rtf文件的开头必须为{\rtf1。使用工具可以查看文件内容。原创 2024-03-13 21:25:28 · 995 阅读 · 1 评论 -
[使用Z3解方程组/数独][CISCN 2021初赛]babybc
3)、根据分析,提取出map,row,col三个数组后编写脚本,利用。第一个if来保证输入在字符"1"~"5"的范围内。发现其将输入的flag,每5个一组进行判断,上为1时,则要求map数组左边大于右边。上位2时,则要求map数组右边大于左边。上为1时,则要求map数组下面大于上面。上位2时,则要求map数组下面小于上面。时,要求输入的flag必须为 "0"。# 添加条件: 填的数字为1-5。# 添加条件: 一行中不能有相同。# 添加条件: 一列中不能有相同。# 添加条件: 有两个位置已知。原创 2024-02-29 09:06:15 · 1005 阅读 · 0 评论 -
[网鼎杯 2020 青龙组]singal
[网鼎杯 2020 青龙组]singal题目出处:[题目](https://www.nssctf.cn/problem/1232)最终flag{757515121f3d478}总结本体和上一篇vm逆向类似,分析出指令的硬件编码后还原指令即可逆向出flag题目出处:题目进入到main函数,主函数的逻辑非常简单,一个copy函数将地址在 &byte_403040 处长度为456的数组付给v4,再调用一个vm_cpu函数,想必解题的关键就在vm_cpu函数:观察vm_cpu函数的逻辑发现是一个取原创 2024-03-09 15:59:44 · 1023 阅读 · 0 评论 -
buuctf/nssctf乱刷不喜勿喷
2019红帽杯]easyREida打开文件进入main函数中:观察第一部分为简单的异或操作,然后与前面的字符串进行对比cmp,注意要将前面三个字符串拼接起来,ida将其使用三个数组存放,实际上他们在内存中是连续的。脚本如下,注意中间存在两个(127):得到的字符串如下:Info:The first four chars are ‘flag’,提示前四个字符为flag往后看有第二次输入,长度为39,而后进行了10次base加密,再与off_6cc090处的字符串进行比较。将其逆向输出后发现是一个网址。原创 2024-03-11 22:10:03 · 973 阅读 · 1 评论 -
[Smc自加密,变表base64,Xor][羊城杯 2021]BabySmc
都是将字符的ASIIC码的二进制(8位)进行切分,每6个一组,最后通过。5)、根据逻辑写出逆向脚本,先异或 , 再base64换码表解密。2)、进入汇编中查看代码,发现反编译失败的部分全是数据,则肯。总结:中总的来看加密过程,其与base64的加密。(换码表的base64加密)4)、分析加密函数,逆向出flag。3)、为解决Smc自加密,可以分析。从中取值,最后再进行异或操作。定是Smc自加密无疑,其中。后的值 , 则作为V32的。让程序自己解密出函数。自此,函数正常显示。原创 2024-02-29 09:17:02 · 455 阅读 · 0 评论 -
你知道junk code吗[花指令][WUSTCTF 2020]funnyre
回头再分析花指令:发现垃圾数据 jz(74) 和 call(E8)插入的位置在,0000000000400616和 000000000040061A,其与后面的数据一起被分析成了错误的指令。发现花指令仍然存在,原因是call后面的地址错误,推测这条语句原本就不是call,而硬件编码E3就是花指令,导致跳转的地址出错。1)、查壳发现没壳,用ida64打开,首先直接进入main函数。F5无法反编译,发现花指令。2)、去除花指令, 首先patch去掉jz的硬件编码74(修改位90“nop”)原创 2024-03-06 13:10:02 · 550 阅读 · 1 评论 -
BUUCTF刷题记录
似乎我们输入的flag(v6) ,但这肯定是不可能的,只能说我们输入的flag放入的内存位置由其他变量指向这里,从而有其他变量变向引用了输入的flag值。4)、进入动态调试后,查看v7,v8,v9的内存可以发现其居然分别指向输入的flag的不同字节(OMG)。v7,v8,v9赋值给数组v5后,v5即相当于flag,重新观察循环逻辑,发现是一个查表行为,3)、修改if语句的判断条件,这里需要懂一些汇编语言的跳转指令逻辑,并切与C语言结合。3)、打好断点后,动态调试,观察内存状况。原创 2024-03-06 22:48:21 · 404 阅读 · 1 评论 -
[RGB][HDCTF2023]basketball
分析发现其中参与异或的str与第一段的加密并无联系,所以第一段加密完全可以置之不理,直接分析第二段加密流程。根据推测的key,再对key进行扩充(题目加密要求key长度为28,不足则需要使用key前面的字符向后补充)发现其加密流程仅为简单的异或,因此只需直到密文和key即可还原出flag。因此,直接跳过array,在根据题目flag的加密流程位。:观察第二段加密流程发现,其选哟手动输入参与异或的。发现是使用key进行某些处理后逐位异或,其中,顺利解出flag,提交通过,可以的推测正确。原创 2024-03-03 11:25:49 · 532 阅读 · 0 评论 -
[DFS深度优先搜索][MoeCTF 2022]Art
但是由于题目存在多解,直接循环暴力破解会导致得到的不是想要的flag,因此要破解出所有满足条件的flag。2)、采用深度优先搜搜,则不用考虑循环层数过多的问题,每次试探一种情况,试探到头,后再试探下一个情况,直到将flag的每位每种字符(ASIIC码上)都试探到。算法推荐 : 将求某个数的全排列 / 将 n 个卡片放入到 n 个盒子中,输出所有的放法。1)、直接只用广度优先搜索,会导致循环的层数过多,一共28层,顾放弃。:顾名思义,只要路能走即一直走到头,直到不能走在退回来试探别的路径。原创 2024-02-29 09:24:44 · 399 阅读 · 1 评论 -
[魔改TEA]1.[GDOUCTF 2023]Tea 2.[HNCTF 2022 WEEK2]TTTTTTTTTea
3、知道TEA加密流程(判断是否未魔改TEA编写相应的解密算法),进入enncodeTEA函数观察加密流程,发现是魔改XTEA,迭代的每次循环使用加法和移位操作,对明文和密钥进行扩散和混乱,实现明文的非线性变换。1、密钥)打开IDA虽然直接给出了密钥,但是观察函数,其中的change函数对密钥进行了修改。(两个32位的无符号整数,共64bit),和加密的。3.观察加密解密函数,编写相应脚本(C++)(四个32位的无符号整数,共128bit)相较于普通的TEA算法进行修改。"),进行相应处理后拿到key。原创 2024-03-02 15:06:38 · 1159 阅读 · 0 评论 -
[虚拟机保护逆向] [HGAME 2023 week4]vm
根基题目来看,这是一道虚拟机保护逆向的题,这里的虚拟机不是传统意义上像VMware 的虚拟机,这里只是一个程序执行了像cpu取指令、执行指令操作,与汇编指令类似,但是这里的指令硬件编码经过了作者的修改(opcode), 再结合其本身的编译器,和一些cpu的环境,来实现类似于cpu执行指令的操作,给逆向增加难度。利用所学的汇编只是分析汇编指令实现的功能: 输入的flag与内存中flag数组后面偏移50的数据进行加法,后于偏移位100处的数据异或,然后执行位移操作(实际上是高8位与低8位互换)原创 2024-03-08 15:36:26 · 2612 阅读 · 1 评论 -
[SWPUCTF 2021 新生赛]PYRE
1、利用pyinstxtractor反编译题目所给的文件2、在给反编译出来的code文件加上python的魔术头(在struct文件里面E3字节前面)后直接使用python在线网站反编译出python源代码。3、利用vscode稍做修改(ctrl + F2一键修改相同变量)后如下:4、得到源码后直接分析加密过程:init函数并没有对flag做变换,仅仅对S列表进行初始化。原创 2024-03-04 16:36:28 · 1147 阅读 · 3 评论 -
[花指令、互补跳转][HZNUCTF 2023 final]虽然他送了我玫瑰花
是作者写入的垃圾数据,从而构成的花指令,那么与其一起受影响的指令应该位于其后方,但是本题互补的花指令位于其前方,所有垃圾数据不是74。构成了第二个跳转指令,而数据C7则被独立出来无法与其他数九构成指令,进而导致ida无法反汇编。: 发现互补跳转的花指令时,垃圾数据为前一个跳转指令的跳转字节(如 75(jnz))就是因为在nop处的垃圾数据75,导致其与后面的02构成一个跳转指令,进而。(jnz) 导致ida错误的将原指令反汇编成错误指令,2)、分析指令,导致花指令的原因是:在数据。: 为什么不是将后面的。原创 2024-02-29 09:21:59 · 495 阅读 · 2 评论 -
[广东强网杯 2021 个人组]goodpy
打开文件,python字节码,决定直接人脑翻译成python源代码。总结python字节码读懂并不难,由一定的规律可循。总的源代码如下:最后写入文件的操作不包含在内。原创 2024-03-03 17:27:19 · 983 阅读 · 0 评论 -
手动脱壳[HZNUCTF 2023 final]signin
手动脱壳时时刻关注esp寄存器,来找到正真程序的入口。原创 2024-03-10 15:47:56 · 1497 阅读 · 1 评论 -
[patching修改代码强制拿到flag][HNCTF 2022 WEEK2]getflag
方法1)运行程序发现需要点击10000次才能显示flag,因此联想到直接修改数据或是判定条件(注意:但是在利用ida进行动态调试时发现汇编代码没有修改过来,因此在动态调试时再修改一遍即可。找到getflag()函数,发现其需要满足一个判定条件,因此直接去修改这个判定条件。方法2)再程序中找到加密后的密文,根据加密函数编写脚本逆向出flag。在ida中进入到getflag函数里面,发现遗传加密后的密文。直接观察getflag函利用脚本逆向出flag。1)、ida打开程序,利用程序中的。)来变相输出flag.原创 2024-02-29 09:08:34 · 551 阅读 · 0 评论 -
[Smc/patch修改][HGAME 2023 week3]patchme
菜鸡ctfer原创 2024-03-01 15:30:18 · 2120 阅读 · 0 评论