地址:http://overthewire.org/wargames/natas/
level 0 -> level 1
You can find the password for the next level on this page.(你可以在此界面找到下一级别的代码)
于是查看源码,发现答案在注释中
natas:gtVrDuiDfck831PqWsLEZy5gyDz1clto
level 1 -> level 2
You can find the password for the next level on this page, but rightclicking has been blocked!(你可以在此界面找到下一级别的密码,但是右键单击已被阻止)
F12查看源码,发现答案在注释中
natas2:ZluruAthQk7Q2MqmDeTiUij2ZvWy2mBi
level 2 -> level 3
There is nothing on this page(此页面没有任何内容)
首先查看源码,发现img标签,于是访问这个这个链接http://natas2.natas.labs.overthewire.org/files/pixel.png。
没有任何发现,使者访问它的上一级路径http://natas2.natas.labs.overthewire.org/files,发现user.txt,单击打开,得到密码
natas3:sJIJNW6ucpu6HPZ1ZAchaDtwd7oGrD14
level 3 -> level 4
There is nothing on this page(此页面没有任何内容)
还是查看源码,发现注释中有提示
<!-- No more information leaks!! Not even Google will find it this time... -->
Google Allo不会找到它,我们知道Google 是搜索引擎,不让搜索引擎爬取只需在网站下放一个robots.txt文件,试着访问该文件http://natas3.natas.labs.overthewire.org/robots.txt
页面跳转
User-agent: *
Disallow: /s3cr3t/
第一行:* 表示所有搜索引擎
第二行:Disallow 表示禁止访问,后面接目录或文件名
于是构造连接访问该目录http://natas3.natas.labs.overthewire.org/s3cr3t/
发现user.txt,单击打开,得到密码
natas4:Z9tkRkWmpt9Qr7XrR5jWRkgOU901swEZ
level 4-> level 5
Access disallowed. You are visiting from "http://natas4.natas.labs.overthewire.org/" while authorized users should come only from "http://natas5.natas.labs.overthewire.org/"(访问不被允许,只能来自某个特定的URL)
知识点:HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的首先F12打开火狐浏览器的开发者工具,切换到网络(Network)选项,重新载入,查看页面请求,发现浏览器请求http://natas4.natas.labs.overthewire.org页面的请求头的Referer:http://natas4.natas.labs.overthewire.org
可以利用hackbar构造referer:http://natas5.natas.labs.overthewire.org
页面跳转,得到密码
natas5:iX6IOfmpN7AYOQGPwtn3fXpbaJVJcHfq
level 5 -> level 6
Access disallowed. You are not logged in(访问不被允许,你没有登录)
明明登录了却说没登录,这里涉及http协议的一个知识点cookie了。http协议是一种无状态的协议,每次穿输完数据就会断开连接,这时候就靠cookie进行身份验证了。cookie由服务器分配器给浏览器,存储了会话状态和身份信息,之后每次http 请求,都会带上cookie信息给服务器,服务器会根据cookie信息做出不同的响应。
于是我们F12查看网络选项发现cookie中的loggedin=0,用hackbar改为1即可
natas6:aGoY4q2Dc6MgDq4oL4YtoKtyAg9PeHa1
level 6 -> level 7
页面提示Input secret :,和一个提交按钮以及view sourcecode按钮。可知需要提交一个特定的参数才会返回密码。
首先查看源码,发现关键代码
<?
include "includes/secret.inc";
if(array_key_exists("submit", $_POST)) {
if($secret == $_POST['secret']) {
print "Access granted. The password for natas7 is <censored>";
} else {
print "Wrong secret";
}
}
?>
很明显,是需要我们输入的信息同secret.inc中的secret作比较,于是构造链接访问http://natas6.natas.labs.overthewire.org/includes/secret.inc
页面成功跳转,但是为空白页面无任何信息,说明代码被解析,查看源码,得到secret
<?
$secret = "FOEIUWGHFEEUHOFUOIU";
?>
输入,点击提交,返回密码
natas7 : 7z3hEENjQtflzgnT29q7wAvMNfZdh0i9
level 7 -> level 8
页面有Home和About两个按钮,分别点击后链接变为http://natas7.natas.labs.overthewire.org/index.php?page=home和http://natas7.natas.labs.overthewire.org/index.php?page=about
查看源码发现有一句话被注释掉了
<!-- hint: password for webuser natas8 is in /etc/natas_webpass/natas8 -->
通过浏览器F12查看页面请求,发现访问Home和About都是GET方式提交参数访问的,而不是直接跳转,加上这句可以猜测是文件包含漏洞,随意构造参数(例:about1)测试一下,有如下信息
证明确实是文件包含漏洞,于是将/etc/natas_webpass/natas8作为参数传入,得到密码
natas8 : DBfUBfqQG69KvJvJ1iAbMoIpwSNQ9bWe
level 8 -> level 9
查看源码,发现关键代码
<?
$encodedSecret = "3d3d516343746d4d6d6c315669563362";
function encodeSecret($secret) {
return bin2hex(strrev(base64_encode($secret)));
}
if(array_key_exists("submit", $_POST)) {
if(encodeSecret($_POST['secret']) == $encodedSecret) {
print "Access granted. The password for natas9 is <censored>";
} else {
print "Wrong secret";
}
}
?>
这是一道信息安全加密问题
base64_encode是进行base64加密
strrev是将字符串倒过来
bin2hex是将assic码转化为十六进制
于是构造
<?php
echo base64_decode(strrev(hex2bin("3d3d516343746d4d6d6c315669563362")));
?>
得到oubWYf2kBq,输入后点击提交得到密码
natas9 : W0mMhUcRRnG8dcghE4qvk3JA9lGt8nDl
level 9 -> level 10
<?
$key = "";
if(array_key_exists("needle", $_REQUEST)) {
$key = $_REQUEST["needle"];
}
if($key != "") {
passthru("grep -i $key dictionary.txt");
}
?>
知识点:
passthru()函数用来执行外部命令的
grep -i 为不分大小写匹配查询
既然调用系统命令,可以尝试命令注入,先用;截断,在构造查看命令 cat /etc/natas_webpass/natas10;
得到密码
natas10 : nOpp1igQAkUzaI1GUUjzn1bFVj7xCNzu
level 10 -> level 11
For security reasons, we now filter on certain characters(出于安全原因,我们过滤掉了某些字符)
查看源码,发现;|&被过滤了,但是grep支持正则表达式,于是可以构造 .* /etc/natas_webpass/natas11提交
natas11:U82q5TCMMQ9xuFoI3dYX61s7OZD9JKoK