![](https://i-blog.csdnimg.cn/blog_migrate/9c52712b2962e39436fc1a06a0122ace.png)
*OverTheWire社区是一个提供wargame的网站,可以帮助安全爱好者以趣味的方式进行学习、练习安全知识。
本系列文章旨在记录笔者通关思路,其中解题思路也会参考借鉴网上已有文章,在此感谢相关作者的分享精神*
NATAS
Natas教授服务器端Web安全的基础知识。
每一关都有一个网站,类似http://natasX.natas.labs.overthewire.org 其中X是每一关的编号。每一关都要输入用户名(例如,level0的用户名是natas0)及其密码才能访问。
所有密码存储在/etc/natas_webpass/中。例如natas1的密码存储在文件/etc/natas_webpass/natas1中,只能由natas0和natas1读取。
从这里开始:
Username: natas0
Password: natas0
URL: http://natas0.natas.labs.overthewire.org
natas0
填入初始账号密码进入页面
![](https://i-blog.csdnimg.cn/blog_migrate/b032a461998a64da6d5961b4382e2691.png)
很简单,直接查看源码
![](https://i-blog.csdnimg.cn/blog_migrate/ed1574f5b3f4a0c0190f9bd0de6b9a13.png)
gtVrDuiDfck831PqWsLEZy5gyDz1clto
natas1
这一题通过禁止右键查看的方法来阻止你查看网页源代码
![](https://i-blog.csdnimg.cn/blog_migrate/443b5d4bcfbc44c4cc290709717b8cb6.png)
这也很简单,可以通过F12方法或者直接通过view-source协议访问(支持Firefox|Chrome)
![](https://i-blog.csdnimg.cn/blog_migrate/b64deb3196069fc43c7db42b47a293fa.png)
ZluruAthQk7Q2MqmDeTiUij2ZvWy2mBi
natas2
![](https://i-blog.csdnimg.cn/blog_migrate/cc4e059942969d93cd15411ac96edf75.png)
页面没什么信息,还是通过查看网页源代码
![](https://i-blog.csdnimg.cn/blog_migrate/439b9932c658c63c971c133f146aa8ba.png)
发现files文件路径,进行访问
![](https://i-blog.csdnimg.cn/blog_migrate/fa1388a8d90361b0bae5d3b9691ffb9b.png)
存在目录遍历漏洞,访问此目录下users.txt文件
![](https://i-blog.csdnimg.cn/blog_migrate/23c2fb9dc3e82aef37ebef07a3e0e696.png)
sJIJNW6ucpu6HPZ1ZAchaDtwd7oGrD14
natas3
还是查看网页源代码,发现注释里的提示
![](https://i-blog.csdnimg.cn/blog_migrate/9cb4df6176a868442c0be45663fa764b.png)
通过Google搜索发现信息
![](https://i-blog.csdnimg.cn/blog_migrate/8596f8bde4f66e5863c0fc0ebf5262c4.png)
存在目录遍历漏洞,访问此目录下users.txt文件
![](https://i-blog.csdnimg.cn/blog_migrate/ef25095f25a6841d0ddc5177d853b06a.png)
Z9tkRkWmpt9Qr7XrR5jWRkgOU901swEZ
natas4
![](https://i-blog.csdnimg.cn/blog_migrate/3cab77f8689c19a00031350560f8dcb3.png)
根据提示信息便知考察的是 HTTP的referer来源信息的伪造
![](https://i-blog.csdnimg.cn/blog_migrate/9af202efebf71ea6adbae108b71e8891.png)
iX6IOfmpN7AYOQGPwtn3fXpbaJVJcHfq
natas5
![](https://i-blog.csdnimg.cn/blog_migrate/45bfa10e4b789d1c8b4a10159b4bb388.png)
根据提示信息便知考察的是 Cookie登录凭证的伪造
![](https://i-blog.csdnimg.cn/blog_migrate/2a901862d1098c1e83407fb8fc573ff4.png)
抓包查看数据包的Cookie字段,很显然的需要把值改为1
![](https://i-blog.csdnimg.cn/blog_migrate/7cfa91a037790842751ae7e15a9368e7.png)
aGoY4q2Dc6MgDq4oL4YtoKtyAg9PeHa1
natas6
直接根据提示,查看源代码
![](https://i-blog.csdnimg.cn/blog_migrate/9cf780b8fd9adc718411914613c2c997.png)
可以看到网页通过
include
函数包含了
secret.inc
文件,那么直接去访问这个文件,却发现显示空白?其实信息只是隐藏了,查看网页源代码即可
![](https://i-blog.csdnimg.cn/blog_migrate/3725c0df10078972f26fbc983ab60a8c.png)
根据原网页代码提示,提交secret = "FOEIUWGHFEEUHOFUOIU"即可
![](https://i-blog.csdnimg.cn/blog_migrate/c6b0c2f7d61f5124d260c3db1797e21f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/aa3b7c60c4c8dd6a0ed0e0bca4e0ebc4.png)
7z3hEENjQtflzgnT29q7wAvMNfZdh0i9
natas7
还是直接查看源代码
![](https://i-blog.csdnimg.cn/blog_migrate/fe6ce5d3bdb5623a3d442c331ba4e5c7.png)
根据提示信息,很显然的就知道此题考察的是 本地文件包含漏洞
直接访问 http://natas7.natas.labs.overthewire.org/index.php?page=/etc/natas_webpass/natas8
![](https://i-blog.csdnimg.cn/blog_migrate/fbbb87755ecd1dcfda44e4194375938f.png)
DBfUBfqQG69KvJvJ1iAbMoIpwSNQ9bWe
借此机会包含下服务器/etc/passwd看看(斜脸笑)
![](https://i-blog.csdnimg.cn/blog_migrate/d7b840750cbf95a7e19bd7388bc4c5de.png)
natas8
根据网页源代码,获取解题关键代码
![](https://i-blog.csdnimg.cn/blog_migrate/93541694c98ed0153a3462b73aa0b30e.png)
简单分析下代码逻辑:先将encodedSecret值进行
base64
编码、然后用
strrev
函数进行倒序,再用
bin2hex
函数转为16进制,返回结果;如果输入的字符值=$encodedSecret就返回Natas9的密码
理清楚代码逻辑,那么解题思路也就很简单了:直接对$encodedSecret值进行逆还原即可
<?php
echo hex2bin("3d3d516343746d4d6d6c315669563362");
echo "\n";
echo strrev(hex2bin("3d3d516343746d4d6d6c315669563362"));
echo "\n";
echo base64_decode(strrev(hex2bin("3d3d516343746d4d6d6c315669563362")));
逆运算得的值oubWYf2kBq
,将其提交
![](https://i-blog.csdnimg.cn/blog_migrate/0442df6e1c18cae2995ee29f0331a6d7.png)
获得natas9密码W0mMhUcRRnG8dcghE4qvk3JA9lGt8nDl
natas9
根据网页源代码,获取解题关键代码
![](https://i-blog.csdnimg.cn/blog_migrate/2e1c17a8b9ed293f82ca1ea0bdedbf0a.png)
先来学习一下passthru函数
区别:
system() 输出并返回最后一行shell结果。
exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。
passthru() 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上。
很显然,此题考查的是命令注入漏洞
通过||
或者 &&
和 ;
#
来截断grep
命令并注入cat /etc/natas_webpass/natas10
命令
![](https://i-blog.csdnimg.cn/blog_migrate/09b9b82d2d2fcc9fbc146744bfe560e7.png)
nOpp1igQAkUzaI1GUUjzn1bFVj7xCNzu
natas10
还是根据网页源代码,获取解题关键代码
![](https://i-blog.csdnimg.cn/blog_migrate/8aa7808ada356b3f63c44579c35a05b9.png)
这一题相较上一题多了个
preg_match
函数,用以匹配特殊字符
;
|
&
所以,如果我们还用上一题的命令注入方法就会被拦截,那么剩下就要研究下
grep
这个函数
-E :开启扩展(Extend)的正则表达式
-i :忽略大小写(ignore case)
模式部分:
1、直接输入要匹配的字符串:比如我要匹配一下hello.c文件中printf的个数:grep -c "printf" hello.c
2、使用基本正则表达式,下面谈关于基本正则表达式的使用:
匹配字符:
. :任意一个字符。
[abc] :表示匹配一个字符,这个字符必须是abc中的一个。
[a-zA-Z] :表示匹配一个字符,这个字符必须是a-z或A-Z这52个字母中的一个。
[^123] :匹配一个字符,这个字符是除了1、2、3以外的所有字符。
那么我们可以通过grep -i . /etc/natas_webpass/natas11
达到匹配/etc/natas_webpass/natas11
文件的所有内容
![](https://i-blog.csdnimg.cn/blog_migrate/f3bae3851d0361cb60b7868f73e88165.png)
U82q5TCMMQ9xuFoI3dYX61s7OZD9JKoK
初级篇(0-10)的writeup就到这里,敬请关注下一篇文章——中级篇(11-20)