BUU逆向解题周记(3.19)

一.[ACTF新生赛2020]rome1

二.[GXYCTF2019]luck_guy1

三.大端模式与小端模式

四.下周计划

一.[ACTF新生赛2020]rome1

第一步 查壳

无壳,为32bit,拖进IDA分析

第二步 寻找关键字

看到you are correct,点进去,ctrl+x看看哪里引用了correct;

第三步 生成伪代码可得

第四步 从后往前分析

v1经过变换后要和v12数组的前16位相等,推测为静态分析相等类题目

接着往上看,这是v1进行的变换,大小写字母都发生变换,其他则不变

再向上看,可知v12的值

这时候就知道题目的意思是我们输入的值经过变换后等于Qsw3sj_lz4_Ujw@l

第五步 写脚本,取余操作比较麻烦,这里我选择用最暴力的方法(一个个试)来写

可以得到结果

遇到的问题:输入的是16个数,但这里只有4个数,又从头看了一遍,发现这四个是int型,4字节,我们输入的为char型,一个字节,4*4=16。这就刚刚好了。


二.[GXYCTF2019]luck_guy1

第一步依旧先查壳 无壳,64bit

第二步查找关键字,看到了flag,

第三步,点进去,看看哪里引用了,按F5生成伪代码

第四步,对伪代码进行分析,这里的循环进行了5次,发现case2,case3没有用,(rand()%200的意思为随机取0-199的整数),再注意看case1,case4,case5分别什么意思。

case1:输出flag,flag=f1+f2;点进去f1,可得f1的值,f2为空

case4:对f2进行赋值

case5:对f2的值进行变换

第五步:写脚本分析f2

最后可得flag为GXY{do_not_hate_me}

遇到的问题:从数据的高位开始输入,0x7F为数据高位,如下图

这样的方式是不对的,数据在此处的储存方式为小端模式,应该从低位输入才对,如下图


三.大端模式与小端模式

小端模式

数据的低位放在低地址空间,数据的高位放在高地址空间

小端就是低位对应低地址,高位对应高地址

读取数据:注意是从低地址读起,在读出来的时候会从低位开始放

大端模式

数据的高位放在低地址空间,数据的低位放在高地址空间

读取数据:注意从低地址开始读取,读到的从高位开始放

如下图


四.下周计划

  1. 学习关于apk逆向知识,初步学习apkIDE的使用

  1. 学习滴水逆向知识

  1. 完成BUU逆向2-3题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值