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?直接看源码。

源代码:

<?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

既然t_ref参数的vlaue值是接受Referer的参数,可以直接修改Referer,最后参数再给到t_ref
然后成功绕过
故payload:QIANAN " onclick="alert(1) " (上一关使用了鼠标移动事件,这关用onclick事件)

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

然后点击文本框,触发XSS

第十二关:
http://127.0.0.1/xss/level12.php?keyword=good job!

十二关跟第十一关相同套路
上一关使用了input标签接受Referer的参数赋给value。
而此关是获取客户端的user-agent信息然后赋值给input标签的t_ua值,如下图:

源代码:

<?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) "

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

点击Text文本框,触发XSS

第十三关:
http://127.0.0.1/xss/level13.php?keyword=good job!

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

源代码:

<?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) "

插入成功

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

第十四关:
http://127.0.0.1/xss/level14.php

这一关没法玩了,因为这一关给的网址已经访问不了
查看了源码是嵌入了一iframe页面
给的网站已经失效了


有兴趣的小伙伴可以去
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

右击查看了源代码。

分析:
发现了 这段代码:
<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,所以打不开

挂上了一个国外的一个vpn,再次访问:
127.0.0.1/xss/level15.php?src='level1.php?name=<img src=1.gif onerror=alert(1)>'
触发XSS 成功~
未完待续
感谢大家的阅读,以及对07V8的支持
每周都有精英讲师 学术分享 交流探讨
更多干货 敬请关注
以上是关于07V8第26篇技术分享|简单代码审计带你基础入门XSS的主要内容,如果未能解决你的问题,请参考以下文章