攻防世界getit-逆向之旅008

本文介绍了如何使用ida和edb进行逆向分析,重点讲解了攻防世界getit挑战中文件类型判断、反编译过程、动态调试以及python脚本的编写。通过对代码逻辑的分析,揭示了程序读写文件的机制,并提供了解决问题的关键步骤,包括使用fseek、fputc和fprintf函数的功能解释。
摘要由CSDN通过智能技术生成


前言

使用ida+kali里面的edb进行分析,然后编写python脚本生成flag。


一、查看文件类型

使用exeinfo查看文件类型,得知是elf文件-64位。需要在linux环境下动态调试。在这里插入图片描述

二、使用ida的f5反编译

在这里插入图片描述
发现这个程序运行时会读写文件,于是就在kali虚拟机里tmp文件夹下,新建一个文件flag.txt。
分析这个代码的逻辑:

1首先生成一个参数t,生成过程如下:

t的值通过使用edb调试得到值为:
在这里插入图片描述

t = "SharifCTF{b70c59275fcfa8aebf2d5911223c6589}"

在这里插入图片描述

2 .将参数u写入到flag.txt文件中

u的值是44个“*”组成的字符串。使用fprintf函数将u写入flag.txt文件中。
在这里插入图片描述

3.循环操作文件,将t中的值按照一定顺序来替换文件中的“*” 。

在这里插入图片描述
注意第25行和16行是在将t中的值按照一定顺序来替换文件中的“” 。 但是第27行和第28行是使用u重新覆盖文件。所以按照这个代码的逻辑,改完之后就拿“”覆盖这个文件,所以动态调试将永远得不到flag。我们可以写一个python脚本复现第25行和第26行的过程,从而得到flag。

4.准备数据

首先需要得到p的值,使用ida-python输出p的值。

from ida_bytes import get_dword as dd
addr = here()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值