WarGame系列之Natas(Web安全)通关指北(初级篇0-10)详细版


*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

填入初始账号密码进入页面


很简单,直接查看源码
获得natas1密码 gtVrDuiDfck831PqWsLEZy5gyDz1clto

natas1

这一题通过禁止右键查看的方法来阻止你查看网页源代码


这也很简单,可以通过F12方法或者直接通过view-source协议访问(支持Firefox|Chrome)
获得natas2密码 ZluruAthQk7Q2MqmDeTiUij2ZvWy2mBi

natas2


页面没什么信息,还是通过查看网页源代码

发现files文件路径,进行访问

存在目录遍历漏洞,访问此目录下users.txt文件
获得natas3密码 sJIJNW6ucpu6HPZ1ZAchaDtwd7oGrD14

natas3

还是查看网页源代码,发现注释里的提示


通过Google搜索发现信息

存在目录遍历漏洞,访问此目录下users.txt文件
获得natas4密码 Z9tkRkWmpt9Qr7XrR5jWRkgOU901swEZ

natas4


根据提示信息便知考察的是 HTTP的referer来源信息的伪造
获得natas5密码 iX6IOfmpN7AYOQGPwtn3fXpbaJVJcHfq

natas5


根据提示信息便知考察的是 Cookie登录凭证的伪造

抓包查看数据包的Cookie字段,很显然的需要把值改为1
获得natas6密码 aGoY4q2Dc6MgDq4oL4YtoKtyAg9PeHa1

natas6

直接根据提示,查看源代码


可以看到网页通过 include函数包含了 secret.inc文件,那么直接去访问这个文件,却发现显示空白?其实信息只是隐藏了,查看网页源代码即可

根据原网页代码提示,提交secret = "FOEIUWGHFEEUHOFUOIU"即可
获得natas7密码 7z3hEENjQtflzgnT29q7wAvMNfZdh0i9

natas7

还是直接查看源代码


根据提示信息,很显然的就知道此题考察的是 本地文件包含漏洞
直接访问 http://natas7.natas.labs.overthewire.org/index.php?page=/etc/natas_webpass/natas8
获得natas8密码 DBfUBfqQG69KvJvJ1iAbMoIpwSNQ9bWe
借此机会包含下服务器/etc/passwd看看(斜脸笑)

natas8

根据网页源代码,获取解题关键代码


简单分析下代码逻辑:先将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,将其提交

获得natas9密码W0mMhUcRRnG8dcghE4qvk3JA9lGt8nDl

natas9

根据网页源代码,获取解题关键代码


先来学习一下passthru函数

区别:
system() 输出并返回最后一行shell结果。

exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。
passthru() 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上。

很显然,此题考查的是命令注入漏洞
通过||或者 &&; #来截断grep命令并注入cat /etc/natas_webpass/natas10命令

获得natas10密码 nOpp1igQAkUzaI1GUUjzn1bFVj7xCNzu

natas10

还是根据网页源代码,获取解题关键代码


这一题相较上一题多了个 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文件的所有内容

获得natas11密码 U82q5TCMMQ9xuFoI3dYX61s7OZD9JKoK

初级篇(0-10)的writeup就到这里,敬请关注下一篇文章——中级篇(11-20)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值