改变的确很难,但结果值得冒险
本文主要根据做题内容的总结,如有错误之处,还请各位师傅指正
一.伪协议的失效
当我们做到关于文件包含的题目时,常用思路其实就是使用伪协议(php:filter,data,inpput等等)执行一些shell命令或者读出flag文件内容
但如果遇到一些对php以及其他伪协议字符的限制,这种方法就行不通了
以ctfshow的web81文件包含题目来说:
这里限制了php,data,以及" : ",也想不出来如何使用伪协议做出来
那么便可以通过向日志getshell,利用日志文件的作用,在日志文件留下webshell
getshell就是向日志文件注入一句话木马的过程;
利用文件包含的特性,只要日志文件中有php代码,就会被解析成php脚本语言,那么我们便能利用一句话木马里的参数执行我们想得到的东西/或者用蚁剑连接
二.日志文件的注入
1.首先介绍日志文件的作用:通俗来说日志文件(access.log)可以记录我们所有在服务器上的操作记录
2.getshell的过程也很简单,我们可以在UA(user-agent)输入木马(常用)
执行,也可在url后面加上一句话木马(常被url编码)执行
但当我们利用参数a执行ls命令的时候,发现没有成功,原来是因为日志文件里的木马被url编码过了,但我们想要让日志文件的木马是未被urlencode的
(注:include包含html或者文本文件,其内容会被直接输出的,这里就是直接输出了日志文件内容)
所以我们可以通过bp传一句话木马,bp传参的时候是不会经过浏览器url编码的,而是直接到服务器进行urldecode
或者直接在ua处添加:
然后我们对参数执行命令即可
或者我们还可以用蚁剑连接日志文件中的php木马
但测试的时候不知道为什么这里连不上了
这里报错unable to verify leaf signature:就是没法认证签名,https认证失效了,我们只需要把https改成http就可以
但无论哪种方法本质都是一样的,都是利用日志文件的webshell得到flag