实验来源:合天网安实验室
预备知识本实验要求实验者具备如下的相关知识。
HTTP协议,报文的组成部分等,请参考http://raytaylorlin.com/Tech/web/HTTP/HTTP-message/以及简单的js脚本编写能力。
拿到KEY。
打开服务器上的网页,输入10.1.1.23。点击CTF-WEB小技俩超链接,然后点击第一关的按钮。
只有几个文字,看看源代码有什么见不得人的东西
代码也没什么特别的,但是有一个注释,这个1.php.bak是什么呢,.bak就是备份文件的扩展名啊,我们看看能不能访问这个文件
相比之下多了3个’; ,我们在看看源代码有什么不同
太好了,我看到了希望了,出现了第二关的地址了,我们可以直接在地址栏输入直接进入第二关,但作为学安全的的你怎么会这样,你肯定会像下面这样,就是我们常用的F12,不过因为通过网页访问虚拟机F12无效,只能右键了,我们把注射删掉,多余的删掉不就出来一个第二关的按钮,直接点击不是更爽
不过火狐不能完全编辑,只能编辑标签内的东西,或注释里面的东西,右键没编辑选项,只能双击了
只能编辑注释里面的内容,有鸟用啊
我的xp的ie8都有啊
算了,在这里还是输入地址进入第二关算了,或者用ie直接进入,都是代码的兼容性不好,改成下面这样,这是设计师的大意了
直接点击进入第三关,结果又跳转回the2nd.php了,这里应该是验证了HTTP请求头的Referer字段,这个字段就是告诉服务器我从哪个页面链接过来的
有个输入框,有什么用呢,sql注入?XSS?试试xss吧,输入<script>alert(‘xss’)</script>
果然可以xss喔。
分析:首先xss这个对话框先于你从哪里来这对话框弹出,这才给我们的xss提供了机会,不然我们又跳回第二关的页面了,这使我们进入第三关成为了可能,我猜他的referer验证是如果referer不是本页面(即3rd.php),就跳回第二关
猜测代码如下:(php代码)
<html>
<head>
<title></title>
</head>
<body>
<?php
//将我们在第二关输入的内容输出出来
echo $_POST['text'];
//如果不是从3rd.php跳转过来的,就跳回the2nd.php
if ($_SERVER["HTTP_REFERER"] != 'http://10.1.1.23/1/3rd.php