Thinkphp反序列化
实习的时候审代码发现自己对这种反序列化链的寻找能力不太行 于是去找个thinkphp的链子来学习学习
参考文章 https://boogipop.com/2023/03/02/ThinkPHP5.x%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E6%BC%8F%E6%B4%9E%E5%85%A8%E5%A4%8D%E7%8E%B0/
基础知识这里先补充一下基础的知识
namespace等等反序列化链中常见的东西
namespacenamespace实际上就是命名空间,在php类与对象这一章节中用到了命名空间这个概念
我们可以把namespace理解为一个单独的空间,子命名空间就是使用 \来进行划分
12345//例如namespace npm 这就是一个单独的空间namespace npm\a a就是子空间了 就是在npm这个空间里面划分
用代码来解释一下
这里的话npm就是个命名空间 A的话就是被划分的子空间了
这里如果存在多个命名空间的话 我们可以使用use来进行调用
1234567891011121314151617181920212 ...
春秋云镜-Hospital
参考 https://www.cnblogs.com/thebeastofwar/p/17939471
先用fscan扫一下
12345678910111213141516 ___ _ / _ \ ___ ___ _ __ __ _ ___| | __ / /_\/____/ __|/ __| '__/ _` |/ __| |/ // /_\\_____\__ \ (__| | | (_| | (__| < \____/ |___/\___|_| \__,_|\___|_|\_\ fscan version: 1.8.2start infoscan(icmp) Target 39.99.253.63 is alive[*] Icmp alive hosts len is: 139.99.253.63:22 open39.99.253.63:8080 open[*] alive ports len is: 2st ...
NCTF2023-Web复现
这个是南邮的校赛 看了看发现题目质量不错 就来复现一下
https://github.com/X1cT34m/NCTF2023/tree/main
web题目都给了docker可以自行复现
xz师傅写的wp https://exp10it.io/2023/12/nctf-2023-web-official-writeup/#logging
logging这个题其实就是打jndi注入 考察的CVE是这个CVE-2021-44228
其实去看了眼这个CVE 就会发现想要触发JNDI注入的话 是需要这个logger.xxxx方法的
这道题的话就可以采用使用springboot控制台报错的方法来获取到logger方法来执行JNDI注入
(因为springboot控制台报错的话会使用logger来输入日志 这样的话就会执行我们的JDNI注入了)
然后通过Accept来构造畸形请求头来使springboot报错(在host处也行 但是这个只能用一次 因为logger就只打印一次)
这样就可以了
ez_wordpress
CodeQL-学习
https://www.freebuf.com/articles/web/283795.html (主要参考)
https://github.com/Firebasky/CodeqlLearn
粗糙的数据库生成这里生成数据库的方法我用的是这个项目
https://github.com/ice-doom/codeql_compile
根据java源码构建数据库的方法
1codeql database create "D:\google download\cc_database" --language="java" --source-root="D:\google download\micro_service_seclab-main" --overwrite
这里我用的例子是jar包
123python .\codeql_compile.py -a D:\codeql_compile\ezjava.jar -d D:\codeql_compile\ezjava\BOOT-INF\libcodeql database crea ...
2023-安洵杯-web
复现一下安洵的题目 这里就挑几道来复现就行了 复现地址的话在安洵平台上就可以
https://dce.i-soon.net/#/topicBank
直接访问就行了
signal题目给了附件
⾸先这个题因为是把其他⽂件格式转换为yaml格式然后yaml.load()会加载为js对象
然后就去查这个js-yaml是否存在漏洞 啥的
这是默认为危险模式的最后⼀个版本,该模式允许您使⽤ tag 构造任意 JS 函数。!!js/function
直接去搜索js-yaml RCE 也能搜索到类似的文章
https://nealpoole.com/blog/2013/06/code-execution-via-yaml-in-js-yaml-nodejs-module/
最终payload
12"name" : { toString: !!js/function "function(){ flag = process.mainModule.require('child_process').execSync('c ...
针对环境只有DNS出网的反弹shell和隧道搭建
而且这个主机的是采用站库分离的形式 数据库和网站分别在内网两个ip段下
这个只有DNS出网的环境是第一次见(一般来说内网主机都是啥也不出的) 所以来记录学习一下 但是我在第一步就卡住了 tmd 我切换成root用户的时候报了个奇奇怪怪的错误
所以放弃了 不做了 写个文章来记录一下就行了
这里除了学到这个DNS的反弹shell和隧道搭建 还有可以将我们的数据来进行分段传输上去
我们在使用dnscat来反弹shell之后 我们就是用iodine工具来搭建隧道 (这里不直接使用这个dns隧道的原因就是这个东西不能搭配socks协议使用) 使其我们能直接ssh登录该内网服务器
(因为只有DNS出网 并且我们能够ssh登录成功 那么我们就使用ssh来搭建隧道 使其能访问到内网其他主机)
贴个大头师傅的博客地址 https://www.xiinnn.com/posts/icq-tunnelx/
然后这就是全部了
Java-Apache_Jackrabbit_RMI-CVE-2023-37895
参考链接
https://xz.aliyun.com/t/13118
https://boogipop.com/2023/10/16/Apache%20Jackrabbit%20RMI%20RCE%20%E5%88%86%E6%9E%90%E5%8F%8A%E5%88%A9%E7%94%A8/
搭建环境https://jackrabbit.apache.org/jcr/downloads.html#apache-jackrabbit-2-20-10-november-7th-2023
把2.20.10版本的jar包下载下来 然后去github上下载其相同版本的源码
配置好Debug 然后运行jar包
1& 'C:\Program Files\Java\jdk1.8.0_202\bin\java.exe' -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar .\jackrabbit-standalone-2.20.10.jar
部署成功
漏洞分析在Ap ...
Vulntarget-e
从a打到e 我个人感觉e是最好的 可以学到挺多东西的
这个是整个靶机所用到的机器
靶机外网地址 192.168.52.140
攻击机地址 192.168.52.129
先是fscan开扫 但是发现ping失败了 于是就猜测是开启了防火墙 于是只扫端口就行了
这里使用fscan来扫的话 速度太慢了 于是我们使用nmap的-d参数来扫 这样的话也可以绕过防火墙
1nmap -sV -sC -d 192.168.52.140 -p 1-65535
重点是我们发现了这句话 不知道是啥服务这个端口 于是去Google查询了一下 发现是向日葵的一个RCE漏洞
https://mdnice.com/writing/8a41e22d1d0744bd9e8ab5999d3cfebe
直接抓包来打
漏洞真实存在 于是开始进行看看能不能上线主机 先收集一下信息
(防火墙是开启的 并且是用tasklist来查看 发现是存在wdf的 所以这里的话需要上免杀马 并且关掉防火墙)
netsh advfirewall set allprofiles sta ...
TPCTF2023-walk off the earth
参考的是https://boogipop.com/2023/12/01/TPCTF%202023%20Web%20Writeup/#walk-off-the-earth 这篇文章
pow计算
1234567891011121314151617181920base = 'abd3d4a91f15fbc0'from pwn import *import hashlibdef test(suffix): # Concatenate the base and suffix data = base + suffix # Calculate the SHA256 hash hash_value = hashlib.sha256(data.encode()).hexdigest() # Check if the hash value starts with '0000000(7)' if hash_value.startswith('0000000'): return True el ...
JQCTF-Web复现
solo-php源码
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849<?phphighlight_file(__FILE__);class test_upload{ public $check; public $filename; public function __construct($filename) { $this->check = new check(); $this->filename = $filename; } public function __destruct() { if (!$this->check->checkname($this->filename)) { die('error'); } ...