资讯专栏INFORMATION COLUMN

BUUCTF--[GWCTF 2019]re3学习记录

impig33 / 2629人阅读

摘要:又是一道很操没做出来的题目,学习其他师傅的思路。第一步常规操作,无壳位,放入中。在程序未对该段代码进行修改之前,在静态分析状态下,均是不可读的字节码,之类的反汇编器无法识别程序的正常逻辑。选中数据段键转换为数据段。

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

第一步:

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

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

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

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

mprotect函数详解

 SMC自修改代码

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


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

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

查看汇编代码

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

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

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

IDC脚本介绍

IDC脚本举例

IDC函数

#include 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 AESfrom 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}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/122977.html

相关文章

  • BUUCTF(10.25-11.1)

    摘要:漏洞触发的点往往是可以上传文件的位置,没有对上传的文件进行过滤,导致可上传恶意文件。无回显,又称为,可以使用外带数据通道提取数据。 [GWCTF 2019]我有一个...

    BetaRabbit 评论0 收藏0
  • [CTF从0到1学习] BUUCTF WEB部分 wp(待完善)

    摘要:两次编码值为构造所以我们的就是成功拿到极客大挑战这种就是抓抓包了,发现有单引号报错那就是典型的万能密码了极客大挑战先看网页源代码吧试了试居然解出了。 [CTF从0到...

    不知名网友 评论0 收藏0
  • 『CTF Web复现』BUUCTF-[EIS 2019]EzPOP

    摘要:文章目录利用点源码代码审计协议绕过死亡关于的说明构造链构造完利用点协议绕过死亡源码 文章目录 利用点源码代码审计class Bbase64 + filter协议绕...

    leap_frog 评论0 收藏0
  • [BUUCTF][极客大挑战 2019]web wp

    摘要:这里使用双写绕过就好啦查表得到表名查列名查数据见我另一篇博客吖 Havefun F12 EasySQL 1' or 1=1# Secret File...

    番茄西红柿 评论0 收藏2637
  • BUUCTF-[极客大挑战 2019]PHP1

    摘要:将中表示数量的字段改成比实际字段大的值即可绕过函数。条件,,或者当对象被创建即之前,会触发进行初始化,但在时是不会自动调用的。因此保护类的变量在序列化时,前面会加上的前缀。这里的表示码为的字符不可见字符,而不是组合。无标记,变量名不变。 目录 题目: 知识点: 分析:  方法: 题目: 知...

    xuxueli 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<