QLNUCTF2024_Round2 Re方向超详细解题wp
前言:希望大家多多复现,把这些题目都学会,不要辜负了学长的一片苦心出题和写wp真的很费时间…….
大家加油!
C++是最棒的语言考点:c++,异或签到题,考点就是一个简单的签到,但是用c++写的,看起来有点头疼,其实也没什么啦,因为就一个异或9
至于其他的部分都是一些初始化和定义的部分,不需要看,也没有内置的函数,
可以直接拿赛博厨子秒了
当然自己随便整一个python脚本也是可以的!
exp1234567string = "XEG\\rJ\"\"V8zV}a:Vk:z}Vehgn|hnlV8gV]alV^9{8mt"result = ""for char in string: result += chr(ord(char) ^ 9)print(result)
flag:QLNU{C++_1s_th3_b3st_language_1n_The_W0r1d}
Debug_me考点:远程动态调试,rc4本题是两个做法,动态调试法和直接逆向法
出题的时候就是想检测一下各位动调能力,所以只要成 ...
QLNUCTF2024_round2 Re出题源码
前言学习的意义在于分享,希望下面的出题源码对大家出题或者理解题都有一定的帮助!貌似我也发布了好多相关出题源码的文章了,可以找机会汇总一下然后归一个专栏了??!专注于新生赛出题的jww???好久没整理博客了 ,下次一定!
C++是世界上最好的语言就是一个简单的c++,灵感来自寒假打的某个比赛(那个比赛直接就是flag,但是我是一个异或(我很不理解为什么那么多人没签上到,是因为不喜欢吗??
12345678910111213141516171819202122#include <iostream>#include <string>int main() { std::string Flag("XEG\\rJ\"\"V8zV}a:Vk:z}Vehgn|hnlV8gV]alV^9{8mt"); std::string input; std::cout << "please input flag:"; std::cin >> ...
吾爱2024红包题 and、win 中/初级题
前言过年的时候忘了,没打…….现在来复现复现 应该还是可以学到很多东西的被and中级题搞到心态了
Windows【2024春节】初级题1
找到输入的函数,flag的长度大概是36位
111111111111111111111111111111111111
直接动调出来了,flag在v7
fl@g{H@ppy_N3w_e@r!2o24!Fighting!!!}
Android【2024春节】初级题1难度不高,秒的题
在吾爱经常玩的小猫游戏,当然可以直接玩通关,但是出于逆向,还是逆一下吧
extractDataFromFile()方法就是游戏通关之后拿到的flag函数,是在后一个文件下进行检索 flag{ 字符然后输出到 } 字符,应该是上面的一个mp4的视频,flag应该在哪个文件十六进制的末尾处
hook代码
12345Java.perform(function () { var YSQDActivity = Java.use("com.zj.wuaipojie2024_1.YSQDActivity"); var mmm = YSQD ...
HSCCTF RE WP
0x00.前言打了整整两天,re也是ak了,不容易
总榜11,可惜了没进前十,前十有纸质证书来着
0x1.TEA这题误导我了,我一直在纠结htoi函数是加密方式
刚开始对输入进行判断,前几位是否是flag{然后就是把flag的内容由-进行分段,所以flag的形式大概是flag{1111-2222}这样
然后这样输入去动调看密文
密文有两段,第一段有一个数组进行索引,index的下标是3,1,0,2,然后一位一位地去加进去,最后得到的密文是0xb805d767
第二段密文可以直接动调拿到: 0x63c174c3
然后就是一个简单的tea加密,秘钥2234
直接上脚本:
12345678910111213141516171819202122232425#include <stdio.h>#include <stdint.h>void decrypt (uint32_t *v,uint32_t *k){ uint32_t v0=v[0],v1=v[1],sum=0xC6EF3720,i; uint32_t delta=0 ...
安卓逆向学习----objection的安装以及使用--快速抓包
安装objectioh是对frida进行了封装,只需要命令就可以完成hook操作,很方便很实用在安装objection之前,也是要安装frida和frida-tools,并且版本最好是接近frida的版本
pip install frida==14.2.18
pip install frida-tools==9.2.5
pip install objection==1.11.0
装好了就是这样的:
使用:objection的使用可以说是非常简单了
注入进程,如果objection没有找到进程,会以spwan方式启动进程
查看帮助:objection –help
注入进程的方法:objection -g <进程名> explore
hook的结果存放在:objetion log 文件位置 C:\Users\Administrator.objection
常见的hook指令:
123456789101112131415161718192021222324252627282930313233343536373839404 ...
从出题角度浅层实现代码混淆1---花指令
什么是花指令?花指令(也称为乱序执行指令)是计算机体系结构中的概念,它描述了处理器在执行指令时可能发生的一种现象。
在现代处理器中,为了提高性能,处理器通常采用乱序执行(out-of-order execution)的方式执行指令。这意味着处理器可以以任意顺序执行指令,并且在保持程序语义正确的前提下,尽可能地并行执行多个指令。
然而,由于某些指令之间存在数据依赖关系,即后续指令需要等待前面的指令完成才能执行,因此处理器需要进行指令重排序(instruction reordering)。在指令重排序的过程中,处理器可能会将一些后续指令提前执行,而不必等待前面的指令完成。这样的指令重排序和乱序执行可以提高处理器的效率和吞吐量。
然而,有些指令之间存在控制依赖关系,即后续指令的执行取决于前面的分支(如条件语句)的结果。在这种情况下,处理器可能会进行分支预测(branch prediction)来猜测分支的结果,并且在猜测正确的情况下继续执行后续指令。如果猜测错误,处理器需要将之前已执行的指令丢弃,并重新执行正确的指令路径。总的来说,花指令就是一堆垃圾代码,虽然会增加cpu运行的负担,但是 ...
i春秋冬季赛reverse
假期天天学车,这比赛没太好好打就坐了坐re的牢
UPX2023都说好像有一个壳但是不能直接脱掉,据说是在010里把UPX改成了upx(出题人nb话说之前校赛做过类似的题,但是我一般遇到这样的壳就直接脱壳机嗦了
分析部分
随后看一下代码
去掉了符号表,点进去简单看了看每一个函数,分析起来估计是有点费时间,直接动调看看数据的变化吧,这里直接尝试性输入:flag{111111111111111111111111111111111111}位数一定要对不然会退出
本质上就是一个异或,然后对输入的数据进行了一个比较抽象的排列,大概是这样的:
现在问题就来到了有一个为随机数需要去爆破
获得伪随机种子已知flag的前几位是flag{,所以直接去想办法爆破种子
文件的修改日期是2023/6/3 11:29所以可以得到一个时间戳
得到了一个时间戳范围之后,就根据异或和排列,进行强制爆破时间戳:
代码如下:
12345678910111213141516171819202122232425#include<stdio.h>#include<stdlib.h>i ...
CTFwiki复现---反调试解决方案
鸽子我回来了!本篇文章全部参考:https://ctf-wiki.org/reverse/platform/windows/anti-debug/example/
反调试题目也是里面的bin.exe三十二位反编译之后发现整整齐齐的一坨反调试代码:
在ctfwiki的界面上介绍了每一个反调试的原理和应用,在这里就不多说,因为其实这些反调试技术说白了也只是一些代码,在汇编层面也只是一个call去调用,然后jz或者jmp去调整的判断,所以只需要在汇编方面使用keypatch去修改一些关键数据或者数值就可以达到目的了。
函数的主体外层逻辑就是一个判断输入是不是 “I have a pen.”,如果是的话就会进行下面哪些的反调试函数
简单的看一下第一个反调试代码为例:
简单读一下IsDebuggerPresent部分:首先就是调用IsDebuggerPresent函数去判断是不是调试模式,然后把返回的数值放到a8(不是精确位置,着指的是:[ebp+var_A8])位置(据猜测,肯定返回值是一个1)然后使用cmp的指令判断a8位置的数值是不是1,如果是的话,就不跳转,如果不是的话就跳过下面的代 ...
强网杯s7 强网先锋三道简单的re题wp
强网杯,哎…….我还是太菜了!
下面这些题还算是可以出的,就一起写了,后面的那些比较难的题我就慢慢复现吧!ps:很抱歉之前的wp写的有点乱,这边重新整理一下
Babyre【强网先锋】(xtea魔改)
先通过字符串定位到main函数
12for ( j = 0; j < 4; ++j ) sub_14001106E(&v5[2 * j], &v5[2 * j + 1]);
有一个四次循环的调用函数,并且传入的参数是v5,v5之前有和input一起调用的函数,可能v5就是cmp的input
里面是一个xtea byte_14001E000里面的key也就是内容存放的地方:
但是经过代入脚本发现这个key有问题,可能是在函数运行的时候对key做了手脚
动调看看 因为程序在直接动调的时候怪怪的,所以就通过载入进程的方式调,然后找到xtea的位置进行查看,找到了key:
del和sum也找到了,在图里,密文如下
并且这个加密的调用方式也是四个一循环,然后2i和2i+1的方式进行加密,解密也这样就可以了 最终脚本如下:
123456789101112131415 ...