web安全Wargame—Natas解题思路(1-26)

本文详细介绍了Natas wargame的1-26关的解题思路,涉及查看页面源码、水平越权、爬虫协议分析、页面来源伪造、Cookie伪造、PHP Include、任意文件读取、命令注入、正则表达式、SQL注入、文件上传漏洞、SQL盲注、时间盲注、Session登录、共用Session、HTTP头重定向、弱类型比较、目录遍历和PHP反序列化等Web安全基础知识。
摘要由CSDN通过智能技术生成

前言:
 

Natas是一个教授服务器端Web安全基础知识的 wargame,通过在每一关寻找Web安全漏洞,来获取通往下一关的秘钥,适合新手入门Web安全。

传送门~


接下来给大家分享一下,1-20题的WriteUp。



Natas0:

提示密码就在本页,右键查看源码,注释中发现key

Key:gtVrDuiDfck831PqWsLEZy5gyDz1clto

知识点:查看页面源码



Natas1:

提示密码就在本页,但右键被禁用,可以使用F12查看元素得到key。

(常用的查看源码方法:右键查看、F12查看元素,给页面url前加’view-source:’查看,使用Linux Curl命令查看)

Key:ZluruAthQk7Q2MqmDeTiUij2ZvWy2mBi

知识点:查看页面源码



Natas2:

在源码中发现一个图片的链接,分析图片,无隐写内容,联想到目录权限问题,访问同级目录http://natas2.natas.labs.overthewire.org/files,发现存在名为users.txt的文件,读取得到key。

Key:sJIJNW6ucpu6HPZ1ZAchaDtwd7oGrD14

知识点:水平越权



Natas3:

在源码中发现提示:无信息泄露,谷歌这次不会发现它。提到了搜索引擎,猜测爬虫协议robots.txt中存在信息泄露,访问网站爬虫协议http://natas3.natas.labs.overthewire.org/robots.txt,发现Disallow: /s3cr3t/,尝试访问一下该目录http://natas3.natas.labs.overthewire.org/s3cr3t/,发现了user.txt,读取得到key。

Key:Z9tkRkWmpt9Qr7XrR5jWRkgOU901swEZ

知识点:爬虫协议robots.txt



Natas4:

提示来源出错,合法用户只能来自"http://natas5.natas.labs.overthewire.org/",在http的header中,referer代表从哪里跳转到本页面,只需要将该url写入到referer中即可。

(修改referer的值,可以用Burp Suite抓包后修改,也可以使用firefox插件hackbar来完成,还可以使用curl命令的 --referer参数来实现。)

Key:iX6IOfmpN7AYOQGPwtn3fXpbaJVJcHfq

知识点:页面来源伪造



Natas5:

提示不允许进入,没有登录,查看cookie信息后发现存在loggedin项,且值为0,猜测该值代表是否登录,将其修改为1,得到key。

cookie信息是网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据,可以使用Burp Suite抓包后修改,也可以使用火狐的FireBug插件来编辑修改,还可以使用linux curl命令的 --cookie参数来修改)

Key:aGoY4q2Dc6MgDq4oL4YtoKtyAg9PeHa1

知识点:cookie伪造



Natas6:

该题提供了php源码,点击查看分析,发现调用了includes/secret.inc页面,在输入一个变量secret后,如果和includes/secret.inc中 预设的secret相同,则输出密码,尝试访问该页面—http://natas6.natas.labs.overthewire.org/includes/secret.inc,在其源码中发现预设字符——"FOEIUWGHFEEUHOFUOIU",将该字符输入到之前的表单查询中,得到key。

Key:7z3hEENjQtflzgnT29q7wAvMNfZdh0i9

知识点:PHP Include 



Natas7:

页面出现了两个选项,点击后跳转,观察url发现了page参数,猜测可能存在任意文件读取漏洞,且源码给了提示,密码在/etc/natas_webpass/natas8 中,将/etc/natas_webpass/natas8设为page参数的值,成功读取到key。

