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

Posted 07v8论安全

tags:

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

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

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

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


第十一关:

 

http://127.0.0.1/xss/level11.php?keyword=good job!



这里跟第十关一样,想必还是隐藏了form表单的input标签属性。


审查元素发现多了一个t_ref参数,这个参数接收了上一关的url?直接看源码。


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


源代码:


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


<?php

ini_set("display_errors", 0);

$str = $_GET["keyword"];

$str00 = $_GET["t_sort"];

$str11=$_SERVER['HTTP_REFERER'];

$str22=str_replace(">","",$str11);

$str33=str_replace("<","",$str22);

echo "<h2>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>

<form id=search>

<input name="t_link"  value="'.'" type="hidden">

<input name="t_history"  value="'.'" type="hidden">

<input name="t_sort"  value="'.htmlspecialchars($str00).'" type="hidden">

<input name="t_ref"  value="'.$str33.'" type="hidden">

 


分析:

 

发现与上一关不同的是,多了一个


$str11=$_SERVER['HTTP_REFERER']; 



经过str_replace()函数匹配掉<>,最后在t_ref 的vlaue值输出


先用burpsutie抓包,发现了head 部分的 Referer 指向了前一关的过关url


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


既然t_ref参数的vlaue值是接受Referer的参数,可以直接修改Referer,最后参数再给到t_ref


然后成功绕过

 

故payload:QIANAN " onclick="alert(1) " (上一关使用了鼠标移动事件,这关用onclick事件)


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


成功插入,修改input的属性为Text


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


然后点击文本框,触发XSS


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


第十二关:

 

http://127.0.0.1/xss/level12.php?keyword=good job!

 


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


十二关跟第十一关相同套路


上一关使用了input标签接受Referer的参数赋给value。


而此关是获取客户端的user-agent信息然后赋值给input标签的t_ua值,如下图:


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


源代码:


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


<?php

ini_set("display_errors", 0);

$str = $_GET["keyword"];

$str00 = $_GET["t_sort"];

$str11=$_SERVER['HTTP_USER_AGENT'];

$str22=str_replace(">","",$str11);

$str33=str_replace("<","",$str22);

echo "<h2>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>

<form id=search>

<input name="t_link"  value="'.'" type="hidden">

<input name="t_history"  value="'.'" type="hidden">

<input name="t_sort"  value="'.htmlspecialchars($str00).'" type="hidden">

<input name="t_ua"  value="'.$str33.'" type="hidden">

 


分析:


比上一关多了这一段代码:


$str11=$_SERVER['HTTP_USER_AGENT'];


PHP中HTTP_USER_AGENT是用来获取用户的相关信息的,包括用户使用的浏览器,操作系统等信息,所以此关跟上关一样。


采用抓包工具 修改数据包绕过。

 

故payload:QIANAN " onclick="alert(1) "


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


插入成功,修改input的属性为Text


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


点击Text文本框,触发XSS


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


第十三关:

 

http://127.0.0.1/xss/level13.php?keyword=good job!

 

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


这关依然有隐藏的form表单,有个t_cook参数有值


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


源代码:


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


<?php

setcookie("user", "call me maybe?", time()+3600);

ini_set("display_errors", 0);

$str = $_GET["keyword"];

$str00 = $_GET["t_sort"];

$str11=$_COOKIE["user"];

$str22=str_replace(">","",$str11);

$str33=str_replace("<","",$str22);

echo "<h2>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>

<form id=search>

<input name="t_link"  value="'.'" type="hidden">

<input name="t_history"  value="'.'" type="hidden">

<input name="t_sort"  value="'.htmlspecialchars($str00).'" type="hidden">

<input name="t_cook"  value="'.$str33.'" type="hidden">

 


分析:


多了两段代码


setcookie("user", "call me maybe?", time()+3600);

$str11=$_COOKIE["user"];

 

Setcookie()函数创建一个名为”user”的cookie,然后把” call me maybe?” 赋值给user。


$str11接受cookie的值,然后又是一个str_replace()函数匹配去掉<>符号。


然后在t_cook的value值输出$str33的值。


因此,只要在抓包工具里修改cookie值字段的user就能达成绕过。

 

故payload:QIANAN " onclick="alert(1) "


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


插入成功


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


修改input的属性为Text,点击文本框触发XSS


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


第十四关:

 

http://127.0.0.1/xss/level14.php



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


这一关没法玩了,因为这一关给的网址已经访问不了


查看了源码是嵌入了一iframe页面


给的网站已经失效了


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


有兴趣的小伙伴可以去 


http://wooyun.jozxing.cc/static/bugs/wooyun-2016-0194934.html 


查看原理,是通过修改图片的exif信息,造成解析图片exif触发XSS。

 

第十五关:

 

通过十四关的源码得到十五关的url:

 

http://127.0.0.1/xss/level15.php?src=1.gif


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


右击查看了源代码。


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


分析:


发现了 这段代码:


<span class="ng-include:1.gif"></span>


span便签里面引用了AngularJS ng-include 指令。


ng-include 指令用于包含外部的 HTML 文件。


这段代码是引用了1.gif,我回去看了xss小游戏的所有文件里面并没有发现这个1.gif文件,恰恰是一个提示


ng-include默认情况下包含的文件是要在同一个域名下,所以可以直接引用其他关卡的文件来触发XSS。


这里直接引用没有的1.gif

 

故payload:'level1.php?name=<img src=1.gif onerror=alert(1)>'

 

好吧,结果发现并没有什么卵用,并没有执行,好了装逼失败


百思不得其解,然后回到源代码看看


上面有段js代码引用了一个js文件,发现是一个google的一个站点,我没有挂vpn,所以打不开


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


挂上了一个国外的一个vpn,再次访问:

 

127.0.0.1/xss/level15.php?src='level1.php?name=<img src=1.gif onerror=alert(1)>'

 

触发XSS 成功~


未完待续


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

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


更多干货 敬请关注

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

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

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

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

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

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

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