BUUCTF-re xor,[BJDCTF 2nd]8086异或

做buuctf的时候,,把相同类型的放到一起
xor
PE查看没有什么信息
ida里面看一下主函数
在这里插入图片描述
v6与global里面的字符相比较,相同的话成功得到flag
进入global看看
在这里插入图片描述
从main函数里面可以得到V6的处理方式为v6[i]等于v6[i]原来的值与v6[i-1]按位异或。
在这里插入图片描述
那我们获取flag就把global里面的字符反过来
写个脚本测试一下

str1 = ['f', 0x0A, 'k', 0x0C, 'w', '&', 'O', '.', '@', 0x11, 'x', 0x0D, 'Z', ';', 'U', 0x11, 'p', 0x19, 'F', 0x1F, 'v',
        '"', 'M', '#', 'D', 0x0E, 'g', 6, 'h', 0x0F, 'G', '2', 'O']

flag = "f"

for i in range(1, len(str1)):
    if (isinstance(str1[i], int)):
    	str1[i]=chr(str1[i])
str1="".join(str1)
for i in range(1,len(str1)):
	flag += chr(ord(str1[i]) ^ ord(str1[i - 1]))
   

print(flag)

在这里插入图片描述
拿到flag

[BJDCTF 2nd]8086
调用了sub_10030函数,进去查看发现是一个死循环
在这里插入图片描述
查看汇编。。。写入了物理地址aUDuTZWjQGjzZWz
在这里插入图片描述
这是一个8086汇编写成的程序,,后面有一串数据,选中,按C,强制转换成汇编看一下。
在这里插入图片描述
得到如下代码
在这里插入图片描述
循环22次,,且字符串和0x1f抑或

x=']U[du~|t@{z@wj.}.~q@gjz{z@wzqW~/b;'
f=''
for i in x:
	f+=chr(ord(i)^0x1F)
print(f)

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值