首页 > 技术文章 > CTF-i春秋-Web-SVN 源码泄露漏洞-Upload-线上选拔赛

qiaowukong 2020-09-21 11:32 原文

2020.09.21

经验教训

  1. python中,post的内容是json格式;
  2. SVN 源码泄露漏洞,就是有个.svn目录,.svn/wc.db,大量用户数据,.svn/entries,能遍历网站目录,隐藏文件.svn/.svn-base源代码文件副本
    • 获取网站目录结构,可以直接在存在.svn的目录下加/.svn/entries来获取;
    • 获取源代码内容。如获取conf.php文件的内容可以在目录下加上/.svn/text-base/conf.php.svn-base来进行下载。
  3. 源码漏洞扫描可以发现上边的svn源码泄漏漏洞,还有其他源码漏洞可以参考这里,有什么好的漏洞扫描器??
  4. php的conf文件中是有一个正则的后缀名限制的,只要符合都可以被当做php文件执行。符合的后缀包括 php、php3、php4、php5、phtml、pht 等。
  5. 文件上传主要抓包修改三个地方,两个content-type,一个文件后缀名。
  6. python中,引入多线程的文件头是from multiprocessing.dummy import Pool as ThreadPool,基本操作是poolList = getPoolList() pool = ThreadPool() pool.map(checkMd5,poolList) pool.close() pool.join()

upload

https://www.ichunqiu.com/battalion

  1. 意思很明确,post消息头中的东西ZmxhZ19pc19oZXJlOiBNVEkwTmpNeA==,base64解码后为flag_is_here: MTI0NjMx,后半截还能继续base64,124631
  2. 按照要求post了,但是没啥结果,所以仔细一看,我发现每一次消息头中的数字会变化
  3. 因为他说要快一点,那么写个脚本试试
#!/usr/bin/env python 3.8
# -*- encoding: utf-8 -*-
#fileName  : decry.py
#createTime: 2020/09/21 09:52:41
#author    : 乔悟空
#purpose   : 此脚本用于向特定网站快速发送post请求
import base64
import requests

url = "http://d9ee784d8d8e422295f9736111306dc1b68a202e84904630.changame.ichunqiu.com/"
session = requests.session()
res = session.get(url).headers['flag']
print(res)
res = base64.b64decode(res).decode().split(': ')[1]
print(res)
res = base64.b64decode(res).decode()
print(res)
res = session.post(url,data={'ichunqiu':res}).text
print(res)
  1. 得到结果Path:3712901a08bb58557943ca31f3487b7d,这看起来像是一个md5编码,解码试试?
  2. 解码结果是98123hasd,访问发现404;
  3. 然后试了试没解码之前的,成功进入……

推荐阅读