前言
纪念一下,打的很爽Pwn抢了4道一血,可惜最后3分钟第一被超了
![image-20230815163205113](/p/2023NepCTF/image-20230815163205113.png)
Pwn
srop
Srop一把梭,这里要注意,跳转是PLT表的syscall函数和真实的系统调用不一样,在函数内会将rdi赋值给rax,后面的参数寄存器都要后移一位
1 | from pwn import * |
HRPVM2.0
核心思想是替换文件,这里重写了kernel文件,之后python再次调用程序就可以执行了shell了
![image-20230814091413997](/p/2023NepCTF/image-20230814091413997.png)
命令顺序如下,这里不能输入#,但是shell脚本使用Popen需要有shabang开头,但是shabang并不被sh执行,但输入又不能输入回车,所以这里可以采用env -S绕过
1 | mkdir app/templates |
![image-20230814091915281](/p/2023NepCTF/image-20230814091915281.png)
但是mount会需要权限校验,这里需要利用溢出漏洞,off by “two”,也就是爆破1/16,踩中一个权限偏移内不为0的有效的堆地址,就可以绕过权限校验
![image-20230814091404375](/p/2023NepCTF/image-20230814091404375.png)
exp
1 | from pwn import * |
Nep router
https://gitee.com/baozhazhizi/IoT-vulhub/tree/master/Totolink/CVE-2022-41518
CVE-2022-41518一把梭,这里用反弹shell得到flag
1 | import contextlib |
login
首先是路径穿越,由于不会校验目录,可以直接访问文件,下载文件,最后可以下载得到login ELF文件以及libc库,之后逆向很快能看到sprintf格式化字符串漏洞,最难就是本地调试找堆指针
exp
1 | import struct |
HRP-CHAT
这一套题都是源码审计的题目,漏洞也很简单
1
SQL注入,注意这里不能用万能密码1’ or 1=1—因为在client中scanf不支持空格,所以就要先在数据库中注册一个用户名为1的用户,然后再次注册一个用户名为1'--
![image-20230814094413198](/p/2023NepCTF/image-20230814094413198.png)
2
首先分析源码(其实也不用chat的sever,只要看client的处理逻辑即可)可以看到这里Bot模式只会返回一个字符串'远程AI协助服务正在开发中!'
,但是我们需要服务器返回RemoteVIPApplicationCertificationHasPassed
这一串才能获得flag,那么我们就需要伪造服务器返回的message。我们可以看Chat模式下的服务器的原理,服务器就是转发消息进行广播。那么我们就可以想到
![image-20230814094950217](/p/2023NepCTF/image-20230814094950217.png)
如果让一台机器在Bot模式下,另一台机器在Chat模式下
![image-20230814095426656](/p/2023NepCTF/image-20230814095426656.png)
那么我们就可以利用广播的机制,伪造服务器返回message,这里也没有做任何校验,所以就能得到flag
![b9d03732b675ba6d6a492b90d01f9db](/p/2023NepCTF/b9d03732b675ba6d6a492b90d01f9db.png)
3
3号题目我看不太出来有啥漏洞,感觉就是正常的逻辑,抽卡获取角色,用message查看当前角色池子和技能,抽到H3h3QAQ就可以了,释放第二个技能log4j,就能打死ThTsOd了
![6a5cba2c75f12515107d0ae7af099ac](/p/2023NepCTF/6a5cba2c75f12515107d0ae7af099ac.png)
4
这个比较玄学,在我打2号flag的时候,可能是2号flag需要卡一个时机,我就写了脚本爆破,可能请求太多了,服务器就崩溃了,进入Safe box的cmd界面,输入Safe_Mode_Key就可以获得flag
Misc
codes
pwn的思路打,先泄露libc,找到偏移直接system(“env”)一把梭
1 |
|
与AI共舞的哈夫曼
确实不用自己写代码,GPT一把梭
1 | def decompress(input_file, output_file): |
ConnectedFive
万宁五子棋,注意下棋到同一个位置会死机所以要,写逻辑爆破,为了提高胜率,这里采用最朴素的策略,计算每一个空白位置自己的棋子的密度,来判断哪些位置更优
exp
1 | import random |
CheckIn
b站发不出去,等了一会儿,flag直接在题目描述了
![image-20230814100358316](/p/2023NepCTF/image-20230814100358316.png)
陌生的语言
![7612dfe97ed54dfe36942465eba34b7](/p/2023NepCTF/7612dfe97ed54dfe36942465eba34b7.jpg)
https://ay.medyotan.ga/upload/lwa_moonrunes.png
![image-20230814104059226](/p/2023NepCTF/image-20230814104059226.png)
直接出
NEPNEP_A_BELIEVING_HEART_IS_YOUR_MAGIC
小叮弹钢琴
莫斯编码得到YOUSHOULDUSETHISTOXORSOMETHING
,字面意思,你需要用这个xor,还有一段直接mid看
![image-20230814101009564](/p/2023NepCTF/image-20230814101009564.png)
1 | x = 0x370a05303c290e045005031c2b1858473a5f052117032c39230f005d1e17 |
大小写转换异或32
你也喜欢三月七么
首先是用群名字sha256得到dd8e671df3882c5be6423cd030bd7cb69671ef27dfe7a541903edc4e23168009
取前面的16个字节
![image-20230814101534500](/p/2023NepCTF/image-20230814101534500.png)
得到https://img1.imgtp.com/2023/07/24/yOkXWSJT.png
![image-20230814101546437](/p/2023NepCTF/image-20230814101546437.png)
一眼星穹铁道的文字
![efa6d5119c9f4eef31c7cdfea8d5312](/p/2023NepCTF/efa6d5119c9f4eef31c7cdfea8d5312.png)
翻译可得
HRP_aIways_likes_March_7th这里的aIways的I是大写的i
lic
磁带信息,先用audiotap转磁带文件,再用010打开
![image-20230814101909845](/p/2023NepCTF/image-20230814101909845.png)
可以看到文字的NepCTF形状,利用脚本反转之后可以看到
1 | with open("attachment.tap", "rb") as f: |
Crypto
random_RSA
winner’s攻击,这里用了低指数解密算法的脚本https://github.com/pablocelayes/rsa-wiener-attack,恢复d
因为phi(n^2)近似(q^2-1)(p^2-1),先用命令交互出一组数据,之后使用下面脚本爆破
得到d之后
因为$ed-1=k(p^2-1)(q^2-1)=k(p^2q^2-p^2-q^2+1)=k(n^2-p^2-q^2+1)$
所以可以利用$(ed-1+n^2)/n$得到k
之后一把梭求p,q即可
1 | import ContinuedFractions, Arithmetic, RSAvulnerableKeyGenerator |
simple_des
爆破9位恢复L,之后逆推下面这个操作即可恢复L,R的初始,由于LR来自key其中的56位,所以只要知道key的56个bit即可
1 | for i in range(16): |
exp
1 | from operator import add |
Web
ez_java_checkin
简单的java反序列化漏洞,一把梭
![4bfea74d624d582500046b3938b36a9](/p/2023NepCTF/4bfea74d624d582500046b3938b36a9.png)
独步天下-转生成为镜花水月中的王者
渗透签到,提示环境变量提权,一把梭
1 | echo "/bin/sh"> /tmp/ports-alive |
作者: Csome