[GXYCTF 2019]Ping Ping Ping(内联执行)、[鹤城杯 2021]EasyP ($_SERVER)

目录

[GXYCTF 2019]Ping Ping Ping

内联执行

[鹤城杯 2021]EasyP 

['PHP_SELF']、$_SERVER['SCRIPT_NAME'] 与 $_SERVER['REQUEST_URI']


RCE命令注入可参考:

RCE漏洞及其绕过——[SWPUCTF 2021 新生赛]easyrce、caidao、babyrce-CSDN博客 

[GXYCTF 2019]Ping Ping Ping

先输入127.0.0.1,ping成功了

ls查看根目录,发现flag.php与index.php文件

先cat查看一下index.php文件,用$IFS$9绕过空格

正则过滤了很多东西,包括.*f.*l.*a.*g.*

<?php
	if(isset($_GET['ip'])){
		$ip = $_GET['ip'];
		if(preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{1f}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match)){
			print_r($match);
			print($ip);
			echo preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{20}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match);
			die("fxck your symbol!");
		}
		else if(preg_match("/ /", $ip)){
			die("fxck your space!");
		}
		else if(preg_match("/bash/", $ip)){
			die("fxck your bash!");
		}
		else if(preg_match("/.*f.*l.*a.*g.*/", $ip)){
			die("fxck your flag!");
		}
		$a = shell_exec("ping -c 4 ".$ip);
		echo "<pre>";
		print_r($a);
	}

	?>

内联执行

在linux系统中,反引号作为内联执行,输出查询结果的内容。

于是就可以使用cat$IFS$9`ls`  这个命令来输出ls里面的flag.php以及index.php中的内容。以得到flag。

[鹤城杯 2021]EasyP 

先学习一下:

['PHP_SELF']、$_SERVER['SCRIPT_NAME'] 与 $_SERVER['REQUEST_URI']

_SERVER['PHP_SELF']、$_SERVER['SCRIPT_NAME'] 与 $_SERVER['REQUEST_URI'] 三者区别-CSDN博客

1.$_SERVER['PHP_SELF']:获取当前执行脚本的文件名(相对于网站根目录的路径及 PHP 程序名称。)

2.$_SERVER['SCRIPT_NAME']:获取相对于网站根目录的路径及 PHP 程序文件名称。

3.$_SERVER['REQUEST_URI']:获取当前URL的 路径地址。

e.g 有URL:http://www.baidu.com/php/flag.php/flag?a=11111

        $_SERVER['PHP_SELF'] 得到:/php/flag.php/flag

        $_SERVER['SCRIPT_NAME'] 得到:/php/flag.php

        $_SERVER['REQUEST_URI'] 得到:/php/flag.php/flag?a=11111

POST传参了guess,并且(string)转换成了字符型

如果$guess等于$secret,回显一个名为$flag的变量的字符串(===强制类型)

1.  $_SERVER['REQUEST_URI']:获取当前URL的 路径地址

$secret,$flag都不知道是哪来的,所以这一串代码没有什么用... ...看下面就行。

正则过滤了包含的文件名utils.php,以及后面GTE传参的show_source

2.  basename():删除从最后一个斜杠之前的所有内容 

#输出4.txt
basename /1/2/3/4.txt

3. $_SERVER['PHP_SELF']:用于获取当前执行脚本的文件名,读取文件夹下的一个文件。

__FILE__是一个魔术常量,它包含当前脚本的完整路径和文件名。 

故 用show[sourceshow.source绕过正则show_source

由于basename() 显示最后一个斜杠 / 后的所有内容,所以用utils.php/啊(只要在后面加个非ASCII码的东西就可以绕过绕过

最终payload为:

utils.php/啊?show[source=1

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值