攻防世界 re-for-50-plz-50


title: 攻防世界 re-for-50-plz-50
date: 2021年8月9日 12点01分
tags: 攻防世界
categories: 攻防世界

1、PE分析

在这里插入图片描述

一开始以为是普通的ELF文件,没太注意。正常32位IDApro打开。

2、IDApro分析

(1)shift + F12

在这里插入图片描述

发现可疑之处,好像跟congratulations有点像。跟进去。

这里下面还有一大串没有用的字符串,如果找不到这个,也可以直接从main函数进。

跟进之后:

在这里插入图片描述

(2)ctrl + X 交叉引用

在这里插入图片描述

(3)F5反汇编

在这里插入图片描述

可以看到,代码不是很复杂,跟进查看meow数组。

在这里插入图片描述

这里有点想不明白的是(char)(argv【1】【i】这个东西什么,一开始自己想的思路是,argv【1】【i】这个与 7 异或,然后跟meow数组进行对比,不等于就输出N00000000,等于就是congratulations,也就是说如果meow数组的字符跟argv【1】【i】^ 7对比,相等就输出,就是flag了。

于是脚本如下:

在这里插入图片描述

(4)出现错误

但是运行之后,却是什么都没有。

在这里插入图片描述

而且从返回值来看,这并不是正常退出的程序。

(5)百度资料 argv【1】【i】

argc在C语言中表示运行程序时传递给main()函数的命令行参数个数。

argv在C语言中表示运行程序时用来存放命令行字符串参数的指针数组。

argv[ ]: 指针数组,用来存放指向你的字符串参数的指针,每一个元素指向一个参数。

其中argv[0] 指向程序运行的全路径名,argv[1] 指向在DOS命令行中执行程序名后的第一个字符串,

argv[2] 指向执行程序名后的第二个字符串,argv[argc]为NULL。

也就是说argv【1】【i】也就是meow数组里面的字符串?那就是将这字符串跟7 异或,然后得到的值就是flag。

(6)重写脚本

在这里插入图片描述

(7)得到结果

在这里插入图片描述

TUCTF{but_really_whoisjohngalt}

3、总结

后面查看wp的时候,才发现这是MIPS程序。

MIPS百度了一下,发现还是没搞懂是什么,但是反编译的时候,需要下一个插件叫retdec?

汇编程序是指用汇编语言写出的程序,在此重点讨论MIPS架构处理器下的汇编程序。MIPS汇编程序一行只能放一个指令,每个指令翻译成机器语言均为32位二进制数,由此与指令格式相关知识对应。

下面是MIPS指令集的博客

[https://www.cnblogs.com/thoupin/p/4018455.html](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fwww.cnblogs.com%2Fthoupin%2Fp%2F4018455.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值