前几天看博客发现了一个很不错的网站,natas overthewire是一个和web安全相关的CTF网站,题目设计的还是很精巧的,很值得我们这些学习web安全的做一做。
地址:http://overthewire.org/wargames/natas/
level 0
直接查看源代码,即可从注释中看到密码;
level 1
登录进去发现禁止右键,但是可以F12进行审查元素或者查看源代码快捷方式Ctrl+U,密码还是在注释里面。
level 2
查看源代码什么也没有发现,就发现有一张图片,想想看看能不能查看files这个目录,结果files目录没有禁止访问,发现files目录下有一个uesrs.txt,打开就有密码。
level 3
也是第一反应查看原代码,可是并没有提示。注意这里,Not even google will find it ,说明搜索引擎不会抓取这个相关的页面,说明存在robots.txt。访问之http://natas3.natas.labs.overthewire.org/robots.txt发现一个s3cr3t的目录打开发现一个users.txt 得到密码。
level 4
页面提示You are visiting from “http://natas4.natas.labs.overthewire.org/index.php“ while authorized users should come only from “http://natas5.natas.labs.overthewire.org/“ ,需要我们从natas5页面来访问natas4的页面,我们可以使用burp抓包,增加一个Referer头来指定当前页面来自哪里,即可得到密码。
level 5
发现是一个登录界面,但是提示你没有登录,可以burp抓包进行查看。一般登录验证身份或者状态都是通过cookie,发现cookie参数的一个loggedin的值为0.试着改为1试试看,提示登录成功,得到密码。
level 6
登录发现是一个post提交的地方,还可以查看源代码
大体就是提交一个数字与include文件里的内容进行对比。尝试访问includes/secret.inc,竟然明晃晃的$secret = “FOEIUWGHFEEUHOFUOIU”;,那么直接输入进去就可以得到密码。
level 7
登录进去就两个没有什么内容的链接,但是链接很有意思?page=home和?page=home,还有提示hint: password for webuser natas8 is in /etc/natas_webpass/natas8,那肯定就是目录遍历咯,?page=/etc/natas_webpass/natas8,得到密码;
level 8
登录进去发现又是一个post提交的表单,查看关键代码:
bin2hex函数 将二进制数据转换成十六进制表示
strrev() 函数反转字符串
已经告诉了我们encodedSecret的值,以及加密方式已经给出,我们可以到着密码方式来,这样可以得到我们需要输入的。
得到oubWYf2kBq,输入直接得到密码。
level 9
登录发现又是一个输入框,查看关键代码:
发现passthru()函数,它同exec()函数system()函数类似, 也是用来执行外部命令(command)的。提交的参数作为$key执行grep -i $key dictionary.txt命令,想到肯定是命令执行漏洞了。
首先就是截断grep命令,可是使用;进行截断,然后根据前面目录遍历的思路查看/etc/natas_webpass/natas9文件,即输入;cat /etc/natas_webpass/natas10 #,得到密码。
level 10
和上一个题目差不多,但就是过滤了; | & 三个符号,
不能够截断grep了,只能使用grep进行搜索了,根据前面做的题目一直密码都是大小写,我们可以搜索大小字母得到密码,即输入[a-zA-Z] /etc/natas_webpass/natas11 #或者匹配所有.* /etc/natas_webpass/natas11 #,得到密码。
level 11
level 12
登录发现是一道文件上传类型的题目,查看源代码,发现并未设置文件类型检测,上传后还会告诉我们路径,那么直接上传一个php文件,然后根据路径访问得到密码。
刚开始的时候一直被重命名为jpg,一直很懵逼,然后抓包发现参数k24yezk2tm.jpg,就试着修改为k24yezk2tm.php,则上传上去的就会重名为.php文件。
|
|
level 13
登录可以看到使用exif_imagetype()来读取文件的第一个字节并检查其签名,判断是否为图像类型说明。
那么我们可以在php文件前面添加上jpg图像的前几个字节用来逃避exif_imagetype()函数的验证。其他过程和第一步类似。
得到密码。
level 14
登录进去是一个登录界面,第一反应就是试试常见的登录名、密码等弱口令,第二个就是万能密码,第三就是进行注入了,登录名随便,密码为” OR 1=1 #,即可登录成功拿到密码。
level 15
登录进去也是一个登录的界面,随便输入都是一样的错误提示,当我们输入natas16的时候它会提示用户存在,只给了一个能够判断用户是否存在的东西因此只有通过爆破来攻击。可能我们下一关的用户名和密码存储在数据库中,可以通过错误的提示来判断查询的结果,得出密码。采用sql盲注的技术。
查看源代码查询语句为$query = “SELECT from users where username=\””.$_REQUEST[“username”].”\””;*,我们可以构造查询password的语句,通过查询的结果盲注出密码。即输入
sql盲注脚本:
这样就会根据盲注脚本找到密码
level 16
level 17