BUUCTF--[GWCTF 2019]re3学习记录
又是一道很操(没做出来)的题目,学习其他师傅的思路。
第一步:
常规操作,无壳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学习记录相关推荐
- [buuctf]crypto刷题学习记录(1-22)
目录 一.MD5 二.Url编码 三.看我回旋踢 四.一眼就解密 五.摩丝 六.[BJDCTF 2nd]签到-y1ng 七.[BJDCTF 2nd]password 八.变异凯撒 九.Quoted-p ...
- buuctf GWCTF 2019 pyre
下载题目发现是一个pyc文件,关于pyc的详细解释,我看到了这篇文章(6条消息) .pyc是什么?_loveliuzz的博客-CSDN博客_.pyc pyc文件是PyCodeObject的一种持久化保 ...
- BUUCTF Reverse/[GWCTF 2019]pyre
BUUCTF Reverse/[GWCTF 2019]pyre 下载得到一个pyc文件,用这个在线反编译pyc,pyo反汇编出代码 print 'Welcome to Re World!' print ...
- BUUCTF RE WP31-32 [WUSTCTF2020]level1、[GWCTF 2019]xxor
31.[WUSTCTF2020]level1 得到的 flag 请包上 flag{} 提交. 感谢 Iven Huang 师傅供题. 比赛平台:https://ctfgame.w-ais.cn/ 给了 ...
- [BUUCTF]REVERSE——[GWCTF 2019]pyre
[GWCTF 2019]pyre 附件 步骤: 1.附件是pyc文件,用python打不开,百度后得知用python反编译工具打开,分享一个python反编译在线网站 反编译后是这段代码 #!/usr ...
- Django学习记录-1
2019独角兽企业重金招聘Python工程师标准>>> 作为Django的初学者,记录下我的学习历程,加深一下记忆(工作中用java,所以很容易忘记),如果有写的不对的地方,还望大家 ...
- Python学习记录day3
2019独角兽企业重金招聘Python工程师标准>>> Python学习记录 day3 今天是银角大王武sir讲课.先回顾了上节课所学,然后讲到了面向对象思想. set set是一个 ...
- [GWCTF 2019]babyvm
系统学习vm虚拟机逆向 64位vm的题目 找到主函数 分析sub_CD1函数: sub_B5F代表mov操作,其中 0xE1,0xE2...代表不同的寄存器. sub_A64是一个异或操作xor. s ...
- 不平等博弈问题学习记录(一)(超实数篇)
前言 听到博弈问题,第一个想到的想必是用SG函数做的博弈题,就比如Nim游戏 Nim游戏: 有N堆石子,每次选一堆石子,拿走若干石子(不能不取),先不能取的人输 定义个SG函数 对于SG函数,大致就记 ...
最新文章
- leetcode-23 合并K个排序链表
- 从图(Graph)到图卷积(Graph Convolution):漫谈图 神经⽹络模型 (⼀)
- 一个简易实用的web权限管理模块的应用与实现
- 普林斯顿微积分读本:第 25 章 如何求解估算问题
- SNMP协议简要教程
- layui timeline使用
- 何时该用无服务器,何时该用Kubernetes?
- Dev XtraReport 正在打印弹出框如何隐藏 批量打印 静默打印
- php每天一题:strlen()与mb_strlen()的作用分别是什么
- Exchange Server 2010部署安装
- shell不允许输入空字符_shell脚本编程之控制脚本
- c语言输入字符串smallbig,为什么输出不了small,这里big和small都是一样的操
- subplot()函数--Matplotlib
- MyCat分片规则之自定义范围分片
- 供应链三道防线(读书笔记)1(共4)
- LVS (Linux Virtual Server) 负载均衡
- 逻辑漏洞——忘记密码、重置密码(案例分析、原理)
- Android 注解处理器使用攻略
- [源码解析] NVIDIA HugeCTR,GPU版本参数服务器--- (5) 嵌入式hash表
- 【报告分享】毕马威阿里研究院:迈向万亿市场的直播电商(附下载)
热门文章
- PDU是如何帮助机房安然度夏?如何选择PDU电源配套机柜?
- android+p+华为手机,给1.9亿用户32款老机型进行安卓P升级 华为值吗?
- ubyntu 链接mysql_ubuntu mysql 的安装、配置、简单使用,navicat 连接
- linux java性能监控工具_性能监控工具以及java堆分析OOM
- 成功解决采用ax.bar进行三维绘图绘制柱状图的时候,横坐标只显示三列而不是数据中的四列
- 成功解决UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 130: invalid continuation b
- Anaconda多环境多版本python配置指导
- Linux下WRF Domain Wizard使用教程(PART2: 使用教程及 遇到的种种BUG)
- MongoDB学习笔记【2】-- 试用
- 【思维题 状压dp】APC001F - XOR Tree