[CTF]抓住那只猫(XCTF 4th-WHCTF-2017)

原作者:darkless

题目描述:抓住那只猫

思路:
打开页面,有个输入框输入域名,输入baidu.com进行测试
1561366-20190923143357853-1249863370.png

发现无任何回显,输入127.0.0.1进行测试。
1561366-20190923143404773-1527929605.png

发现已经执行成功,执行的是一个ping命令,一开始想的应该是命令拼接执行,但是输入任何有关拼接的字符串都会提示invalid url

1561366-20190923143416887-1218605416.png

说明系统对这些字符串都进行了过滤,fuzz测试后发现只有@没有被过滤。

1561366-20190923143425186-66005442.png
且当输入@时,会将@编码为%40

1561366-20190923143434889-765240379.png
尝试在url处输入宽字符,比如%bf

1561366-20190923143441210-1132889141.png
出现报错信息,是一段html代码,将这些代码复制出来打开。

1561366-20190923143449562-1926853181.png

看到了熟悉的django报错页面,看来是将输入的参数传到了后端的django服务中进行解析,而django设置了编码为gbk导致错误编码了宽字符(超过了ascii码范围)。

到这一步后,联系到前面的@字符没有被过滤,然后看了大佬们的解题思路(这里太坑了,原题目上其实是由提示的)

1561366-20190923143516529-1388882935.png
意思是可以用@读取文件内容。结合django的报错得知了项目的绝对路径为/opt/api

1561366-20190923143529384-365052520.png

这里还需要懂一些django开发的基本知识,我感觉这道题涉及的面有点广了,django项目下一般有个settings.py文件是设置网站数据库路径(django默认使用的的是sqlites数据库),如果使用的是其它数据库的话settings.py则设置用户名和密码。除此外settings.py还会对项目整体的设置进行定义。

读取settings.py文件,这里需要注意django项目生成时settings.py会存放在以项目目录下再以项目名称命名的文件夹下面。

1561366-20190923143546350-1757173956.png

同上将报错信息已html文件打开,可看到一些敏感信息:

1561366-20190923143555151-1676823256.png

同样在使用@读取数据库信息

1561366-20190923143605449-1141893677.png

在报错信息中搜索CTF得到flag。

1561366-20190923143613262-1918254119.png

以上就是这道题的解法,我只能说大佬们的思路真野!

转载于:https://www.cnblogs.com/-mo-/p/11572267.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值