NepCTF2024WP
前言
咱终于也是有奖的人了。
Re
0ezAndroid
首先是安卓apk,jadx看一下。
发现有个关键加密代码,其中是依靠this.clickCount
不断变化并且使用底下那个判断条件来走的。
在右边还看到了个PDF,我一开始以为跑出来是假flag
然后使用frida构造脚本,让其循环调用这个函数,直到满足条件。
1 | import frida |
这个脚本使用后,点击一次按钮即可开始爆破。
最终在10714出爆破出正确PDF,我们用脚本写出。open('1.pdf','wb+').write(bytearray(pdf))
然后vs打开pdf,把js代码提出来。
1 | function _0x293d(_0xf34e71, _0x3b0a75) { |
直接浏览器跑一下就行,其flag与一开始的POC2.pdf一样。
Super Neuro : Escape from Flame!
是个游戏,能发现H是左右速度,V是上下速度,那么开挂就好啦。
让那个东西动一动,这个游戏如果丢失焦点就会暂停,所以按ctrl + Enter
先将他能变小,方便搜索。
然后用CE分别搜这俩的单浮点即可,然后V改成正速度,H控制左右,慢慢飞即可。
然后到了1024之后底下就会显示flag。
Blockchain
theif_god
头一次做区块链题,干了好几个小时,主要是不会sol现学的。
一开始踩坑的我就不说了,直接说正确做法。
首先根据源码审计sol:
1 | pragma solidity ^0.8.0; |
ctf-wiki 看一下就可以发现这个withdraw
函数可以重入攻击(Re-Entrancy),他先把钱给你了,然后才赋值为0。
然后他给了个脚本,简单修改一下,首先我们需要直到上述sol的abi,也就是编译一下获取abi,在1.py中就可以完成。
1 | install_solc('0.8.26') |
其中attacker_private_key在下载的附件hardhat.config.js
中有。
然后可以发现本地有10个ether,那么也满足重入攻击的条件,我们去remix写一个攻击合约,并让其带着1 ether来执行攻击。
我们选择自定义,来填入地址,然后编写攻击合约编译测试。
攻击合约如下:
1 | pragma solidity ^0.8.0; |
这里有个重点就是,我如何让这个合约带着ether,我们使用如下代码:
1 | constructor() payable { |
光有代码还不够,我们需要在部署时,手动填入ether。
这样点击部署之后,等一会就会发现合约有1个ether。
然后发起攻击就可以了,请注意攻击这里是先存入0.9 个 ether,是因为需要支付存入的gas费用,如果写1的话将没钱支付gas。
等exploit完成后,调用GetFlag
即可。
其中日志里就有flag了。
IOT
火眼金睛
拿到bin文件,直接binwalk -e
,发现文件都是散的,在Linux里面可以轻松发现,然后把二进制文件提取出来,放到一个文件夹中分析,以为题目说是符号表所以肯定是个二进制文件。
然后用ida一个个看,直到看到了19047F
其中有一大堆函数名字,那么应该要从中找不一样的。
一开始都是搜索flag相关内容然后没有,脑洞一下想到可以用base64加密,搜=
结果真有,转过去可以发现是一长串,我这里ida识别有问题,需要手动把落单的字符补上去。JZSXAQ2UIZ5VSMDVL5DTA5C7JMZTG3S7GFXFGMLHNB2F6MLOL53FQ5ZQOJFXGIJBEFPUYM3UE5ZV6RZQL5DHK4TUNAZXE7I=
很显然,这个是Base32,解一下就行了。
MISC
签到
真的就是玩一下就行。
3DNep
这文件不认识,直接百度glTF,发现是个3d文件,继续百度找一个能在线看的。
转一转就可以发现底下有个码,我一开始以为二维码拼了半天。
经过搜索能搜到网鼎杯青龙组2020部分题解 这样一篇文章,其中虚幻2
这个题的码与本题类似,故此继续搜索网鼎杯青龙组相关字样,可以找到视频题解 。
可以发现这个是叫汉信码。找个在线识别的网站 识别一下,需要注意,由于我这个亮度有问题,需要让白色更白防止识别错误。
- 标题: NepCTF2024WP
- 作者: moshui
- 创建于 : 2024-08-26 04:18:05
- 更新于 : 2024-08-27 12:55:43
- 链接: https://www.moshui.eu.org/2024/08/25/nepctf2024wp/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。