又是一道很操(没做出来)的题目,学习其他师傅的思路。

第一步:

常规操作,无壳64位,放入IDApro中。

搜索找到main函数,出现红色提示

栈存在问题,修改一下栈的值

查看main函数,读取,mproct函数,一种保护函数,不是很重要。

mprotect函数详解

SMC自修改代码

在真正执行某一段代码时,程序会对自身的该段代码进行自修改,只有在修改后的代码才是可执行的。在程序未对该段代码进行修改之前,在静态分析状态下,均是不可读的字节码,IDA之类的反汇编器无法识别程序的正常逻辑。


第一次看,一脸懵逼,到这里就卡住了,把函数+i??? wtf???点进去查看

大概意思是将sub_402219函数的汇编代码修改了,最后再次执行,我们静态分析看不出来。而且这里无法动态调试。

查看汇编代码

发现这里出现了一大堆数据,应该就是我们需要处理的数据。

选中402219数据段 D键转换为数据段。

这时我们就需要使用IDC脚本进行数据修改(一种类c语言)shift+F2

IDC脚本介绍

IDC脚本举例

IDC函数

#include <idc.idc>static main()
{auto addr = 0x402219;     //声明局部变量 addr是起始地址auto i = 0;for(i=0;i<224;i++)        {PatchByte(addr+i,Byte(addr+i)^0x99);   //设置虚拟地址addr处的一个字节值}
}

然后将修改后的数据选中,右键分析,选择force强制执行,然后把代码按P键形成函数。

我们分析一下函数,点进去都是好长一段,试试findcrypt插件,可能是某种加密,发现是AES

byte_6030A0就是最后加密后的内容

BC0AADC0147C5ECCE0B140BC9C51D52B46B2B9434DE5324BAD7FB4B39CDB4B5B

现在我们需要来求密钥unk_603170.linux远程动态调试(输入一个长为32位的字符串)

CB8D493521B47A4CC1AE7E62229266CE

最后学习别的师傅的脚本

from Crypto.Cipher import AES
from Crypto.Util.number import *
key = long_to_bytes(0xcb8d493521b47a4cc1ae7e62229266ce) #密钥
mi = long_to_bytes(0xbc0aadc0147c5ecce0b140bc9c51d52b46b2b9434de5324bad7fb4b39cdb4b5b) #密文
lun = AES.new(key, mode=AES.MODE_ECB)
flag = lun.decrypt(mi)
print(flag)

得到最后的flag为

flag{924a9ab2163d390410d0a1f670}

BUUCTF--[GWCTF 2019]re3学习记录相关推荐

  1. [buuctf]crypto刷题学习记录(1-22)

    目录 一.MD5 二.Url编码 三.看我回旋踢 四.一眼就解密 五.摩丝 六.[BJDCTF 2nd]签到-y1ng 七.[BJDCTF 2nd]password 八.变异凯撒 九.Quoted-p ...

  2. buuctf GWCTF 2019 pyre

    下载题目发现是一个pyc文件,关于pyc的详细解释,我看到了这篇文章(6条消息) .pyc是什么?_loveliuzz的博客-CSDN博客_.pyc pyc文件是PyCodeObject的一种持久化保 ...

  3. BUUCTF Reverse/[GWCTF 2019]pyre

    BUUCTF Reverse/[GWCTF 2019]pyre 下载得到一个pyc文件,用这个在线反编译pyc,pyo反汇编出代码 print 'Welcome to Re World!' print ...

  4. BUUCTF RE WP31-32 [WUSTCTF2020]level1、[GWCTF 2019]xxor

    31.[WUSTCTF2020]level1 得到的 flag 请包上 flag{} 提交. 感谢 Iven Huang 师傅供题. 比赛平台:https://ctfgame.w-ais.cn/ 给了 ...

  5. [BUUCTF]REVERSE——[GWCTF 2019]pyre

    [GWCTF 2019]pyre 附件 步骤: 1.附件是pyc文件,用python打不开,百度后得知用python反编译工具打开,分享一个python反编译在线网站 反编译后是这段代码 #!/usr ...

  6. Django学习记录-1

    2019独角兽企业重金招聘Python工程师标准>>> 作为Django的初学者,记录下我的学习历程,加深一下记忆(工作中用java,所以很容易忘记),如果有写的不对的地方,还望大家 ...

  7. Python学习记录day3

    2019独角兽企业重金招聘Python工程师标准>>> Python学习记录 day3 今天是银角大王武sir讲课.先回顾了上节课所学,然后讲到了面向对象思想. set set是一个 ...

  8. [GWCTF 2019]babyvm

    系统学习vm虚拟机逆向 64位vm的题目 找到主函数 分析sub_CD1函数: sub_B5F代表mov操作,其中 0xE1,0xE2...代表不同的寄存器. sub_A64是一个异或操作xor. s ...

  9. 不平等博弈问题学习记录(一)(超实数篇)

    前言 听到博弈问题,第一个想到的想必是用SG函数做的博弈题,就比如Nim游戏 Nim游戏: 有N堆石子,每次选一堆石子,拿走若干石子(不能不取),先不能取的人输 定义个SG函数 对于SG函数,大致就记 ...

最新文章

  1. leetcode-23 合并K个排序链表
  2. 从图(Graph)到图卷积(Graph Convolution):漫谈图 神经⽹络模型 (⼀)
  3. 一个简易实用的web权限管理模块的应用与实现
  4. 普林斯顿微积分读本:第 25 章 如何求解估算问题
  5. SNMP协议简要教程
  6. layui timeline使用
  7. 何时该用无服务器,何时该用Kubernetes?
  8. Dev XtraReport 正在打印弹出框如何隐藏 批量打印 静默打印
  9. php每天一题:strlen()与mb_strlen()的作用分别是什么
  10. Exchange Server 2010部署安装
  11. shell不允许输入空字符_shell脚本编程之控制脚本
  12. c语言输入字符串smallbig,为什么输出不了small,这里big和small都是一样的操
  13. subplot()函数--Matplotlib
  14. MyCat分片规则之自定义范围分片
  15. 供应链三道防线(读书笔记)1(共4)
  16. LVS (Linux Virtual Server) 负载均衡
  17. 逻辑漏洞——忘记密码、重置密码(案例分析、原理)
  18. Android 注解处理器使用攻略
  19. [源码解析] NVIDIA HugeCTR,GPU版本参数服务器--- (5) 嵌入式hash表
  20. 【报告分享】毕马威阿里研究院:迈向万亿市场的直播电商(附下载)

热门文章

  1. PDU是如何帮助机房安然度夏?如何选择PDU电源配套机柜?
  2. android+p+华为手机,给1.9亿用户32款老机型进行安卓P升级 华为值吗?
  3. ubyntu 链接mysql_ubuntu mysql 的安装、配置、简单使用,navicat 连接
  4. linux java性能监控工具_性能监控工具以及java堆分析OOM
  5. 成功解决采用ax.bar进行三维绘图绘制柱状图的时候,横坐标只显示三列而不是数据中的四列
  6. 成功解决UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 130: invalid continuation b
  7. Anaconda多环境多版本python配置指导
  8. Linux下WRF Domain Wizard使用教程(PART2: 使用教程及 遇到的种种BUG)
  9. MongoDB学习笔记【2】-- 试用
  10. 【思维题 状压dp】APC001F - XOR Tree