![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
REVERSE
文章平均质量分 55
Angel~Yan
这个作者很懒,什么都没留下…
展开
-
[BUUCTF]Reverse——[WUSTCTF2020]funnyre
[WUSTCTF2020]funnyreELF文件,无壳,用ida64打开,程序没法f5,从程序入口点找到main函数的汇编部分因为这边没有创建函数,所以无法f5在选取汇编部分打算创建函数的过程中发现了不对劲的地方jz和jnz跳转到同一地址,花指令,nop掉,然后那个call看着也不太对的样子,先也nop掉,call下面的那条jz也nop掉。经过多次测试,要从第一条jz指令nop到xor eax,eax之前一共有4处需要修改nop掉,修改完后,发现一共有两端函数没有创建,拿一处说一原创 2021-07-13 18:02:08 · 1309 阅读 · 1 评论 -
[BUUCTF]Reverse——[CFI-CTF 2018]IntroToPE
[CFI-CTF 2018]IntroToPE例行检查,发现是 .NET逆向运行一下,看看大概的情况让我们输入密码,点击validate会检查密码是否正确.net逆向用dnSpy打开,在左侧,找到程序名的目录 ,就能找到程序的关键代码了找到绑定在validate按键上的代码,它是button控件检验flag2,flag2的值由flag赋予,flag的值与validatePasswd.verifyPasswd()函数有关看一下validatePasswd.verifyPasswd();原创 2021-07-12 16:12:18 · 423 阅读 · 0 评论 -
[BUUCTF]Reverse——特殊的 BASE64
特殊的 BASE64无壳儿,直接用ida打开 ,习惯性的检索程序里的字符串根据题目这道题应该是道变种的base64,在字符串列表里也看到了base64加密后的字符串,只是这个密码表跟常见的有点不大一样,常见的base64的密码表应该是ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/而这题的看到的类似密码表的字符串是AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYy原创 2021-07-12 15:42:24 · 2620 阅读 · 0 评论 -
[BUUCTF]Reverse——[SWPU2019]ReverseMe
[SWPU2019]ReverseMe例行检查,32位程序,c++写的,无壳本地试运行一下,看看大概的情况程序里有好多复杂的函数,静态分析有点难度,这边选择动调理一下程序逻辑。汇编动调小白,简单记录一下自己的调试过程。找到程序的入口点,在这边下断点,f8单步直到让我们输入运行到call sub_CF37B0的时候开始让我们输入了,输入结束后将ebp-0x90处的值跟0x20比较,更改ZF标志位,0xCF28C7处的jz会根据这边的情况进行跳转,如果ZF标志位为0,则跳转,否则就会输出Try原创 2021-04-12 14:10:23 · 1923 阅读 · 2 评论 -
[BUUCTF]Reverse——[2019红帽杯]childRE(C/C++函数名修饰)
[2019红帽杯]childRE例行检查,64位程序,c++写的,无壳儿试运行程序没有得到有用的提示,检索字符串看到有关flag的提示信息,跟进来到关键函数截取关键部分代码分析循环遍历去取outputString字符串中的字符,然后分别对23取余和除数,做为下标,分别在str3中找到对应位置,而且还必须与str1和str2对应位置的值相等先来逆算一下outputstring中的字符串str3 = '1234567890-=!@#$%^&*()_+qwertyuiop[]QWER原创 2021-04-10 19:46:26 · 393 阅读 · 0 评论 -
[BUUCTF]Reverse——[FlareOn1]Bob Doge(c#逆向)
[FlareOn1]Bob Doge例行检查 ,64位程序,c++写的,无壳本地试运行一下,看看大概的情况,安装程序???搞了半天,以为是逆向安装程序,逆了半天没看懂,查了wp之后知道了是要逆向这个安装包安装后的程序。心态炸裂。检查一下安装的程序,32位,c#写的,无壳试运行一下,点击decode,真·手动狗头用dnspy打开,找到decode按键上的代码程序进行了三次运算,得到了text,text2和text3,最后回显text3。不太会用dnspy,不知道dat_原创 2021-04-10 14:35:26 · 949 阅读 · 0 评论 -
[BUUCTF]Reverse——[MRCTF2020]PixelShooter(apk)
[MRCTF2020]PixelShooter这题主要是使用安卓逆向的工具,试了很多,发现jeb最好用,百度爱盘在线工具包即可下载听大佬门说安卓unity游戏的核心逻辑一般位于assets\bin\Data\Managed\Assembly-CSharp.dll进入直接搜索{.flag{Unity_1S_Fun_233}...原创 2021-04-09 15:37:35 · 823 阅读 · 0 评论 -
[BUUCTF]Reverse——[ACTF新生赛2020]SoulLike
[ACTF新生赛2020]SoulLikeELF文件,应该没壳儿,在ubuntu里运行一下看看大概的情况直接上ida了如果能满足sub_83A()的条件,就能输出flag看一下sub_83A()sub_83A(),将传进去的v8进行了3007行的异或操作,然后得到v3里的值,如果不对,会将错误的地方的下标打印出来拿v3里的值反向异或一下应该就能得到flag,但是将sub_83A()里的代码复制出来后还要修改好一会儿,既然会将错误的那一位给打印出来,那就干脆爆破每一位吧,也不多,12位贴原创 2021-04-07 15:53:08 · 629 阅读 · 0 评论 -
[BUUCTF]——[FlareOn5]Ultimate Minesweeper
[FlareOn5]Ultimate Minesweeper直接勇,把所有雷都点一遍,就知道数字在哪里了例行检查试运行一下程序,扫雷?不管点哪儿都是雷,运气太差了吧c#的程序,用dnSpy打开,首先找到程序入口点百度一下里面出现的函数12行创建windwos窗体,MineField是雷区的封装,是游戏的核心组建;它负责方格的布局以及地雷的分布;并控制玩家的基本操作以及正确的响应。AllocateMemory创建雷区SquareRevealedCallback根据英文翻译方块字显示回原创 2021-04-06 14:43:42 · 930 阅读 · 0 评论 -
[BUUCTF]Reverse——[网鼎杯 2020 青龙组]jocker
[网鼎杯 2020 青龙组]jocker例行检查,无壳,32位程序运行一下看看大概的情况32位ida载入进入encrypt函数会报错,0x40151D处反编译失败40151D:无法转换为伪代码我一开始以为是堆栈不平衡导致,后来发现恢复后也没法f5看程序的逻辑,大概这边的代码被加密了,24~25行代码的作用就是给这个函数代码进行解密,这个函数后面在说,先继续往下看。wrong(),一个简单的加密函数omg()经过wrong处理的字符串得到unk_4030c0原创 2021-04-06 10:57:55 · 590 阅读 · 0 评论 -
[BUUCTF]REVERSE——[FlareOn5]Minesweeper Championship Registration
[FlareOn5]Minesweeper Championship Registration附件是jar程序,先运行看一下大概的情况,叫我们输入code直接用jd-gui打开看到一个域名,GoldenTicket2018@flare-on.com,看程序逻辑我们要输入的code就是它了flag{GoldenTicket2018@flare-on.com}...原创 2021-04-03 21:21:45 · 384 阅读 · 0 评论 -
[BUUCTF]REVERSE——[2019红帽杯]xx
[2019红帽杯]xx附件步骤PE文件,查壳儿,64位程序,无壳儿64位ida载入原创 2021-03-23 14:43:07 · 1428 阅读 · 3 评论 -
[BUUCTF]Reverse——findKey
findKey例行检查,32位程序,c++写的运行一下,没什么特别提示的地方32位ida载入,检索字符串发现flag提示,跟进跳转会发现中间有一段汇编没有转换成成函数,选中这部分,按p转换成函数,在按f5就能得到关键代码理一下,贴一下关键代码,这一段应该是计算flag的代码,根据sub_401005中有md5加密的api调用判断sub_401005是md5加密。太久没做用API进行字串hash的題目了,去微软的网站上查询了一下才认出来了是md5加密首先让我们输入string1原创 2021-03-23 10:41:59 · 516 阅读 · 0 评论 -
2021.红客训练营CTF第二场——Reverse部分wp
惯例吐槽没有pwn,试试Reverse1. whereisflagelf文件,无壳,直接用ida打开,检索字符串看到whereisflag,双击跟进找到关键函数拼接一下字符串得到flagCnHongKe{849bc02af213b4d}2. Reverse1运行一下程序,知道大概的情况32位程序,存在upx壳upx脱壳后用ida打开,根据运行时候看到的字符串,找到关键函数ida反编译的伪代码有些地方读不懂,直接动调分析函数这道题的逻辑就是:输入长度为11的字符串,逆序后每一位的原创 2021-03-06 15:33:15 · 578 阅读 · 0 评论 -
[BUUCTF]REVERSE——[ACTF新生赛2020]Universe_final_answer(z3求解)
[ACTF新生赛2020]Universe_final_answer附件步骤无壳儿,一般elf文件都是64位先在linux中试运行一下看看大概的情况64位ida打开,根据运行时候看到的字符串找到关键函数,输入一个字符串,经过sub_860和sub_C50得到flagsub_860()bool __fastcall sub_860(char *a1){ int v1; // ecx int v2; // esi int v3; // edx int v4; // er9原创 2021-03-05 12:24:01 · 330 阅读 · 1 评论 -
[BUUCTF]REVERSE——[WUSTCTF2020]level4
[WUSTCTF2020]level4附件步骤elf文件,虚拟机试运行一下看看大概的情况,根据提示字符Typing....Struct.....char....*left....*right............emmmmm...OK!猜测存在二叉树看到type1和type2里的字符串有点像flag,但是顺序被打乱了64位ida载入type1(byte_601290), 二叉树中序遍历:2f0t02T{hcsiI_SwA__r7Ee}type2(byte_601290),二叉树后序遍原创 2021-03-05 10:35:28 · 428 阅读 · 3 评论 -
[BUUCTF]REVERSE——[UTCTF2020]basic-re
[UTCTF2020]basic-re附件步骤elf文件,我一开始还在linux中试运行了一下,了解了一下程序大概的执行情况,静态分析用ida打开时直接检索字符串,就发现了flag,一开始还以为是假的,拿去试了一下是正确的。这几天遇到的题目不是动调就是各种加密函数,给这位出题人orz!!!flag{str1ngs_1s_y0ur_fr13nd}...原创 2021-03-05 08:49:39 · 471 阅读 · 1 评论 -
[BUUCTF]REVERSE——[GWCTF 2019]re3
[GWCTF 2019]re3附件步骤64位程序,无壳儿,直接用ida打开,首先是检索程序里的字符串根据correct跳转去找到有关flag的函数,下面能看到ABC……*/,猜测程序里存在base64加密这边没法f5,估计是jz的锅影响了ida的正常运行,先看一下上面的main函数main()输入的字符串长度为32位,利用mprotect函数将dword_400000处的0xF000长度地址修改成了可读可写可执行,sub_402219()里的数据进行了异或处理。可以看到sub_402原创 2021-03-04 19:48:40 · 1202 阅读 · 3 评论 -
[BUUCTF]REVERSE——[网鼎杯 2020 青龙组]singal
[网鼎杯 2020 青龙组]singal附件步骤例行检查,32位程序,无壳本地试运行一下程序32位ida载入,首先是找到main函数确定了flag字符串的样式flag{……}根据输入点的提示字符串,找到对应函数,确定了字符串的长度是15右击该函数,找到调用该函数的地方,来到了vm_operad()函数处,看main函数可以知道,vm_operad里的参数v4在上面一行调用了qmemcpy函数,百度上说逆向里的qmemcpy=memcpy,memcpy在c语言里的拷贝函数,在unk_4原创 2021-03-03 18:19:38 · 1093 阅读 · 0 评论 -
[BUUCTF]REVERSE——[GXYCTF2019]simple CPP
[GXYCTF2019]simple CPP附件步骤例行检查,64位程序,无壳试运行一下程序,看看大概的情况64位ida载入,首先检索字符串,查看有关flag的信息根据有关flag的字符串,找到关键函数main()太长了,就不直接贴了,一段一段看逆向逆向,我们肯定是从下往上看程序。首先是关于flag的判断,满足168的if判断,就是正确的flag,flag用GXY{}包裹sub_7FF603EF19C0()函数里面太长了,应该不是什么运算,应该是自己写的功能函数,结合sub_7原创 2021-02-04 14:15:44 · 1315 阅读 · 2 评论 -
[BUUCTF]REVERSE——[FlareOn3]Challenge1
[FlareOn3]Challenge1附件步骤例行检查,32位程序,无壳运行一下程序,看看大概的情况32位ida载入逻辑很简单,一开始让我们输入密码存在在NumberOfBytesWritten中,之后在15行对NumberOfBytesWritten进行了操作得到了str1,当str1=x2dtJEOmyjacxDemx2eczT5cVS9fVUGvWTuZWjuexjRqy24rV29q,输出correct!sub_401260()程序每三位一取,然后从39行开始做运算,加上原创 2021-02-03 17:42:42 · 990 阅读 · 1 评论 -
[BUUCTF]REVERSE——[GUET-CTF2019]number_game
[GUET-CTF2019]number_game附件步骤例行检查,64位程序,无壳64位ida载入程序很简单,一开始让我们输入一个字符串,存放在v5中,之后通过sub_4006D6()、sub_400758()、sub_400807()、sub_400881()、sub_400917()几个函数的操作,最后输出flag。sub_4006D6()sub_400758()sub_400807()sub_400881()给a1[]赋值sub_400917(),关键判断函数,满足该原创 2021-02-03 17:42:28 · 666 阅读 · 0 评论 -
[BUUCTF]REVERSE——[Zer0pts2020]easy strcmp
[Zer0pts2020]easy strcmp附件步骤例行检查,64位程序64位ida打开很简单的一个程序,将a2数组与zer0pts{********CENSORED********}进行比较,相同提示correct!然后就是要知道a2在进入main函数前经过了什么操作,应该是因为它不是exe文件吧,我没法动调,正常情况下是去动调找找看哪里对传入的字符串a2进行了操作,我在旁边函数列表里随便看看,找到了带有a2参数的函数右移3位相当于除8,也就是把字符串分为8个一组,对应和qwor原创 2021-02-02 19:48:01 · 715 阅读 · 0 评论 -
[BUUCTF]REVERSE——[ACTF新生赛2020]Oruga
[ACTF新生赛2020]Oruga附件步骤:例行检查,64位程序,无壳64位ida载入,检索字符串,根据提示来到关键函数14行~18行就是让字符串的前5位是 actf{ ,sub_78A()是关键函数,分析可知应该是迷宫byte_201020(推荐在16进制界面查看),查看迷宫图形这个移动方法有点意思,从左上角去往!,点代表路,其他符号是障碍物,点的时候会一直走,遇到障碍物才会停下,手动走一下flag{MEWEMEWJMEWJM}...原创 2021-01-09 14:02:45 · 398 阅读 · 3 评论 -
2020KCTF秋季赛签到题
比赛平台:https://ctf.pediy.com/game-season_fight-158.htm开场 签到题例行检查,64位程序,无壳试运行一下,看看大概的情况64位ida载入,根据运行时候看到的字符串找到关键函数这边推荐用ida7.5,当时用ida7.0 的时候f5后是下图的界面,没搞懂byte1和byte2是个什么意思,而且数组需要手动命名54~59行是对v19数组进行了操作得到了2;=EFI换上ida7.5反推计算一下Dst数组6~11位c = '2;=EFI'原创 2021-01-08 14:43:26 · 479 阅读 · 0 评论 -
[BUUCTF]REVERSE——firmware
firmware附件步骤:检查文件没有看出什么,ida载入一堆乱码,看了其他师傅的wp才知道要先binwalk对文件进行提取120200.squashfs这是一个linux的压缩文件我们需要firmware-mod-kit工具来进行解压。firmware-mod-kit工具:传送门安装步骤:sudo yum install git build-essential zlib1g-dev liblzma-dev python-magicgit clone https://github.原创 2021-01-07 16:43:14 · 385 阅读 · 1 评论 -
[BUUCTF]REVERSE——[WUSTCTF2020]Cr0ssfun
[WUSTCTF2020]Cr0ssfun附件步骤:例行检查,无壳儿,64位程序,直接ida载入,检索程序里的字符串,根据提示跳转看一下check()函数内嵌了几个检查的函数,简单粗暴,整理一下字符串,就是flagflag{cpp_@nd_r3verse_@re_fun}...原创 2021-01-07 14:34:45 · 537 阅读 · 0 评论 -
[BUUCTF]REVERSE——[FlareOn6]Overlong
[FlareOn6]Overlong附件步骤:例行检查,32位程序,不懂是个啥32位ida载入,main函数很简单处理函数sub_401000程序只对unk_402008的28位进行了处理,但是我看unk_402008并不止28位,实际长度是0xaf(0xb7-0x8)运行了一下附件,发现弹框里的数据长度也是28,结尾是:,让人总觉得后面还有东西将长度修改一下,让他将unk_402008完全处理一下看看,ida修改了不会保存,od动调修改需要将0x1c压入栈中,在栈中修改,我直原创 2020-12-18 15:32:11 · 878 阅读 · 0 评论 -
[BUUCTF]REVERSE——[WUSTCTF2020]level3
[WUSTCTF2020]level3附件步骤:例行检查,64位程序,无壳64位ida载入,找到关键函数看样子是个base64加密,但又感觉没那么简单,再翻翻左边的函数,找到了base64加密变表的函数将加密表变换一下写个解密expimport base64table = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='model = list("ABCDEFGHIJKLMNOPQRSTUVWX原创 2020-12-16 19:54:07 · 475 阅读 · 0 评论 -
[BUUCTF]REVERSE——[MRCTF2020]hello_world_go
[MRCTF2020]hello_world_go附件步骤:例行检查,64位程序,无壳64位ida载入,检索程序里的字符串,有很多,直接检索flag一个一个点过去,找到了flag按a,提取字符串flag{hello_world_gogogo}原创 2020-12-16 19:53:47 · 1234 阅读 · 0 评论 -
[BUUCTF]REVERSE——[GKCTF2020]BabyDriver
[GKCTF2020]BabyDriver附件步骤:例行检查,64位程序,无壳64位ida载入,检索程序里的字符串,看到提示flag是md5(input),下方还看到了类似迷宫的字符串找到关键函数从o出发到#结束,碰到*失败,只能走‘.’,但是这个上下左右md5加密出来的东西不对看了别人的wp才知道这里由于是sys文件,是由键盘过滤驱动获取键盘扫描码来控制上下左右,而不是ascll码所以刚刚的上下左右对应的是IKJL画出迷宫,走一下顺序是LKKKLLKLKKKLLLKKKLLL原创 2020-12-14 18:44:19 · 262 阅读 · 0 评论 -
[BUUCTF]REVERSE——[MRCTF2020]Xor
[MRCTF2020]Xor附件步骤:例行检查,32位程序,无壳32位ida载入,首先检索程序里的字符串,根据字符串的提示,跳转到程序的关键函数根据flag,跳转到sub_401090函数可以看到v0和byte_4212c0按位异或,最后得到byte_41EA08就会输出right看一下byte_41EA08的值直接写个异或的exp看一下byte_4212c0里的值a="MSAWB~FXZ:J:`tQJ\"N@ bpdd}8g"s=""for i in range(len(a原创 2020-12-12 14:59:40 · 465 阅读 · 0 评论 -
[BUUCTF]REVERSE——[FlareOn4]IgniteMe
[FlareOn4]IgniteMe附件步骤:例行检查,32位程序,无壳32位ida载入当满足第10行的if条件时,输出G00d j0b!提示我们成功,看一下sub_401050函数3.sub_401050函数byte_403180经过10~14行的操作后的值与byte_403000数组相同v4的值,不大懂这个的结果是什么,动调后看到是0x4v4返回的是一个定值,动态调试就能出来,v0就是接收函数的整的花里胡哨。理一下,程序对我们输入的字符串,最后一个字符xor 0x4,原创 2020-12-11 16:30:13 · 317 阅读 · 0 评论 -
[BUUCTF]REVERSE——crackMe
crackMe附件步骤:例行检查,32位程序,无壳32位ida载入,已知用户名welcomebeijing,解密码,直接看main函数可以看到程序是个死循环,只有满足sub_404830函数的条件,才能跳出循环sub_404830函数里要让sub_404830函数返回1,必须要让v13=43924,v13经过了sub_401470的变换,先看sub_401470函数_DWORD *__usercall sub_401470@<eax>(int a1@<eb原创 2020-12-11 16:29:54 · 622 阅读 · 0 评论 -
[BUUCTF]REVERSE——[WUSTCTF2020]level2
[WUSTCTF2020]level2附件步骤:例行检查,32位程序,upx壳儿脱完壳儿,扔进32位ida,习惯性的检索字符串,在我没找到什么关键信息,准备去看main函数的时候,将字符串拉到底,看到了一个眼熟的东西wctf2020{Just_upx_-d}...原创 2020-12-10 19:46:02 · 404 阅读 · 0 评论 -
[BUUCTF]REVERSE——[BJDCTF2020]BJD hamburger competition
[BJDCTF2020]BJD hamburger competition附件步骤:例行检查,64位程序,无壳儿由于unity是用C++开发的,这里就不用IDA了,直接用dnspy看源码在BJD hamburger competition_Data\Managed文件夹中找到Assembly-CSharp.dll(进去文件后第一个就是)这个dll文件是程序的源码,用来存放C++工程。试运行了一下程序,发现进去后我们可以点击一些“食材”,在dnspy里找到有用的ButtonSpaw原创 2020-12-10 19:45:36 · 1053 阅读 · 0 评论 -
[BUUCTF]REVERSE——[WUSTCTF2020]level1
[WUSTCTF2020]level1附件步骤:下载下来的附件有两个,output.txt里是一堆数字64位ida打开第一个附件,检索字符串,发现了flag字样双击跟进,ctrl+x交叉引用,找到了关键函数程序很简单,一开始打开flag文件读出了flag文件里的内容,之后将里面的内容按照12行到18行的语句进行处理后输出。附件里还有一个文件,output.txt,猜测就是输出后的内容,将里面的数据根据这个算法还原一下flag里的内容expa = [198,232,原创 2020-12-10 19:44:15 · 600 阅读 · 0 评论 -
[BUUCTF]REVERSE——[HDCTF2019]Maze
[HDCTF2019]Maze附件步骤:例行检查,32位程序,upx壳upx脱壳儿后扔进32位ida,首先检索程序里的字符串有类似迷宫的字符串,下面也有有关flag的提示字符串,但是没法进行交叉引用跳转查看main函数,没法f5,看汇编,下方有个奇怪的jnz指令,它跳转到了下一行,相当于没跳它call了一个奇怪的地址,ida没法分析出来,百度后得知这个叫花指令,nop掉之后就是这个call指令,不能全部nop,因为后面那个东西可能是有效代码(我先全部nop掉了没法f5)。按d将其原创 2020-12-02 19:44:20 · 805 阅读 · 1 评论 -
[BUUCTF]REVERSE——[V&N2020 公开赛]CSRe
[V&N2020 公开赛]CSRe附件步骤:例行检查,无壳儿,但是有NET混淆,使用de4dot工具进行处理之后用dnSpy打开,从入口点开始看程序找到有关flag的信息flag由str+text组成str根据if (Class3.smethod_0("3" + str + "9") != "B498BFA2498E21325D1178417BEA459EB2CD28F8")可以推算出来看一下Class3.smethod_0,是sha1加密sha1解密得到str,str=原创 2020-12-01 15:45:26 · 295 阅读 · 0 评论 -
[BUUCTF]REVERSE——[MRCTF2020]Transform
[MRCTF2020]Transform附件步骤:例行检查,64位程序,无壳64位ida载入,找到关键函数一开始让我们输入一个长度为33位的字符串,之后使用数组dword_40F040打乱了我们一开始输入的v6的值,打乱后的结果在与dword_40F040异或之后得到byte_40F0E0数组里的值理清楚程序干了什么直接写逆向算法首先将dword_40F040和byte_40F0E0异或一下得到打乱后的输入的字符串之后将打乱的字符串还原回去即可得到输入的字符串dword_40F0原创 2020-12-01 15:45:13 · 359 阅读 · 0 评论