【BUUCTF】[ACTF2020新生赛]include1
浏览器只能解析和执行HTML、CSS和JavaScript等前端资源,而无法直接执行Base64编码的PHP文件。因此,当浏览器无法执行PHP文件时,它就会将PHP代码作为纯文本显示出来。此时,URL显示:?file=flag.php,意为发送了一个GET请求,请求的是一个php文件。使用PHP伪协议对包含的文件的源代码进行转码为base64,使浏览器无法执行该PHP文件。这是因为PHP代码在服务
解题步骤:
观察
题目首页只有一个超链接
点击链接后提示:“Can you find out the flag?”
此时,URL显示:?file=flag.php,意为发送了一个GET请求,请求的是一个php文件
分析
根据提示,我们需要获取flag.php的源代码
PHP通过一些函数包含的文件在网页中是不可见的,即使查看源代码也看不到该文件
PHP是后端语言,前端是无法查看的。即使将PHP源代码转码成其他形式,也无法查看。
这是因为PHP代码在服务器端执行,然后生成HTML格式的页面,发送到客户端进行显示。
因此,无论怎样转换,都无法查看原始的PHP源代码。
但是,如果浏览器无法执行该PHP文件,那么PHP代码将不会被执行,而是会以纯文本的形式显示出来。(关键!!!)
这是因为浏览器只能解析和显示HTML、CSS和JavaScript等前端资源,而无法执行PHP等后端脚本。因此,当浏览器无法执行PHP文件时,它就会将PHP代码作为纯文本显示出来。
浏览器无法直接执行Base64编码的PHP文件。Base64编码是一种将二进制数据转换为可打印ASCII字符的方式,但它并不是一种可执行的代码格式。浏览器只能解析和执行HTML、CSS和JavaScript等前端资源,而无法直接执行Base64编码的PHP文件。
攻克
使用PHP伪协议对包含的文件的源代码进行转码为base64,使浏览器无法执行该PHP文件
浏览器无法执行该PHP文件,便将文件中的内容直接显示出来
随机使用一个解码网站对base64编码的内容进行解码,得到flag
更多推荐
所有评论(0)