第二届红帽杯4Re + 1Pwn的writeup

这次献上我po叔的大作

come on baby~

  • icm

直接静态分析,主流程伪代码如下:

通过加密函数的分组、及具体算法里的swap,mul,add我操作,看出是idea算法。

直接dump伪随机数生成的固定key(hex):18fe9c970a7296f5c2fdeeae147592aa

通过简单异或得到目标加密串。

直接用工具解密得到flag(去除尾部补位): flag{f53fc1db-b7d3-4643-9b48-725f13129d07}

  • ccm

还是直接静态分析,有壳,不过壳比较简单,简单跟下,对照静态分析,发现OEP跳转位置。

去除动态基地直接在40640E下断,f8,dump,利用偏移2000处API地址修复IAT,脱壳完成。

主要伪代码如下:

更多代码就不上了。算法比较简单,除了CRC32 hash,也没有通用加密算法。

先是格式检查,前5字节为:

42bytes输入字串index 为 13 18 23 28 处的字符是_

然后生成三张表,其中一张是通过伪随机数生成。对输入hex并进行简单置换。得到84bytes的字串,最后异或比较79bytes,其余5bytes通过crc32校验,5bytes中其中有1字节是由{的低4位生成,值已确定,众所周知,通过最后4bytes能更改到任何crc32值,所以crc32只能确定唯一的4byte。

虽然以前做gslab把crc32其及4byte逆推都做了查表实现,为了简化代码,crc32部分只能跑一下了。代码如下:

最终flag为:flag{12345678-1234-1234-1234-1234567890ab}

  • explain

同样有壳,简单静态看下就能看到OEP的跳转:

0040817C   .- E9 F398FFFF   jmp Explain.00401A74

还是同样的下断,dump,修复IAT。

此题是简单的VM题。做题过程中,作了简单的记录,记录不全,将就看吧。

VM代码有部分解析没记录,大概流程能看出来

就是先初始化目标校验字串,然后输入35字节,并将其与自身index异或,最后与目标字串比较校验。然后打印结果。

  • wcm

做了icm,ccm,再做到这题也没什么了。大概流程相同。输入为42bytes。然后进行分组加密,最后进行异或并与常量串校验。

至于加密算法,很容易就能看出,国密4,因为算法没有进行过任何更改,所以SBOX,FK等都没有变,直接能对应上加密算法。

异或得到加密串:

密钥为伪随机数生成的固定钥,

dump:DA98F1DA312AB753A5703A0BFD290DD6

直接工具解密得到:flag{e4435341-401a-4bc4-96c1-eadf1951d904}

  • Starcraft RPG

此题是借助堆的格式化漏洞利用题。 在角色建立时,只有2角色是先分配存储name的堆,后分配存储格式化串的堆。而角色1在写格式化串时有个选择,如果不为1或2则不写格式化串。

利用思路就是先创建角色2,name处写上格式化串,删除,再创建角色1,并不写格式化串。这时角色1的格式化串就是角色2时写的name。因为free再分配堆时还有转large bin的过程。所以name的前16字节会被覆盖,格式化串要偏移16字节。

剩下的就是格式化的利用了。不多说,主要是改atoi调用为system调用。因为此函数一直调用,所以需要中转下,最后一步再让其跳转到system。直接看exp代码。

好了 我滚去睡觉了 狗命重要 笔芯

原文发布于微信公众号 - ChaMd5安全团队(chamd5sec)

原文发表时间:2018-05-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯云API

腾讯云API:用Python使用腾讯云API(cvm实例)

腾讯云API地址:https://cloud.tencent.com/document/api

88240
来自专栏Grace development

冷门PHP函数汇总

整理一些日常生活中基本用不到的PHP函数,也可以说在框架内基本都内置了,无需我们去自行使用的函数。量不多。后续在日常开发中如遇到更多的冷门,会更新本文章

11710
来自专栏XAI

微信企业号回调模式配置讲解 Java Servlet+Struts2版本 echostr校验失败解决

异常java.security.InvalidKeyException:illegal Key Size 也就是 echostr校验失败,请您检查是否正确解密并...

260100
来自专栏Rindew的iOS技术分享

苏宁一面

18940
来自专栏猿天地

再谈前后端API签名安全?

上次《前后端API交互如何保证数据安全性?》文章中,我们介绍了如何在Spring Boot框架中去统一处理数据的加解密。对于请求的加密也只做了POST请求的自动...

16740
来自专栏ascii0x03的安全笔记

PySide——Python图形化界面入门教程(三)

PySide——Python图形化界面入门教程(三)          ——使用内建新号和槽               ——Using Built-In S...

51180
来自专栏Web项目聚集地

如何防止请求的URL被篡改

如图,是我们模拟的一个从浏览器发送给服务器端的转账请求。久一的ID是 web_resource,正在操作100元的转账。

16220
来自专栏JadePeng的技术博客

Angular 快速学习笔记(1) -- 官方示例要点

of(HEROES) 会返回一个 Observable,它会发出单个值,这个值就是这些模拟英雄的数组。 d. 订阅Observable

8500
来自专栏xdecode

Java源码安全审查

最近业务需要出一份Java Web应用源码安全审查报告, 对比了市面上数种工具及其分析结果, 基于结果总结了一份规则库. 本文目录结构如下: 

89320
来自专栏码匠的流水账

使用aerogear生成totp

aerogear-otp-java-1.0.0-sources.jar!/org/jboss/aerogear/security/otp/Totp.java

31020

扫码关注云+社区

领取腾讯云代金券