bWAPP靶场之HTML Injection(GET)

0x00 前言

最近想把bwapp通关~~冲鸭!

0x01 测试过程

先随便输入一下,发现输入的名字会输出到页面上
bWAPP靶场之HTML Injection(GET)_第1张图片
1.Low
由于会输出输入的名字,我们先尝试一下能不能弹框,OK~~

payload:?firstname=&lastname=ruanruan&form=submit

bWAPP靶场之HTML Injection(GET)_第2张图片
再尝试引入外链

payload:?firstname=quanquan&lastname=ruanruan&form=submit

bWAPP靶场之HTML Injection(GET)_第3张图片
2.Medium
使用Low等级的两个payload,发现都没执行
在这里插入图片描述
在这里插入图片描述
可能过滤替换了一些字符
分析源码可以使用urlencode绕过,由于是在浏览器提交payload,浏览器会对url进行一次解码,所以我们需要对payload进行两次urlencode。payload:

?firstname=%253Cscript%253Ealert%25281%2529%253C%252fscript%253E&lastname=ruanruan&form=submit

bWAPP靶场之HTML Injection(GET)_第4张图片
payload:

?firstname=%253Ca%2520href%253D%2522https%253A%252f%252fblog.csdn.net%252fsyy0201%2522%253Equanquan%253C%252fa%253E&lastname=ruanruan&form=submit

bWAPP靶场之HTML Injection(GET)_第5张图片
3.High

0x02 源码分析

1.Low
bWAPP靶场之HTML Injection(GET)_第6张图片
无任何过滤,直接输出。
2.Medium
关键代码:functions_external.php
bWAPP靶场之HTML Injection(GET)_第7张图片
从第92、93行可以知道,该函数使用了str_replace()将<>转换成HTML实体字符。但是在输出的时候又对输出进行了url解码。那么我们就可以利用url编码绕过str_replace的检查。
3.High
bWAPP靶场之HTML Injection(GET)_第8张图片
使用了htmlentities()函数将输入转换为 HTML 实体。emmm绕不过

你可能感兴趣的:(bWAPP靶场学习)