其他分享
首页 > 其他分享> > 这几场CTF赛后总结

这几场CTF赛后总结

作者:互联网

失踪人口回归

打CTF这么长时间了弟弟还是很菜呜呜呜,
这东西知识点多而且杂,还是要经常总结一下的,希望自己以后能多进步一点,进步地快一点。


一、PHP序列化字符串类名大小写不敏感问题

PHP中的变量名还有常量名是区分大小写的,但是函数名类名不区分


二、【长城杯web3】吐了做不出来但是初次手搓opcode搞一手Pickle变量覆盖

参考两篇文章学习pickle opcode
pickle反序列化初探
pickle反序列化的利用技巧总结

web3原题里面有一个显示源代码的,就open(__file__).read()

本来以为__file__这个变量就相当于写死了,但是后来在第二篇文章里面摸摸__main__摸出了东西

太菜了,昨晚搓opcode搓到一点还没搓出来,今天早上终于搓出来了。
在这里插入图片描述
重点就是最后这个s(小写)指令
在这里插入图片描述

得注意的是,在实际的操作中,这个key-value在栈上的顺序是反过来的:最上面的是value,下面的是key。
在这里插入图片描述
应用文件目录下面放一个flag.txt
在这里插入图片描述
在这里插入图片描述
还就那个成功

如果有大佬觉得太小儿科,弟弟初学pickle别骂弟弟呜呜呜


三、【长城杯】java_url 知识点

P神知识星球里有这么个知识点

new URL("url:file://xxxxxxx")
等价于
new URL("file://xxxxxxx")

提一嘴,如果是windows系统下,那么路径就应该是:

file:/盘符:/xxxxxxx

或者把前面的url:换成类似%00%0a这样的空字符也是可以过的。

三续、扩展SSRF知识点

1.netdoc 协议

What is the SSRF vulnerability (Server Side Request Forgery)? 一文中介绍到了 netdoc 协议
在这里插入图片描述
就像图上作者所说的,如果简单的 file 协议就能读到文件,那对攻击者(倒不如说是CTFer)来说,就太轻松了。在最后他介绍道,在java的环境下,netdoc协议也可以和前者发挥同样的作用。

但是经过测试,我发现netdoc协议的使用是有限制的,在JDK 9之后,netdoc协议将会失效。
消息来源:https://bugs.openjdk.java.net/browse/JDK-8176351
在这里插入图片描述
在JDK 9里面会报MalformedURLException,而在我的JDK 13的测试环境下,报的是:

unknown protocol:netdoc

证明netdoc协议在后面版本已经被完全废除。

2. jar协议

jar协议在SSRF里一般拿来获取压缩文件里面的内容

jar:file:/xxxxx/xxx.zip!/xxx.xxx

在这里插入图片描述

(flag写得逼真点拿来YY)

3. IP地址的trick

ctfshow上SSRF专题里有关于IP的tricks,看了下羽师傅写的wp,等价本机地址的格式有:

在第一点的参考文章里也写到了这一点:
在这里插入图片描述
总而言之,就是IP地址的每个数字部分都可以用八进制、十进制和十六进制书写,三者混用也没有关系,而且整条IP转换成无符号整数也不影响使用。

图片中的IP地址我在Windows下ping过了,可以用。

三、【天翼杯】redis SSRF

1.基本知识

redis通信使用RESL协议,该协议序列化后的格式如下:

redis通信的请求和响应中,每条命令或声明都以\r\n结束。

2. 认证和加载外部模块

认证部分在菜鸟教程中的Redis 连接版块中有介绍到:
在这里插入图片描述
那么在实际环境中对远程redis服务器请求(socket)如下内容即可进行认证:

AUTH 你的密码\r\n

在认证完成后,即可利用module load命令(Redis 4.x后)加载外部扩展(即so库),之后便可执行对应的命令,这个内容在WP里有,有兴趣的师傅们可以搜一下EDI的天翼杯WP。

未完待续

本来还想复现下谷歌上搜不到的CVE-2019-14439,有点晚,先写这么多吧。
CTFer们一起加油!
Hack the planet!

标签:__,协议,netdoc,SSRF,xxx,CTF,file,几场,赛后
来源: https://blog.csdn.net/qq_17696915/article/details/120462205