pikachu靶场-XSS跨站脚本-xss之htmlspecialchars – 作者:知非知非知非

15次阅读
没有评论

pikachu靶场-XSS跨站脚本-xss之htmlspecialchars - 作者:知非知非知非

pikachu靶场-XSS跨站脚本-xss之htmlspecialchars - 作者:知非知非知非

我们通过查看源代码,可以发现输入的信息在发下的位置!!!

pikachu靶场-XSS跨站脚本-xss之htmlspecialchars - 作者:知非知非知非

小知识:

htmlspecialchars()是PHP里面把预定义的字符转换为HTML实体的函数

预定义的字符是

& 成为 &amp

” 成为 &quot

‘ 成为 &#039

< 成为 &lt

> 成为 &gt

可用引号类型

ENT_COMPAT:默认,仅编码双引号

ENT_QUOTES:编码双引号和单引号

ENT_NOQUOTES:不编码任何引号

这个,我们通过输入信息在源代码中的显示,构造一个PAYLOAD:

如下:

nidongwo”><img src=”#” onmouseover=”alert(‘xss’)”>

回显是这样的!!!

pikachu靶场-XSS跨站脚本-xss之htmlspecialchars - 作者:知非知非知非

没弹!!接着我们查看源代码!!!!

pikachu靶场-XSS跨站脚本-xss之htmlspecialchars - 作者:知非知非知非

如果htmlspecialchars()生效了,这个就有点奇怪了?

PAYLOAD:nidongwo”><img src=”#” onmouseover=”alert(‘xss’)”>

转换后的数据:nidongwo”><img src=”#” onmouseover=”alert(” xss’)”>;=””

看不懂啊!!!

看了大佬的写法,转换后输出的结果

比如双引号,会生成&quot加分号,

比如大于号,会生成&gt加分号!

太乱了,看不懂!!!

我们这里直接查看源代码吧?

核心代码在这!!!

if(empty($_GET[‘message’])){

$html.=”<p class=’notice’>输入点啥吧!</p>”;

}else {

//使用了htmlspecialchars进行处理,是不是就没问题了呢,htmlspecialchars默认不对’处理

$message=htmlspecialchars($_GET[‘message’]);

$html1.=”<p class=’notice’>你的输入已经被记录:</p>”;

//输入的内容被处理后输出到了input标签的value属性里面,试试:’ onclick=’alert(111)’

//        $html2.=”<input class=’input’ type=’text’ name=’inputvalue’ readonly=’readonly’ value='{$message}’ style=’margin-left:120px;display:block;background-color:#c0c0c0;border-style:none;’/>”;

$html2.=”<a href='{$message}’>{$message}</a>”;

看了半天,主要的问题就是htmlspecialchars这个函数默认不对单引号处理!!

所以给定的PAYLOAD为‘ onclick=’alert(111)’

pikachu靶场-XSS跨站脚本-xss之htmlspecialchars - 作者:知非知非知非

源代码是这样!!!

pikachu靶场-XSS跨站脚本-xss之htmlspecialchars - 作者:知非知非知非

来源:freebuf.com 2021-07-15 08:10:32 by: 知非知非知非

正文完
 0