美文网首页
攻防世界WEB之CAT

攻防世界WEB之CAT

作者: Vophan | 来源:发表于2019-08-15 11:32 被阅读0次

这道题脑洞挺大的,还没给hint,比较扯,不过知识点还是很有意思的

0x00 预备知识点

  • cURL的post文件上传
  • php的curl上传组件
  • python字符编码
  • django的debug模式

0x01 cURL

什么是cURL?

curl是一个利用URL语法在命令行方式下工作的文件传输工具。curl是一个利用URL语法在命令行方式下工作的文件传输工具。

它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。curl同样支持HTTPS认证,HTTP POST方法, HTTP PUT方法, FTP上传, kerberos认证, HTTP上传, 代理服务器, cookies, 用户名/密码认证, 下载文件断点续传,

上载文件断点续传, http代理服务器管道( proxy tunneling), 甚至它还支持IPv6, socks5代理服务器, 通过http代理服务器上传文件到FTP服务器等等,功能十分强大。

原来php默认并不进行此项功能的扩展,但还是有的,只是没有让它生效罢了。打开PHP安装目录,搜索以下三个文件 ssleay32.dll、libeay32.dll和 php_curl.dll,

高级用法:

curl post上传文件

上面的两种请求,都是只传输字符串,我们在测试上传接口的时候,会要求传输文件,其实这个对于 curl 来说,也是小菜一碟。

我们用 -F "file=@__FILE_PATH__" 的请示,传输文件即可。命令如下:

curl localhost:8000/api/v1/upimg -F "file=@/Users/fungleo/Downloads/401.png" -H "token: 222" -v

0x02 PHP的cURL组件

PHP中包含了cURL组件,语法和cURL差不多,在PHP5.5后,CURL_SAFE_UPLOAD选项会控制是否使用新的上传方式。

具体的参看这篇文章:https://jasonhzy.github.io/2016/05/04/php-curl-file/

0x03 python的字符编码

总的来说字符编码是python的一大败笔。

具体的参看这篇文章:https://www.cnblogs.com/huxi/articles/1897271.html

而在这道题中,django后端使用的gbk编码,超过编码范围的内容会引起报错。

0x04 django的Debug模式

对于django这样的后端框架,我们可以在项目的settings.py中设置打开debug模式,这样我们在出错的时候就可以看到具体的信息了。

对于这道题,他开了debug模式。

0x05 解题

首先,第一眼看到这道题,ping?这不就是一个很经典的命令注入?但是事情没有那么简单。

我们发现127.0.0.1;ls还是其他的payload都会显示invalid url,开始我想的是可能有过滤,然后各种绕过,

结果都没用。最后看了WP,才知道是怎么回事。

发现命令注入不行,然后进行FUZZ测试(扯淡),然后发现了我们输入字符编码,不会报错,但是%80会出错,于是我们看到了django的报错信息,我们知道了gbk的编码方式,也发现了接口与请求方式。

post http://127.0.0.1/api/ping

这样,我们就知道了,这个应用的整体架构

我们给php发出请求,php把请求发送给本地部署的django,然后得到结果

结合hint:RTFM of php cURL

我们就知道这道题该怎么做了:

由于django本地部署,而且php使用的cURL组件,所以这里,我们使用前面讲的php的cURL文件上传,

@/opt/api/database.sqlite3

这样,我们就把这个数据库文件的内容post给了django,但是牛逼的因为编码问题,他报错了

于是,就这么巧妙地,我们就看到了数据库里面的内容。

尽管整个过程都写满了字,但是不得不说,设计的巧妙以及知识点的串联很有意思。

相关文章

  • 攻防世界WEB之CAT

    这道题脑洞挺大的,还没给hint,比较扯,不过知识点还是很有意思的 0x00 预备知识点 cURL的post文件上...

  • 攻防世界-Web_php_unserialize

    高手进阶区,Web_php_unserialize 题目来源:攻防世界[https://adworld.xctf....

  • 攻防世界-Web-NewsCenter

    题目信息: 打开题目,有一处搜索框,搜索新闻。考虑SQL注入。 0x01:查找数据库python sqlmap.p...

  • 攻防世界-Web-mfw

    题目信息: 打开题目场景,检查网站,发现这样一个页面 访问.git目录,疑似存在git源码泄露 再用dirsear...

  • XSS攻击与防御

    Web安全之XSS攻防 1. XSS的定义 跨站脚本攻击(Cross Site Scripting),缩写为XSS...

  • Web安全之XSS攻防

    Web安全之XSS攻防 1. XSS的定义 跨站脚本攻击(Cross Site Scripting),缩写为XSS...

  • Web安全之XSS攻击与防御小结

    Web安全之XSS攻防 1. XSS的定义 跨站脚本攻击(Cross Site Scripting),缩写为XSS...

  • 攻防世界(进阶)--WEB--2.baby_web

    考察点:index.php 1.进入场景 2.用burpsuite抓包,修改1.php为index.php再发送,...

  • 初识Empire

    前言 最近在看《Web安全攻防》一书,将不熟悉的Empire进行实验操作来学习。 参考资料《Web安全攻防渗透测试...

  • 攻防世界-Web-ics-05

    题目信息 解析打开题目场景以后,只有一个index.php的页面能点开,并且页面没有显示完全,该页面很可疑。查看源...

网友评论

      本文标题:攻防世界WEB之CAT

      本文链接:https://www.haomeiwen.com/subject/kroajctx.html