Include
点击tips出现
根据题目名称include1猜测是文件包含漏洞
文件包含漏洞常见的方法有:
1.利用include()等函数,通过构造上传特定文件路径,绕过网站对参数的绕过,进入include函数,即可得到所需函数的源码,本题显然没有与include函数相关的线索
2.php伪协议
①php://input,php://input即获得未经过解析的post参数,此时即可通过构造相应的php文件代码,如一句话木马或system函数查询等方式
发现网站对php://input协议进行了过滤
②php://filter,该协议可以对数据流进行筛选过滤,可以进行文件的读取
加/read=convert.base64-encode/代表将需要读取的文件进行base64转码,只有这样才能查看文件源码,否则看到的将是文件运行后的结果,resource=xxx.php则是表明要查看的文件,可将file=php://filter/read=convert.base64-encode/resource=xxx.php看成是标准格式。将file上传后返回一段被base64加密后的代码,将其解码即可得到flag。
3.file://伪协议 (还不知道咋用,以后碰到题再说。)
Secret File
发现下方一条超链接被调成背景色,点进去,发现一个显示secret的按钮,点击后跳转到了end.php,但是查看网页源码时发现
说明本来应该跳转至action.php,于是用burpsuite进行抓包截留
发现action文件中有线索,进入该文件查看
代码审计,利用file传参通过include函数得到flag.php文件
发现并没有flag,此时联想上一题include的情况,可能将文件写入了php代码里被执行掉了,再根据secr3t.php的黑名单发现可以利用php://filter
获得base64编码
得到flag
Upload(极客大挑战)
1.检测后缀名,可改为php3,php4,php5,phtml
2.检测Content-Type,利用burpsuite将参数改变(image/jpeg)
3.检测文件文本有无<?,将文件改为script形式
4.有无文件头,添加GIF89a
Upload(ACTF2020)
- js过滤,将一句话文件格式改为jpg即可
- 服务端后缀过滤,php后缀将被过滤,改为phtml即可
Http(极客大挑战2019)
先使用burpsuite查看网站目录下文件,发现Secret.php
本题主要考查http头相关知识
Referer:可告诉目标网页访问者是从哪个界面链接过来的
User-Agent:发送请求的浏览器类型、操作系统等信息
X-Forwarded-For:表示请求端的ip
[GXYCCTF2019]Ping Ping Ping
即命令/代码执行漏洞:
当网站提供ping功能时,可以在输入ping语句参数的同时拼接其他语句
管道符:Windows系统:①|,直接执行后面语句 ②||,若前面语句为假则执行后面语句
③&,若前面语句为假直接执行后面,为真执行前面后执行后面 ④&&,若前面为假则不执行后面
Linux比Windows多一个’;’,执行完前面的执行后面
因此输入?ip=127.0.0.1;ls,显示flag文件就在当前目录下
再输入127.0.0.1;cat flag,发现空格被过滤了
下面介绍绕过空格的几种方式
$IFS;${IFS};$IFS$1;<;<>;{cat,flag.php};%20;%09
输入$IFS时发现flag被过滤
于是进入index.php文件看看有没有线索
preg_match("/.*f.*l.*a.*g.*/", $ip)即检测是否有这四个字母按该顺序出现过
法一:通过设定变量实现字符串拼接
/?ip=127.0.0.1;b=ag;a=fl;cat$IFS$1$a$b.php
法二:通过执行sh命令
/?ip=127.0.0.1;echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh
因为题目将bash过滤,sh也是Linux中的shell命令,bash是sh的升级版,在此题我们也可以利用sh,先将flag.php base64编码绕过过滤,后再通过sh命令将其解码即可
法三:内联执行
/?ip=127.0.0.1;cat$IFS$9`ls`
反引号内命令的输出作为执行