idapython_攻防世界no-strings-attached_逆向之旅007

提示:这篇文章里涉及到:idapython,gdb,idapython中文手册.pdf百度云链接


前言

本题的摘要:
文件是linux下的elf文件,但是运行报错。有两个解题思路,第一种是用gdb在linux虚拟机下动态调试,第二种是使用ida静态分析,然后构建脚本计算出flag。


今天距离写上一篇博客有13天了,终于可以做逆向题并写博客了,前面一段时间在应对恶意代码考试及编译和反编译的考试。当然了,还有元旦假期的快乐开黑生活。

一、攻防世界no-strings-attached

在这里给出题目链接:https://adworld.xctf.org.cn/task/answer?type=reverse&number=4&grade=0&id=5080&page=1

二、writeup

1.用exeinfo看一下


可得到信息:elf文件,32位,使用gcc 4.6.3编译

2.在linux下运行

在这里插入图片描述发现程序会输出两句话,然后报错。

3.分析

对于此题,我选择使用第二种思路,即使用ida静态分析,然后写脚本计算flag。对于另一种思路:使用gdb调试,我后面会写一篇使用gdb解其他题目的博客。

这个题还是一如既往的比较好找到main函数。
在这里插入图片描述
F5反编译
在这里插入图片描述
通过分析,可以确定flag是在authenicate()中,着重分析该函数:
在这里插入图片描述
分析过程见图中的注释,可以知道flag是在s2中存着。加下来对decrypt函数进行分析。
在这里插入图片描述
该函数所描述的步骤即为计算flag的方法,接下来编写脚本来计算flag。
首先使用idapytohn获得参数s,dword_8048A90的值,这两个参数的类型为wchar_t数组,wchar_t:

wchar_t是C/C++的字符数据类型,是一种扩展的字符存储方式。 在Windows下,wchar_t占2个字节(byte);
在Linux下,wchar_t占4个字节。
wchar_t类型主要用在国际化程序的实现中,但它不等同于Unicode编码。Unicode编码的字符一般以wchar_t类型存储。

这个程序是linux下的,所以wchar_t是dd类型(double word )占4字节。接下来使用idapython将s和dword_8048A90提取出来:
(注意!!! 我用的是idapro7.5,使用其他版本的ida,脚本会不一样的,如何编写idapython脚本呢,我这有idapython中文手册.pdf
百度云链接:链接:https://pan.baidu.com/s/1B0qNeQSQHeWPaUZqJfYMFQ
提取码:0dkl

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值