nepctf-WP
Nep-WP
Misc
0x01 NepMagic —— CheckIn
签到,直接玩游戏就好了
0x02 Nemophila
emm,有点儿难受,解压缩包的密码卡了很久,一开始用的secret_is{Frieren&C_Sunb15e&Himme1_et1rna1_10ve}
,能过python文件的check,但是不太对,然后查看了一些不太紧的约束,改了好久才改出来secret_is{Frieren&C_SunR15e&Himme1_eterna1_10ve}
,解包之后得到一个破损的图片文件,异或一下刚刚的解压密码即可得到可见图片
直接010启动试试改一下长宽,03改为07,然后直接能够看到flag了
0x03 3DNep
010先分析一波,文件头为gltf,没见过这种文件,搜一下
然后有在线工具可以编辑,直接打开往里拽就行(ps:加个gltf的后缀),一眼汉信码,把图截出来之后直接解码就好了
Pwn
0x01 NepSSH
第一眼看感觉像条件竞争uaf,malloc没加锁,后面仔细看了下,甚至不用条件竞争,flush之后可以直接控制堆头,然后直接修改堆头堆喷就行,fflush释放两次会将堆头链入堆表,可以以此控制堆头,修改链表指针为0x123300,最后修改0x123300为NepSSH
exp:
1 | from pwn import * |
Web
0x01 NepDouble
上传含sstipayload的压缩文件,没有过滤,直接打就行
Re
0x01 0ezAndroid
先手拉进模拟器看看,点击送flag哇,和很久很久之前buu上做的一个题好像,一开始还寻思能不能开个鼠标连点器取巧hh,后面jadx反编译了一下发现做不到,有时间check还有随机位置生成,然后大致逛了一下各个方法
很显然this.statusCheck
被当作为一个状态码,等于1的时候应该就是走正常的check通过逻辑,先跟进一手encrypt
方法,发现被藏在了native层
先不管继续往上溯,发现enc是从一个tea过来的,它的返回值是不变的
继续看发现了this.statusCheck
被置为1的地方
ok那么现在思路就已经清楚了,点击的次数被与同步经过tea生成的作为密钥的变量一同传入了native层的函数encrypt做了最后一层的check,先给apk解包瞅瞅native层的加密是啥
wow,脸上的rc4
先找密钥,一开始把java代码扣下来跑,调了一下没调好,我是飞舞,还是直接hook吧。。。
程序里面调用有反调闪退,主动调用一下就好了
1 | function hookAndCallLocalDo() { |
将hook出来的值按照原有的逻辑转化为encrypt函数所需的参数格式:bangboo!Knows!!!
在so文件中没找到像样的可以rc4的密文,那么直接主动调用native层的那个加密爆破一下就好了,爆了差不多一分钟?(忘了
最后一步直接hook改次数为10714就能得到flag了
Bc
0x01 theif_god
逆天,貌似给非预期了,可以直接私有变量访问直接读flag
首先用给的脚本扫出来合约地址
有两个地址,具体哪个是题目地址挨个试了下:
应该就是这个了,计算实际插槽位置:
读 flag 16 进制:
拼接解码:
Hardware
0x01 火眼金睛
固件题,正常binwalk提取一下,一开始随便翻了一下几个分离出来的二进制文件,都没有什么有用的逻辑,正常思维来说存固件逻辑的二进制文件内容应该不小,所以索性按照文件大小排了一下序,最后10400这个文件翻吐了都没找到啥有用的信息,后面锁定在第二大的文件下,这段函数名包奇怪的,最后取出拿到厨子里面嗦一下
真·火眼金睛