05 2023 档案
摘要:#得到一个c++的源文件:进VSCODE也行,devc++也行IDA也行: ###得到一个方程组,解开就行,大力推荐手搓(增加数学的能力到了)~~(我不用)~~典型的z3,上脚本: s = Solver() v, w, x, y, z = Ints('v w x y z') s.add(v * 23
阅读全文
摘要:#题目告诉我们要走迷宫了嘛,那么主要就是找地图: #查壳: ##64位,进IDA: ###创建地图?跟进去看看: ###看看num里装了啥: ###emm挺长的,有能力的小伙伴可以手搓一个地图,反正我没手搓出来QWQ ###再看看判断,说是走54步,且check满足,那么先动调拿到地图吧,上步骤:
阅读全文
摘要:#查壳: ##32位,进IDA: ###发现进不了思维图那,且看到了爆红点: ###什么办法,没办法,nop掉呗,这里注意,不是全部nop掉,(这里只用nop掉一个): ###这里+1,那么我门只nop第一个就好: ###选中jmp那段内容,ctrl + alt + k: ###点patch,就行,
阅读全文
摘要:#查壳: ##64位,没什么信息,进IDA: ###能看到有三个加密,都通过的话就是正确的flag,也给了我们最后的密文"EmBmP5Pmn7QcPU4gLYKv5QcMmB3PWHcP5YkPq3=cT6QckkPckoRG" ###由于我们是要返回flag那么我倒回去看加密,先看encode_t
阅读全文
摘要:#(这道题不难,就是费眼睛) #查壳: ##发现是js写的一个文件,(64位处理)进IDA: ###转成字符串后会有一堆东西,看不懂吧,我也看不懂(主打还是一个懒)你把他们全转化了也可以看懂,这里鼓励你,我直接把它扔进VSC里(支持任何语言(yyds)): ###没IDA的复杂,找呗: ####异或
阅读全文
摘要:#查壳: ##熟悉的配方,解包,反编译吧:进入.py文件: ###题目是走迷宫,进去后也发现了地图,那么我们将它打印出来: ####得到这么一张地图,那么看看起点和终点,起点:第一行第二个,终点:最后一行倒数第二个。画地图咯: ###得到Des = 'sssssddssddssaaaassssddw
阅读全文
摘要:#查壳: (后来发现:但凡有这玩意的都和解包有关) ##32位,运行,发现让我们输入一个key,进IDA: ###把能找的都找了,愣是没发现什么,除了一个类似base64的编码,实在没办法,去看了大佬的文章,说是py下的exe的解包,跟据大佬们的思路来了一波,果然出来了。 ###开始吧,首先是将该运
阅读全文
摘要:#查壳: ##64位,操作系统是ubantu的,可能会有所不同稍加留意一下,进IDA: ###依旧是比较题,我们先看看s2里的内容:‘TlNTQ1RGe2Jhc2VfNjRfTlRXUTRaR0ROQzdOfQ==’ ###目标是v3,看看v3调用的函数sub_124C: ####base64?看看
阅读全文
摘要:#查壳: ##64位,进IDA: ###好家伙,不给看伪代码,来吧汇编走起: ####设置两个段,一个数据段(dseg),一个额外段(seg001)看看吧,dseg段中的内容'hgame{Fill_in_your_flag}' ####seg001段中的内容:(不想说话) ####关键: ####逐
阅读全文
摘要:查壳: 发现里边有个压缩包,弄出来看看: 再查壳看看: 啥也不是,把它扔进IDA: 没有伪代码,一个字‘找’,关键点(是否IDA能成功反编译,还是说用了java的反编译才行,是否有flag或者CTF之类的字样): 发现特殊字样,跟进: 大写String?大胆点进jadx: 成功,告诉我们什么?要大胆
阅读全文
摘要:#查壳: ##发现是一个.pyc的文件,有啥好说的吗?直接 uncompyle6 咯得到.py文件: ###双击进入: ###有些人会因为from那行出错,应该是没装包,可以cmd,然后pip install pycryptodome ####大概就是将,从password.txt中读出一串密码 #
阅读全文
摘要:#查壳: ##64位,进IDA: ###看正确输出: ####有要比较的两个字符a5mc58bphliax7j和Buf1,可以知道目的字符串是a5mc58bphliax7j,跟进看看: ####再看看Buf1,可以看见它是根据我们输入的字符进行sub_401570方法后得到的,那么我们跟进: ###
阅读全文
摘要:#查壳: ##双击吧: ###简单的逻辑,不要怕那个循环,也不要去纠结那个循环。 ####首先看我们要找的是啥:b1嘛,也就是将flag每个字符转化成十进制后,再转成二进制,一个字符的二进制接后一个字符的二进制链接而成的字符串,再将这串字符串转为十进制。也就是b1 ####由除法原则我们知道,要想还
阅读全文
摘要:#查壳: ##有壳,32位,先脱再进IDA: ####上来就给答案:得到NSSCTF{Just_upx_-d}{Just_upx_-d}
阅读全文
摘要:#查壳: ##64位,进IDA: ###进来后发现c++经常用的std,(当然用c++的也有可能不经常见),跟进伪代码,找输出: ####有个判断跟进Human::~Human看看: ####调用了一个方法,字符串又指向了name,跟进方法:off_4863D0: ####发现存了一个基地址:跟进基
阅读全文
摘要:#查壳: ##64位:进IDA: ###进来就给flag:跟进: ###一堆东西,秉承着赶时间的优良作风,只看有用的输出: ###挺简单一个随机数问题,找种子就行: ####上脚本: int main(){ srand(10086); for (int i = 1; i <= 13; i++) {
阅读全文
摘要:查个壳: 没得东西:双击进去咯: 随机序列问题: 这里要提几点点: 一:同一个种子下获得的再次获得的随机数是相同的 怎么理解这个呢,上图理解: 能看到我们两次的随机数是完全一样的,但是如果不加random.seed(1)这一句或者将种子换了,就不一定会得到相同的数字了: 二:random.getra
阅读全文
摘要:#查壳 ##64位,进IDA: ###你会发现,啥也没有,别急,再找找:空格切换视图: ####往下走: ####发现这里存了一堆东西:A转化成字符串: ####继续找: ####发现转化不了,看看是不是程序爆了: ###发现:是这条代码爆红了,没发现堆栈不平衡,试试nop掉: ###发现依旧没用,
阅读全文
摘要:#查壳: ##进入: ###不是很难的逻辑,浅浅来个爆破过了:(这里提醒一下,如果实在逆推不出来,可以考虑爆破,爆破应该是RE里人手一个的必备) result1 = 'v0b9n1nkajz@j0c4jjo3oi1h1i937b395i5y5e0e$i' flag1 = '' num = 0 for
阅读全文
摘要:#查个壳: ##64位,运行: ###进IDA看看: ####简单加密函数,不多赘述上脚本就好: int main(){ string Des = "ylqq]aycqyp{"; string flag = ""; for (int i = 0; i < Des.size(); i++) { for
阅读全文
摘要:#拿到一个.py的文件,查个壳: ##进入看看是怎么个解密: ###挺长,感觉还有点像RC4的加密方式(这个不讨论),往下看逻辑: ####首根据输出,我们能知道,加密后的文档应该是enc,enc又是由crypt而来,crypt又是由cipher而来,而cipher又是由res而来: ###看看re
阅读全文
摘要:#C的源代码,查个壳: ##一般都是64位,直接双击吧,换个界面,成天看IDA也不好: ###也是简单的一个异或加密,上个脚本就好了,不多说啥: Des = 'd`vxbQd' flag = '' for i in Des: flag += chr((ord(i) ^ 2) - 1) print(f
阅读全文
摘要:#得到.exe,先查壳: ##么得壳,64位:运行一下看看:是个字符串的比较:进IDA: ###简单的一个加密(不多解释了)上个脚本就行: Des = '{34sy_r3v3rs3}' flag = '' for i in Des: if ord(i) == 51: flag += chr(101)
阅读全文
摘要:得到一个.py文件,一般是没壳的,不过还是要养成习惯,查个壳: 意料之中,啥也没有,打开文件: 给了我们一个加密逻辑,然后最后一行给了一个结果:那么就是根据上述的逻辑,反解密出flag就好了 分析一下上述逻辑: 首先对list进行变化得到key的值(怎么变化不用理,因为用不到,为啥?因为是异或昂,而
阅读全文
摘要:#查壳: ###有壳32位,脱了,看看运行:无法运行,那么进IDA看看: ####找个主函数: ####发现没了,那么再找找 ####密文?不确定,跟进看看: ####来到一个输出正确flag的地方,可以知道Des就是我们要找的东西:去看看有谁调用过它: ####有两,第一个就是上图的输出,那么我们
阅读全文
摘要:查壳 有壳,脱了 进入IDA: 会发现我们看不了伪代码,那么看看爆在哪了: 这有标红的,那么把这里改了(IDA改的有点麻烦,建议用OD贼快)这里注意哦,报错点上边还有一个jnz跳转指令,这个是指向报错点的,那么要不要改呢?小小的期待一下: 接下来演示怎么改,这里注意这个call占了很多个字节,我们只
阅读全文
摘要:#日常查壳: ##32位,运行看看: ####(有点嚣张,但不多),任意输入退出。 ###进IDA看主函数: ####进入主函数后,首先是读入一个字符串,然后是对该字符串进行sub_401080方法加密,最后是对比。 ####那么我们跟进方法,看看是什么加密类型: ####第一眼下去还多了一个方法s
阅读全文
摘要:#查壳: ####32位,有个小壳,怎么办,脱了呗,还能这么办(方法见前文)https://www.cnblogs.com/TFOREVERY/p/17366210.html ###脱壳后,进入IDA找主函数: ####脸上就是flag{Just_upx_-d}收工。
阅读全文
摘要:#查壳: ###64位,先看看运行有问题吗: ####任意输入给你弹了一个wrong ###进IDA看看: ####解释:输入一个字符串,要满足字符串的长度为33,不然就报错。接下来是在输入的字符串中拿出特定的字符,进行异或后得到一个新的字符串,最后与特定的字符串对比。 ####这样看来,我们先看要
阅读全文
摘要:#查壳: ##64位,进IDA找主函数: ####挺长的,慢慢来吧,先找正确的判断输出:涉及到了v11,又涉及到到方法sub_400E44,跟进方法看看: ####出现位运算,和aAbcdefghijklmn,跟进看看: ####标准base64编码,那就是说v11是根据v18base64加密了10
阅读全文
摘要:#下载回来发现有两个文件,先看另一个文件 ####一串数据,(我调整过了的哈不要在意这些细节)看不出有啥用。 #依旧查壳: ##64位进IDA找主函数: ####解释一下函数内容:大概是讲打开一个“flag”的文件,读了一部分文件(flag没跑了),然后进行加密(奇数位一种加密,偶数位又是另一种加密
阅读全文
摘要:#查壳: ##有个壳,脱一下,upx脱壳方法讲过了,(这里注意,低版本的upx是脱不掉壳的,换高版本哈)可以去:https://www.cnblogs.com/TFOREVERY/p/17366210.html ####不赘述了:64位进IDA老思想进主函数: ###对输入flag进行一个方法加密s
阅读全文
摘要:#查壳(养成习惯了,不管有没有用都要来那么一下): ##发现没啥,进IDA瞅瞅: ####给了一堆字串,且没有主函数,那么我们退出IDA,运行一下: ###checkflag,那么必定有方法去检查这玩意:继续找F12: <!DOCTYPE Html /> <html> <head> <title>F
阅读全文
摘要:#查壳(两个文件,依旧是看内存大的那个文件就行) ##32位,进IDA,找主函数: int func() { int result; // eax int v1[4]; // [esp+14h] [ebp-44h] unsigned __int8 v2; // [esp+24h] [ebp-34h]
阅读全文
摘要:#查壳 ##进64IDA,找主函数 --> 会发现没有主函数,字符串查找也看不懂 ####看着有点意思,跟进去看: ####全是一些定义啥的,但是在注释那里我们能看到一种标志 --> JAVA语言的String(不确定是不是由他而来的,再看看),空格切换“视图” ####好家伙,this (JAVA
阅读全文
摘要:#下载回来后,有两个文件 ##查那个内存大的就行,上边那个扔着不管就行 #查壳 ##32位,进IDA,老套路,进主函数 int __cdecl main(int argc, const char **argv, const char **envp) { _BYTE v4[12]; // [esp+1
阅读全文
摘要:养成习惯,不管它是啥,都先查壳 可以看出这是一个.py的文件,所以要反编译成py的文件,这里用的是uncompyle6 安装如下:cmd命令下输入如下:pip install uncompyle6(回车) 使用如下:uncompyle6 (目标文件) > (转换成的文件的名字).py(这里注意,要在
阅读全文
摘要:这道题有点绕,还是得耐心点。(个人讲的也不是很好,如果有错的话还原谅,欢迎指出) 查壳 32位,进IDA,找主函数,发现没有,但在查找的时候发现有个有点类似加密过后的字符串 进去瞅瞅 INT_PTR __stdcall DialogFunc(HWND hDlg, UINT a2, WPARAM a3
阅读全文
摘要:#查壳 #32位 ##这道题我是通过OD绕过,直接得到答案的,具体就是找到获取flag的窗口,通过爆破,直接让它给出答案(自己调就很麻烦,我自己调了好久,后边找不到入口了都qwq) ###具体方法就是找到该弹窗的函数,进入,然后找到它测试次数的方法,再进入,通过修改参数,让他认为我们已经达到次数,然
阅读全文
摘要:#查壳 ##64位,进IDA,老套路进主函数 unsigned __int64 get_flag() { unsigned int v0; // eax int i; // [rsp+4h] [rbp-3Ch] int j; // [rsp+8h] [rbp-38h] __int64 s; // [
阅读全文
摘要:#(这里是个解题的分界,涉及到了java,以后还会碰到py)依旧查壳。 ##java的一般都是64位,按照老套路扔进IDA中,你会发现,你看不懂它在干嘛了,而且没有伪代码给你看了,因为IDA无法反编译java的文件,我们需要另一个软件jadx-gui来进行对java文件的反编译。拖进工具里,如下:
阅读全文
摘要:#查壳 ##64位,进IDA,老办法,找主函数 unsigned __int64 Decry() { char v1; // [rsp+Fh] [rbp-51h] int v2; // [rsp+10h] [rbp-50h] int v3; // [rsp+14h] [rbp-4Ch] int i;
阅读全文
摘要:#查壳 ##32位,拖进IDA,老方法,找到flag,进入伪代码 int __cdecl __noreturn main(int argc, const char **argv, const char **envp) { char v3[29]; // [esp+17h] [ebp-35h] BYR
阅读全文
摘要:#查壳 ####拖进32位IDA,老办法 ####随便进入一个,进入伪代码 int __cdecl main_0(int argc, const char **argv, const char **envp) { size_t v3; // eax const char *v4; // eax si
阅读全文
摘要:#APX文件 #查壳 ##拖进64IDA,老方法 ####得到flag{7631a988259a00816deda84afb29430a}收工。
阅读全文
摘要:#~~~它说附件有用????(没见用到)~~~ #查壳 ##64位,进IDA,老方法(伪代码) int __cdecl main(int argc, const char **argv, const char **envp) { int i; // [rsp+2Ch] [rbp-124h] char
阅读全文
摘要:#查壳 ##发现是upx的一个壳 ##得脱壳,不然找不到flag,不信的可以自己拖进IDA中看看能不能找到flag ###我用的是OD绕过了它的壳 ###比较快的是脱壳软件直接脱壳,然后拖进IDA中就有flag了 ##我先讲怎么用OD绕壳 ####运行程序 ####发现它让我们输入一个正确的flag
阅读全文
摘要:#查壳 ##进IDA ####没见目标,shift+F12 --> ctrl+F ####进来就看见一个段:DBAPP{49d3c93df25caad81232130f3d2ebfad}(盲猜一手,不是flag,也跟flag有关) #####~~~把这个交上去了发现直接过了(真的是flag)~~~
阅读全文
摘要:#查壳(查位数) ##64位,拖进IDA ####方法依旧,F5看伪代码 int __cdecl main(int argc, const char **argv, const char **envp) { int result; // eax int stat_loc; // [rsp+4h] [
阅读全文
摘要:#依旧先查壳(看几位) ####没壳64位 ##考虑IDA或者OD都行(看个人习惯,OD需要很大的功底)建议先从IDA开始 ##拖入IDA看看 ####发现没有想要的东西 --> shift+F12 -->(可以ctrl+F) --> 也可一个个找关键字flag ####发现right flag -
阅读全文
摘要:#很简单的一个小练手 #这里习惯性的先查壳(养成习惯)(也可以查是几位的) ####无壳 ##不管是进OD还是IDA都是直接出答案 ###拖入OD如图 ###拖入IDA ####很明显flag{this_Is_a_EaSyRe} #####不需要动什么脑子,会拖入就行
阅读全文