Key:DBfUBfqQG69KvJvJ1iAbMoIpwSNQ9bWe

知识点: 任意文件读取漏洞



Natas8:

同样给了php源码,审计源码,发现给了一个预设参数encodedSecret,以及一个加密函数encodeSecret, 该函数将secret参数先进行base64编码、然后用strrev 函数进行倒序,再用 bin2hex 函数转为16进制,返回结果。如果点击提交,且post传入的secret 参数值经加密后,等于 encodedSecret 参数的值,则输出key。至此,只需要将 encodedSecret的值逆推,然后post即可。

先把’3d3d516343746d4d6d6c315669563362’从16进制转成字符,然后把该字符串倒序,最后将之base64解码,得到’oubWYf2kBqz',将该字符串post得到key。

Key:W0mMhUcRRnG8dcghE4qvk3JA9lGt8nDl

知识点:常见编码、php函数



Natas9:

仍然给出源码,审计,发现使用了php命令执行函数passthru,执行了grep命令,由此想到命令注入漏洞,且已知各等级密码均存储在/etc/natas_webpass目录下,使用;或|或&来截断grep命令,再用cat读取密码,用#注释掉后面的内容,构造如下:& cat /etc/natas_webpass/natas10 #,post得到key。

Key:nOpp1igQAkUzaI1GUUjzn1bFVj7xCNzu

知识点:命令注入漏洞



Natas10:

这题和上题类似,但使用了正则过滤,过滤掉了一些字符,无法继续截断,但可以利用grep命令匹配密码来实现,grep支持正则,输入 [a-zA-Z] /etc/natas_webpass/natas11 #

即可得到key。

Key:U82q5TCMMQ9xuFoI3dYX61s7OZD9JKoK

知识点:正则表达式、grep命令



Natas11:

页面提示cookie被异或加密保护,查看源码,发现了一个预定义参数和三个函数

参数:$defaultdata = array( "showpassword"=>"no", "bgcolor"=>"#ffffff") #猜测将showpassword设置为yes即可得到密码。

异或加密函数:

[PHP] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

function xor_encrypt($in){

    $key = '<censored>';  #预定义参数key

    $text = $in;          #输入参数

    $outText = '';          #输出参数

    // Iterate through each character

    for($i=0;$i<strlen($text);$i++) {    #for循环,遍历输入参数

    $outText .= $text[$i] ^ $key[$i % strlen($key)];  #将输入参数对应位和key对应位异或,key位数不够则从头循环,结果存到输出参数

    }

    return $outText;         #返回加密结果

}

 

加载函数function loadData($def),加载data,将$_COOKIE["data"]解密还原,存为 $mydata 数组,返回$mydata。

保存函数:function saveData($d),将传入的参数,经过编码处理,存入$_COOKIE["data"]中。

主要思路就是得到构造新的输入参数,使得"showpassword"=>"yes",编码后得到新的data。这就要求要知道key的值,而已有一个默认值,由此逆推得到key。

[PHP] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

<?php

$defaultdata = array( "showpassword"=>"no", "bgcolor"=>"#ffffff");

$data= 'ClVLIh4ASCsCBE8lAxMacFMZV2hdVVotEhhUJQNVAmhSEV4sFxFeaAw';

function xor_encrypt($in,$out) {

    $key ='' ;

    $text = $in;

    for($i=0;$i<strlen($text);$i++) {

    $key .= $text[$i] ^ $out[$i];

    }

    return $key;

}

 echo xor_encrypt(json_encode($defaultdata),base64_decode($data));

?>

 

得到key:$key = ’qw8Jqw8Jqw8Jqw8Jqw8Jqw8Jqw8Jqw8Jqw8Jqw8Jq’

再利用key,构造新data:

[PHP] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

<?php

$defaultdata = array( "showpassword"=>"yes", "bgcolor"=>"#ffffff");

function xor_encrypt($in) {

    $key = 'qw8J';

    $text = $in;

    $outText = '';

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值