05 2020 档案
摘要:这是一道当时比赛没做出来的题,沉迷口袋妖怪。 没做出来是因为看着这花里胡哨的IDA就不想做了【不是】 事后冷静分析一波,挺多干扰的。 简单来讲就是输入之后进行处理然后对比。IDA反编译出来的语句太迷了看的我头都大了。 ↑这个是处理输入位数的,要16位。 ↑这个是对输入的字符出进行处理,这个for可有点东西,以下是我个人理解: 首先取值i,i的范围是0-v8,v8一开始是0,通...
阅读全文
摘要:Flare-on第六届挑战赛的题, 挺迷的,这个挑战赛的题都挺有水平。 IDA打开就仨函数: Main函数也挺简单: 对v4处理,存到text,输出,没了。 然而疑惑的地方是,v4有这么长: (比这个还长) 但是这里指处理了28,即0x1C的长度。 结合他运行时跑出的数据: 数了数算上空格正好是这么长,我有理由怀疑他没有处理后面的字符。 所以我们要做的就是把处理长度从0...
阅读全文
摘要:武科大re第五题,无壳: 拖进IDA,看到了关键词【数据结构】,还有关键函数,大致猜了一下估计是遍历树,kali跑一跑看看 果然,第一行和第二行第一个都是2,那估计是后序和中序的遍历。联想前面做的题都是wctf开头的,可以推出来第二行是后序,因为后序最后一个字母是根节点。 手动算前序,其中有两个下划线连在一起了,于是我把那一枝分别写了出来(但是问题不大): wctf202...
阅读全文
摘要:查壳: 无壳,扔进IDA: 看到关键数据,base64转一下试试: 有点flag那味了,估计这是把base64表给改了,那么就需要找一下修改的函数,在函数列表找到一个O_OloolAtYou()函数,看起来有些可疑,果不其然: 其实也可以交叉引用找到这个函数: 这个函数主要作用呢,我们跑一下就可以知道是把A-T给调了个顺序: 于是我们就把他反过来跑一下: ...
阅读全文
摘要:顺着前两个题我直接顺藤摸瓜摸到了武汉科技大学这一届的ctf,干脆全做了吧,看上去也不难,非常友好: 经典无壳: 扔进IDA发现也是判断一下输入就可,里面的判断函数甚是粗暴: 每个函数的名字还挺有意思,三下五除二写个cpp: wctf2020{cpp_@nd_r3verse_@re_fun}
阅读全文
摘要:一个UPX加壳题: Elf直接upx -d脱壳: 然后扔进IDA,刚打开就看到flag了: 那我不脱壳直接用txt打开也能找到咯? 确实:wctf2020{Just_upx_-d} 仅仅是upx -d
阅读全文
摘要:切一道简单题,下载下来是elf和txt: Ida打开看逻辑: 按下标,奇数把输入左移下标数值位数,偶数下标把输入乘下标: ctf2020{d9-dE6-20c}
阅读全文
摘要:在参加网鼎杯之前,还没接触过vm指令的题,姑且是在网上找到好多,接下来几天慢慢做,看看能不能整理到一起。 打开看着还挺简单的,一点进vm_operad人就傻了。 里面是各种操作,太长了就不截图了,我还没学会怎么在word文档里贴代码(对我都是word文档写好之后上传博客的) 这里想说一下我对vm虚拟
阅读全文
摘要:随便水一道签到题: 没有壳,静态分析: 输入flag,处理判断得出结果。 很简单,程序逻辑是将输入的flag按照以dword_40F040数组的内容作为下标保存在byte数组中,然后异或处理,对比判断。反着写: RCTF{Tr4nsp0sltiON_Clph3r_1s_3z} bb两句: 昨天和前天
阅读全文
摘要:下载是exe文件,运行一下: 很简单,依旧是输入-处理-判断。 查壳: 没壳,扔进IDA: 只有一处判断,将其范围内的字符处理后对比。 很简单,我一开始的思路是精准打击,找出被处理的字符串的ascii范围,写了一半感觉有点麻烦,不如直接爆破: 就硬对应: Cae3ar_th4_Gre@t 最后bb两句: 521我也在勤勉的做题啊!(懒狗,水博客还好意思说) 现在上着...
阅读全文
摘要:查壳: 没壳,跑一下看看: 经典输入处理判断,扔进IDA看一看: 框架比较简单,但是简单的框架内容可不一定简单。 一些API函数,念着英文就知道什么意思了。看一下读取数据的函数: 中规中矩的,把读入的'\n'和'\r'过滤一下。 看一下处理和判断的函数: 大体逻辑是这样的: v0是长度,v4是一个给定的数值。循环处理flag,将其倒序与v4亦或的结果保存,替换v4内...
阅读全文
摘要:下载下来,exe扔进去看看有没有壳: 没有,运行一下看看是干啥的: 很普通的界面,输入flag。 扔进IDA分析一波: main函数主体也比较简单,输入——处理——判断。 我们进入sub_401080看看,这个函数是将我们输入的v10进行加密,然后存到v5里面。 加密主体跟base64差不多,但是注
阅读全文
摘要:下载后是个elf文件,直接扔进IDA分析: Main的代码也比较简单: 根据提示,我们需要输入六个数据,在经过两处处理之后得到一段数据,最后将其转换为十六进制在转成字符串。 第一部分处理: 这里是将输入的六个数据第一次处理,三次循环,每次取两个数据出来存到dword_601078和dword_60107C中。 sub_400686对每次取出的第一个数据进行再处理,byte_601060...
阅读全文
摘要:下载下来解压后发现是一个unity的···游戏? 由于unity是用C#开发,这里我们就不去用IDA了,用dnspy看源码就够了。 在BJD hamburger competition_Data\Managed文件夹中找到Assembly-CSharp.dll 这个dll文件是程序的源码,用来存放C#工程。 把它拖进dnspy:找到有用的ButtonSpawnFruit类: 在里...
阅读全文
摘要:先查壳: 无壳,跑一下看看: 没有输入的地方,根据这句"Can you find me?"我们大致推测,数据是被藏起来了,通过正常手法应该找不到。 拖进IDA看看,main函数并没什么用。 打开strings窗口看看,挨个点了一圈也没什么有用的数据。 最后在这个_ques函数里面找到了: 分析一波,给出十个数据,然后进行拼接到v14上,HIDWORD是高16位,LODWORD...
阅读全文
摘要:先查壳: UPX壳,脱壳后扔进IDA 弹出的提示无伤大雅,直接F5 逻辑很简单,开头是ACFT{,最后是},给出的v4数组和byte_402000数组比较,取出byte数组中的下表进行减法得到flag的ascii值。 Flag:
阅读全文
摘要:天气阴沉闷热,像是要下雨,不想写物理了就来照顾一下博客。 在此之前,我花了一个星期的时间专注于补作业,ctf的知识一点没有进展。 疫情关系,在家慢慢刷题,参加了各种线上赛事,包括但不限于协会内部赛、其他学校公开赛、高校战疫、xctf、安恒月赛、网鼎杯等。 基本就是在BUU和XCTF上刷题。 解决的第一个ctf题是在2019.11.03,题目来自xctf,是一道逆向题。从此专注于逆向...
阅读全文