欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

Natas overthewire 0-15解题报告

来源:本站整理 作者:sarleon 时间:2017-03-09 TAG: 我要投稿

natas overthewire是一个web安全相关的CTF(或者说hack game)题目设计的十分精巧,值得web安全工程师尝试
地址:http://overthewire.org/wargames/natas/
下面是我前15关的解题报告
level 0
查看源代码,在注释中得到密码
level 1
禁用了右键,用f12即可,还是在注释里面
ZluruAthQk7Q2MqmDeTiUij2ZvWy2mBi
level 2
检查源代码发现有一个pixel.png在files目录下对这个图片文件进行检查,trid,binwalk,发现不存在隐写,这个时候考虑服务器数据,发现files/目录并未禁止访问,目录下有一个users.txt打开之,有密码
sJIJNW6ucpu6HPZ1ZAchaDtwd7oGrD14
level 3
查看源代码
div id="content">
There is nothing on this page
div>
注意这里,Not even google will find it ,说明搜索引擎不会抓取这个相关的页面,说明存在robots.txt
访问之http://natas3.natas.labs.overthewire.org/robots.txt发现一个disallow的目录打开发现一个users.txt 得到密码
Z9tkRkWmpt9Qr7XrR5jWRkgOU901swEZ
level 4
提示:Access disallowed. You are visiting from “” while authorized users should come only from “http://natas5.natas.labs.overthewire.org/”
only come from 说明需要指定HTTP header 的referer字段为该地址,使用curl,或者手写爬虫,或者burpsuite破之即可
 curl -H "referer:http://natas5.natas.labs.overthewire.org/" http://natas4:Z9tkRkWmpt9Qr7XrR5jWRkgOU901swEZ@natas4.natas.labs.overthewire.org/                                                             !10022
得到密码
iX6IOfmpN7AYOQGPwtn3fXpbaJVJcHfq
level 5
提示是 you are not login登录与否一般与以cookie形式储存的session id 有关,查看cookies ,发现有一个loggedin的项,值为0,估计这个就是登录与否的判断,改成1,刷新页面
得到密码
aGoY4q2Dc6MgDq4oL4YtoKtyAg9PeHa1
level 6
有一个输入框,还可以查看后端的代码是从一个引用的文件来引入了secret进行对比,尝试访问该引用的文件(话说我第一次根本没想到,因为这种文件默认都不会给外界的访问权限,所以在安全检测过程中我们还是要突破惯性思维,去尝试每一种可能,最安全的地方也许就是最危险的地方)
得到secret
FOEIUWGHFEEUHOFUOIU
密码
7z3hEENjQtflzgnT29q7wAvMNfZdh0i9
level 7
注释中有提示:
在本身的系统中,也没什么其他办法,看到页面上有查询字符串,尝试注入使用单引号测试,报错,存在注入点
Warning: include('): failed to open stream: No such file or directory in /var/www/natas/natas7/index.php on line 21
Warning: include(): Failed opening ''' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/natas/natas7/index.php on line 21
仔细看后发现并不是注入点,page的value是一个include的地址有了上面的提示,我们把密码文件的地址注入进去使得page=/etc/natas_webpass/natas8显示出密码
这给了我们几个警告:
1 打开本地文件的路径绝对不可以由用户输入
2 要对www-data的权限进行限制,平常的目录中也要做好权限管理,避免777,666权限的出现
密码
 DBfUBfqQG69KvJvJ1iAbMoIpwSNQ9bWe
level 8
和上一关类似,只不过这次的密码是一个放在源码里面的密文,加密方式已经给出,
$encodedSecret = "3d3d516343746d4d6d6c315669563362";
function encodeSecret($secret) {
    return bin2hex(strrev(base64_encode($secret)));
}
对上面的密文进行逆处理即可先hex2bin变成 ==QcCtmMml1ViV3b反转字符串 b3ViV1lmMmtCcQ==decode base64: oubWYf2kBq
得到密码
W0mMhUcRRnG8dcghE4qvk3JA9lGt8nDl
level 9
这一关使用了外部命令, passthru的功能和system函数类似,用于执行shell命令使用了grep我们输入的内容作为grep的内容,但是构建shell命令的形式决定了我们可以对其进行注入,可以为grep增加选项,也可以截断grep来执行其他命令使用 -E "*" 或者 ; cat dictionary.txt # 都可以输出全部内容然而此文件貌似并没有什么我们需要的东西,想起上一节中的那个目录,联想到该目录中应该存在密码注入 ; ls /etc/natas_webpass/natas10 #得到结果
nOpp1igQAkUzaI1GUUjzn1bFVj7xCNzu
level 10
总体与上一关相同,但是从输入中过滤了字符;|&使得我们没有办法注入但仍然可以变更 grep命令.* /etc/natas_webpass/natas11 #也可以使用编码来把被过滤掉的东西注入进去得到密码
U82q5TCMMQ9xuFoI3dYX61s7OZD9JKoK
level 11
EDXp0pS26wLKHZy1rDBPUZk0RKfLGIR3
level 12
上传文件的扩展名只做了前端限制,可以修改html或者用burpsuite来修改属性,上传php代码
GIF89a
print_r(file("/etc/natas_webpass/natas13"));
?>
访问地址,得到密码
jmLTY0qiPZBbaKc9341cqPQZBJv7MQbY
level 13
与上一关类似使用了php的函数exif_imagetype()来验证文件的签名,查看php的文档,这个函数并不是通过检查文件扩展名,而是检查文件的签名(第一个字节)我们只需要修改文件的第一个字节,使其看起来是一个图片文件(同时这对于php是合法的语法,会被显示为HTML)
GIF89a
print_r(file("/etc/natas_webpass/natas13"));
?>
这几关提醒我们上传文件一定要在后端通过扩展名,签名,等多种方法来限制文件的MIMETYPE

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载