码迷,mamicode.com
首页 > 其他好文 > 详细

cat

时间:2019-12-10 22:47:44      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:用户名   url   编码   题解   设置   默认值   als   绝对路径   djang   

PHP的CURLOPT_SAFE_UPLOAD参数

TRUE为禁用 @ 前缀在 CURLOPT_POSTFIELDS 中发送文件。
FALSE为启用@开头的value会被当做文件上传。
PHP 5.5.0 中添加,默认值 FALSE。
PHP 5.6.0 改默认值为 TRUE。
PHP 7 删除了此选项。
影响:CURLOPT_SAFE_UPLOAD选项配置不当结合其他情况可造成任意文件读取
Django使用的是gbk编码,超过%F7的编码不在gbk中有意义
CURLOPT_SAFE_UPLOAD 为 true 时,如果在请求前面加上@的话phpcurl组件是会把后面的当作绝对路径请求,来读取文件。当且仅当文件中存在中文字符的时候,Django 才会报错导致获取文件内容。
此题题解:
首先使用fuzz测试,知道Django是gbk编码,所以输入?url=%88
得到报错页面:
技术图片

 

把它作为html打开,可以看到Django的报错页面,其中settings项目中:

注:(django项目下一般有个settings.py文件是设置网站数据库路径(django默认使用的的是sqlites数据库),如果使用的是其它数据库的话settings.py则设置用户名和密码。除此外settings.py还会对项目整体的设置进行定义。)

技术图片

 

 这里面可以看到此项目的数据库目录所在/opt/api/database.sqlite3。

通过任意文件读取:

访问?url=@/opt/api/database.sqlite3。

搜索ctf得到:

技术图片

 

 解出!

 

参考链接:https://blog.csdn.net/u012628581/article/details/100529282,xctf-wp.
 

cat

标签:用户名   url   编码   题解   设置   默认值   als   绝对路径   djang   

原文地址:https://www.cnblogs.com/wenjiananquan/p/12019328.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!