2020易博霖CTFWeb2--SSRF题解

Web2

SSRF

(靶机服务器已关闭,因此没有截图)

观察题目url
index.php?file=WTNSbWFXMWhaMlV1YW5Cbg==
将参数file 进行两次base64解密得ctfimage.jpg
网页输出了上述图片
尝试读取index.php源代码,将file改为YVc1a1pYZ3VjR2h3(index.php两次base64加密)

转到后发现图片无法显示,猜测应该是文件按图片的形式输出,因为index.php不是图片文件所以无法显示
查看网页页面元素,将图片的base64编码复制后解码,得到index.php原内容
在这里插入图片描述发现提示:Hint: hal0flagi5here.php

用上述方法得到该php文件源码
在这里插入图片描述
分析代码,这里有几个重要条件:
1.filter_var($argv[1],FILTER_VALIDATE_URL)
绕过filter_var( )

2.preg_match(’/happyctf.com / ′ , /', /,r[‘host’])
绕过preg_match()

3.file_get_contents()
用该函数读取url,在之前filter_var( )绕过中发现http://协议无法使用
这里存在一个php的特性
在这里插入图片描述
此处参考带佬题解
题目要求为服务器根目录下的flag.txt文件
构造payload

url=0://happyctf.com/…/…/…/…/…/…/flag.txt
这里不知道Web服务的路径,用多个…/返回根目录,多余的…/会被忽略
最后得到flag

写题解过程中还简单了解了几个协议:
1.文件包含和伪协议
2.file:/// 协议格式:
scheme:[//[user:password@]host[:port]][/]path[?query][#fragment]
file协议打开本地文件,所以file://host/path的host省略得file:///
参考文章

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值