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

1626308087_60ef7df759e0c0c8a462b.png!small

1626308095_60ef7dff2832c9ec42cf4.png!small

1626308100_60ef7e04bd03ece58632a.png!small

1626308109_60ef7e0d5cc479e49b32f.png!small

出题人真是皮的很!!!!

http://localhost/pikachu/assets/images/nbaplayer/tmac.jpeg

1626308119_60ef7e176e83f52ef0e16.png!small

查看前台源代码!!!

1626308126_60ef7e1e805eab49765b1.png!small

URL地址为:

http://localhost/pikachu/vul/xss/xss_04.php?message=wo&submit=submit#

查看后台源代码:

//这里讲输入动态的生成到了js中,形成xss

//javascript里面是不会对tag和字符实体进行解释的,所以需要进行js转义

//讲这个例子主要是为了让你明白,输出点在js中的xss问题,应该怎么修?

//这里如果进行html的实体编码,虽然可以解决XSS的问题,但是实体编码后的内容,在JS里面不会进行翻译,这样会导致前端的功能无法使用。

//所以在JS的输出点应该使用\对特殊字符进行转义

小知识:

HTML 中的预留字符必须被替换为字符实体。在 HTML 中,某些字符是预留的。

在 HTML 中不能使用小于号(<)和大于号(>),这是因为浏览器会误认为它们是标签。

如果希望正确地显示预留字符,我们必须在 HTML 源代码中使用字符实体(character entities)。如需显示小于号,我们必须这样写:&lt; 或 &#60;提示:使用实体名而不是数字的好处是,名称易于记忆。不过坏处是,浏览器也许并不支持所有实体名称(对实体数字的支持却很好)。

HTML 中有用的字符实体

注释:实体名称对大小写敏感!

示结果

描述

实体名称

实体编号

空格

&nbsp;

&#160;

<

小于号

&lt;

&#60;

>

大于号

&gt;

&#62;

&

和号

&amp;

&#38;

引号

&quot;

&#34;

撇号

&apos; (IE不支持)

&#39;

分(cent)

&cent;

&#162;

£

镑(pound)

&pound;

&#163;

¥

元(yen)

&yen;

&#165;

欧元(euro)

&euro;

&#8364;

§

小节

&sect;

&#167;

©

版权(copyright)

&copy;

&#169;

®

注册商标

&reg;

&#174;

商标

&trade;

&#8482;

×

乘号

&times;

&#215;

÷

除号

&divide;

&#247;

重要代码:

if(isset($_GET['submit']) && $_GET['message'] !=null){

 $jsvar=$_GET['message'];

//    $jsvar=htmlspecialchars($_GET['message'],ENT_QUOTES);

if($jsvar == 'tmac'){

$html.="<img src='{$PIKA_ROOT_DIR}assets/images/nbaplayer/tmac.jpeg' />";

}

}




<script>

$ms='<?php echo $jsvar;?>';

if($ms.length != 0){

if($ms == 'tmac'){

$('#fromjs').text('tmac确实厉害,看那小眼神..')

}else {

//            alert($ms);

$('#fromjs').text('无论如何不要放弃心中所爱..')

}




}

</script>

所以,构造PAYLOAD时,首先需要闭合之前的JS标签!!!

xiaodi'</script><script>alert(1)</script>

1626308139_60ef7e2b09c4a46697bdf.png!small

来源:freebuf.com 2021-07-15 08:16:14 by: 知非知非知非

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享