[FlareOn4]IgniteMe-buuctf

buuctf做题记录

查壳

在这里插入图片描述
32位无壳

IDA分析

反编译start函数
在这里插入图片描述
逻辑很清晰,先获取输入的字符串,然后进行加密,最后与密文进行比较。
查看加密函数:
在这里插入图片描述
逻辑也很清晰,输入从末端到首段,尾部与v4异或,其余与后一位的字符异或。
看看V4是什么:
在这里插入图片描述
没看懂,所以选择了OD进行动调,找到xor异或的那条命令,查看相应寄存器,得到v4=0x4。
在这里插入图片描述
分析过程结束,可以写脚本了。

#include<iostream>

using namespace std;
int main()
{
	int a[] = {0x0D,0x26,0x49,0x45,0x2A ,0x17 ,0x78 ,0x44  ,0x2B ,0x6C ,0x5D ,0x5E ,0x45 ,0x12 ,0x2F ,0x17,0x2B ,0x44 ,0x6F ,0x6E ,0x56 ,0x09 ,0x5F ,0x45  ,0x47 ,0x73 ,0x26 ,0x0A ,0x0D ,0x13 ,0x17 ,0x48 ,0x42 ,0x01 ,0x40 ,0x4D ,0x0C ,0x02 ,0x69 ,0x00};
	int v4 = 0x4;
	int i;
	int n = 0x27-1;
	a[n]=a[n]^v4;
	for(i=0;i<0x27;i++)
	{
		a[n-i-1] = a[n-i-1]^a[n-i];
		
	}
	for(i=0;i<0x27;i++)cout << (char)a[i];
}

得到flagR_y0u_H0t_3n0ugH_t0_1gn1t3@flare-on.com
包上flag{}提交即可。

小记

ROL(循环左移)指令把所有位都向左移。最高位复制到进位标志位和最低位。

汇编语言指令 ROL
循环左移指令:ROL DEST,COUNT
指令功能:把目的地址中的数据循环左移COUNT次,每次从最高位(最左)移出的数据位都补充到最低位(最右),最后从最高位(最左)移出的数据位保存到CF标志位。
标志位影响:CF标志用于保存最后从最高位移出的数据位。如果COUNT=1,OF标志有意义,如果移位前后数据的符号位发生了变化,OF=1;如果符号位没有发生变化,OF=0。如果COUNT>1,OF标志不确定(没有意义)。

ROL4的汇编就是左移4位。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值