攻防世界-web-CAT

题目描述:抓住那只猫。界面如下:

1. 思路分析

界面很简单,只有一个输入框,提示我们输入域名,我们随便输入一个baidu.com

发现这个域名赋值给url参数传递到后台。因此,这里能做文章的地方只有这个url参数,大概率是命令注入或者sql注入。

既然输入的是url,我们尝试输入下本地地址127.0.0.1

发现有回显了,后台对我们输入的url执行了一个ping命令,接下来我们尝试进行命令注入,输入baidu.com;ls

此时,发现跳出一个提示:Invalid URL(无效的URL),说明存在WAF拦截

通过试错,发现常见的命令注入字符都被限制了,比如; " ' | & 这些,尝试绕过,发现无效。

到了这里,感觉已经超出了我的知识面了。因此,网上找找答案。

参考网上的资料https://www.cnblogs.com/chrysanthemum/p/11480150.html

资料中给出了相应思路(大部分在我的知识面范围之外):

a. @字符没有进行限制,利用该字符可以读取文件内容

b. url中携带超过ascii码表示范围的宽字节会打印出堆栈,堆栈会暴露出服务端的关键信息

利用以上两点一步一步获取到相应的文件,最终拿到flag

2. 解题过程

2.1 输入一个超过ASCII范围的宽字节,输入128试试,128转成url编码为%80

 出现报错了,报错结果用html打开,看是否存在什么有用的信息

按照网上大佬们的解法,这里会暴露出路径,但是仔细查看那个报错的html文件,除了路径,配置信息也暴露出来了

 

因此,这里我们直接尝试访问这个数据库文件即可

2.2 输入url=@/opt/api/database.sqlite3

成功在数据库中找到flag:WHCTF{yoooo_Such_A_G00D_@}

总结:非常综合的一道题, 考察的点非常多,分别涉及到django开发,python字符编码,curl中post @+文件名文件上传。整道题涉及的知识点很多都在自己的知识体系之外,佩服大佬们能解出这道题

参考资料:https://www.cnblogs.com/chrysanthemum/p/11480150.html

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值