攻防世界 WEB-Cat

题目来源:XCTF 4th-WHCTF-2017

0x01 题目描述

题目是个登录框,让输入自己的域名:

题目首页

0x02 题目分析

1. 输入百度的域名,baidu.com。没有响应,可以发现输入框的名字为url, 提交方式为GET方式。

输入localhost或者127.0.0.1,可以收到ping的结果。

输入localhost的结果

2. 考虑是否是命令拼接, 用 | ls 拼接,发现报错,应该是过滤了某些特殊字符

特殊字符被过滤

3. FUZZ一下,看是否有没被过滤掉的字符。(工具Wfuzz,使用方法

发现@字符没有被过滤

4. 输入@,发现会被编码为%40(URL编码),尝试输入宽字符%bf,发现出现报错信息html格式的。

编码为%40

拷贝出来发现,用浏览器打开

发现django报错页面

出现上述报错的原因是因为,输入的参数会被传输到后端的django服务中进行解析,而diango设置了编码为gbk导致错误编码了宽字符。

联系前面的@未被过滤,查询得到

用@加绝对路径可以读取文件内容

0x03 解题流程

1. 由上面的报错信息,可以得到项目的绝对地址为“/opt/api”。再搜索django,知道其默认使用的是sqlites数据库。再次进行搜索发现类似sqlite的路径。

疑似sqlite的路径

2. 输入url = @/opt/api/database.sqlite3, 再次得到一个html文档。

执行结果

拷贝出来用浏览器打开,发现flag。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容