Wargames靶场之natas(web安全)

前言

Natas系列包含服务器端Web安全的基础知识。

每个级别的 natas 都由位于 http://natasX.natas.labs.overthewire.org 处的自己的网站组成,其中 X 是级别 数。没有 SSH 登录。要访问某个级别,请输入用户名 对于该级别(例如,NATAS0 表示级别 0)及其密码。

每个级别都可以访问下一级的密码。你的任务是以某种方式获取下一个密码并升级。所有密码也是 存储在 /etc/natas_webpass/ 中。例如,存储 natas5 的密码 在文件 /etc/natas_webpass/natas5 中,只有 natas4 和 纳塔斯5。

难度:适合初学者或需要复习web安全知识的师傅

00 natas0

直接查看源代码

01 natas1

不能右键直接查看源代码,可以使用F12或者curl+u

02 natas2

查看源代码,发现存在files文件夹

试试访问,发现存在目录遍历漏洞

 点击users.txt,果不其然出现了密码

03 natas3

点击源代码

 

"Not even Googel will find it "让我想到了robots.txt文件(该文件限定了一些不允许搜索引擎查找到的文件或者文件夹)

 

 接下来就是访问文件夹,文件和上一关一样

04 natas4

第一次访问网站

 点击刷新refresh page,出现了我们的页面url,说明“”内接收了refer头,使用bp构造

构造成功 

 

 05 natas5

提示没有登陆,可能是请求头部有问题,上bp

loggedin改为1

 

 06 natas6

array_key_exists 函数

功能:检查指定的键名是否存在于指定的数组中。

它的语法如下:bool array_key_exists ( mixed $key , array $array )。其中,$key 是要检查的键名,$array 是要检查的数组。如果给定的 $key 在 $array 中存在,则该函数返回 true,否则返回 false。

发现需要输入正确的secret才能给出密码,一开始以为是php弱比较绕过,发现构造不了

 后面发现该页面包含了“includes/secret.inc”,那么试试直接访问可不可行,访问并查看源代码 

根据得到的secret输入进去

 07 natas7

典型的文件包含|ssrf

 

 home改为../,果然是文件包含,而且是本地文件包含,直接爆出来路径,说明当前路径在/var/www/natas/natas7,

根据源代码的提示找需要的文件

 这里需要跳转四级目录

或者直接根目录访问也可以

 08 natas8

源代码查看,涉及到简单的代码问题

 只需要构造这个解密函数即可,方法是先进行hex2bin,即十六进制转换为二进制,再将字符串反转,再进行base64解密,用在线php运行

 输入oubWYf2kBq,得到密码

 09 natas9

php执行系统外部命令的函数exec(),passthru(),system(),shell_exec()

       1、exec(命令,数组,状态)

        exec执行系统外部命令不会输出结果,而是返回结果的最后一行,如果你想得到结果你可以使用第二个参数,让其输出到指定的数组,此数组一个记录代表输出的一行,即如果输出结果有20行,则这个数组就有20条记录,所以如果你需要反复输出调用不同系统外部命令的结果,你最好在输出每一条系统外部命令结果时清空这个数组,以防混乱。第三个参数用来取得命令执行的状态码,通常执行成功都是返回0。

        “echo exec(“ls”)”
        2、passthru(命令,返回值)

         passthru ()只调用命令,不返回任何结果,但把命令的运行结果原样地直接输出到标准输出设备上。不需要echo或return来查看结果

        passthru(“ls”)

        3、system(命令,返回值)

       system和exec的区别在于system在执行系统外部命令时,直接将结果输出到浏览器,不需要使用 echo 或 return 来查看结果,如果执行命令成功则返回true,否则返回false。第二个参数与exec第三个参数含义一样。

      system(“ls /”)

可知该题目为命令执行漏洞,根据参数的位置,我们需要使用管道符来分割前面的”grep -i“,指令不能用“&&”。

另外由于后面dictionary.txt的干扰,也需要使用管道符,注意这里不能用“|”分割。

常见的管道符

|        直接执行后面的语句

||        前面命令错的那么就执行后面的语句,否则只执行前面语句

&        前面后面都执行

&&        前面为假,那么后面的命令就不执行

;        前面后面的命令都执行

我这里使用 | 和 ;分割开

 

 

 10 natas10

可以看到上一关卡的管道符已经被过滤无法使用,因此只能从grep命令进行分析

grep命令

grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来

  语法:

grep [options] pattern [files]
        pattern - 表示要查找的字符串或正则表达式。
        files - 表示要查找的文件名,可以同时查找多个文件,如果省略 files 参数,则默认从标准输入中读取数据。

参数:

-i:忽略大小写进行匹配

那么这里可以用一个思路就是利用“grep   我们自定义的字符串或者正则匹配   查看的文件名”,并且该命令也能显示符合匹配的一列,那么就可以构造payload

grep -i * /etc/natas_webpass/natas11 
即输入框为* /etc/natas_webpass/natas11,但是这里很奇怪,直接显示出该页面的源代码

那么我随便猜测这里*替换为可能的数字或者字母
grep -i 1 /etc/natas_webpass/natas11 
grep -i a /etc/natas_webpass/natas11 
测试成功

 

 至此,得到第十一关的密码为:1KFqoJXi6hRaPluAmk8ESDW4fSysRoIg

暂时就到这里,等下次再继续玩一玩

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Level 11: 1. 登录后,发现页面上有一个输入框,可以输入任意的字符串,然后点击“Submit Query”按钮,就会返回一个加密后的字符串。 2. 查看网页源代码,发现有一段JavaScript代码,其中包含了一个函数`encodeString`,它是用来加密输入的字符串的。 3. 通过分析`encodeString`函数的代码,发现它是对输入的字符串进行了简单的替换和反转操作,最终得到了一个加密后的字符串。 4. 我们可以尝试对加密后的字符串进行反向操作,还原出原始的字符串。 5. 将得到的原始字符串作为参数,构造一个URL,然后访问这个URL,即可通过该关卡。 Level 12: 1. 登录后,发现页面上有一个输入框,可以输入任意的字符串,然后点击“Submit Query”按钮,就会返回一个加密后的字符串。 2. 查看网页源代码,发现有一段PHP代码,其中包含了一个函数`echo base64_encode(strrev(xor_encrypt($data, $key)));`,它是用来加密输入的字符串的。 3. 通过分析`xor_encrypt`函数的代码,发现它是对输入的字符串进行了异或加密操作,并且加密的密钥是一个固定的字符串。 4. 我们可以尝试对加密后的字符串进行反向操作和异或解密操作,还原出原始的字符串。 5. 将得到的原始字符串作为参数,构造一个Cookie,然后将该Cookie发送给服务器,即可通过该关卡。注意,这里要修改的是Cookie,而不是URL。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值