NSSCTF第15页(1)

news2024/11/18 16:55:40

[CISCN 2019华东南]Web4

点击read something,发现访问了百度

读到了源码

就是ssrf+flask

import re, random, uuid, urllib
from flask import Flask, session, request

app = Flask(__name__)
random.seed(uuid.getnode())
app.config['SECRET_KEY'] = str(random.random() * 233)
app.debug = True @ app.route('/')


def index(): session['username'] = 'www-data'


return 'Hello World! Read somethings' @ app.route('/read')


def read(): try

    : url = request.args.get('url')
m = re.findall('^file.*', url, re.IGNORECASE)
n = re.findall('flag', url, re.IGNORECASE)
if m or n: return 'No Hack'
res = urllib.urlopen(url)
return res.read() except Exception as ex: print
str(ex)
return 'no response' @ app.route('/flag')


def flag(): if


session and session['username'] == 'fuck':
return open('/flag.txt').read() else: return 'Access denied'
if __name__ == '__main__': app.run(debug=True, host="0.0.0.0")

session伪造

session['username'] == 'fuck'时可以得到flag。

知道了SECRET_KEY加密的方法是str(random.random() * 233)

而random.random()为Mac地址

读一下mac地址

注意:uuid.getnode()返回的值是Mac值的16进制形式,但是去掉了中间的冒号。

import random
import uuid
random.seed(0x0242ac029427)
print(str(random.random()*233))

 然后进行session解密

得到加密形式

开始加密

传参得到flag 

[b01lers 2020]Welcome to Earth

第一次抓包的回显

这段代码是一个JavaScript代码块,它执行了以下操作:

  1. 注册一个按键事件监听器:当用户按下键盘上的键时,会触发该事件。如果按下的是键盘上的Esc键(键码为27),则阻止默认行为(防止页面跳转)并将窗口重定向到"/chase/"。
  2. 如果按下的不是Esc键,则调用die()函数。
  3. sleep(ms)函数定义了一个异步函数,它会暂停一段时间(以毫秒为单位)后再继续执行后续代码。这里的sleep函数会等待10秒钟(10000毫秒)。
  4. dietimer()函数是一个异步函数,它会异步地等待10秒钟后调用die()函数。
  5. die()函数将窗口重定向到"/die/"。

根据代码的逻辑,当用户按下Esc键时,会立即重定向到"/chase/",否则会等待10秒钟后重定向到"/die/"。

请注意,这段代码只是代码片段,并不能独立运行。它需要在适当的上下文中嵌入和调用才能正常工作。

后面就一直抓包,然后就有了一个flask.js然后进行拼接flag就ok

不知道考点到底是什么

[NSSRound#V Team]PYRCE

访问一下

看到源码了,格式化一下

看到了源码

gpt的解释:

  1. 导入必要的模块和库:从Flask模块中导入Flask、request和make_response函数,以及其他一些必要的模块和库,如uuid和os。

  2. 创建Flask应用程序实例:通过实例化Flask类创建一个应用程序实例,将其赋值给变量"app"。

  3. 定义WAF函数:定义了一个名为"waf"的函数,用于实现一个基本的Web应用程序防火墙。在函数中,定义了一个黑名单字符串"black_list",用于过滤一些特定的字符。如果传入的参数"rce"中包含黑名单中的任何字符,则返回False,否则返回True。

  4. 定义路由和视图函数:通过使用"@app.route"装饰器来定义路由和视图函数。在"/"路径上定义了一个名为"index"的视图函数,用于处理GET请求。如果请求中包含名为"Ňśś"的参数,并且通过WAF检查,将执行"os.popen(nss)"来执行命令,并返回结果。否则,返回"waf"。

  5. 在"/source"路径上定义了一个名为"source"的视图函数,用于处理GET请求。该函数打开名为"app.py"的文件,并将其内容作为二进制数据返回。

  6. 启动应用程序:在代码的最后,通过调用"app.run"方法来启动应用程序,监听在0.0.0.0的主机上的8080端口。

逻辑很简单,传入一个参数,在os.popen()处执行命令,这题的难点在于绕黑名单 

black_list = '01233456789un/|{}*!;@#\n`~\'\"><=+-_ '

简单的flask框架,在./的路由下存在GET参数,然后绕过waf过滤来命令执行
不难发现黑名单过滤了/,这里用的是pwd构造出/,然后结合存在app.py,我们用cp命令把/flag复制到app.py里面
我们先看一下怎么利用pwd构造出/
首先pwd表示的是当前工作目录 

那如果我们构造以下语句

cd ..&&cd ..&&pwd

我们要把flag复制到app.py,但是我们不知道当前目录是什么,所以多尝试看看需要几个cd ..
payload

?Ňśś=cp $(cd ..&&cd ..&&cd ..&&cd ..&&cd ..&&cd ..&&cd ..&&cd ..&&echo $(pwd)flag) app.py

被墙了

url编码一下

?Ňśś=cp%09%24(cd%09..%26%26cd%09..%26%26cd%09..%26%26cd%09..%26%26cd%09..%26%26cd%09..%26%26cd%09..%26%26cd%09..%26%26echo%09%24(pwd)flag)%09app.py

再次访问/source,得到flag

[AFCTF 2021]BABY_CSP

发现不是ssti注入

去查了一下csp

CSP绕过_script-src self unsafe-inline-CSDN博客 

CSP的理解与绕过

Content Security Policy
(CSP)内容安全策略,是一个附加的安全层,有助于检测并缓解某些类型的攻击,包括跨站脚本(XSS)和数据注入攻击。它实质就是白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行,哪些不可以。 

CSP如何工作

通过响应包头(Response Header)实现:

Content-Security-policy: default-src 'self'; script-src 'self' allowed.com; img-src 'self' allowed.com; style-src 'self'; 

CSP指令

我们可以看出,有一部分是CSP中常用的配置参数指令,我们也是通过这些参数指令来控制引入源,下面列举说明:

script-src:外部脚本
style-src:样式表
img-src:图像
media-src:媒体文件(音频和视频)
font-src:字体文件
object-src:插件(比如 Flash)
child-src:框架
frame-ancestors:嵌入的外部资源(比如<frame>、<iframe>、<embed>和<applet>)
connect-src:HTTP 连接(通过 XHR、WebSockets、EventSource等)
worker-src:worker脚本
manifest-src:manifest 文件
dedault-src:默认配置
frame-ancestors:限制嵌入框架的网页
base-uri:限制<base#href>
form-action:限制<form#action>
block-all-mixed-content:HTTPS 网页不得加载 HTTP 资源(浏览器已经默认开启)
upgrade-insecure-requests:自动将网页上所有加载外部资源的 HTTP 链接换成 HTTPS 协议
plugin-types:限制可以使用的插件格式
sandbox:浏览器行为的限制,比如不能有弹出窗口等。

除了Content-Security-Policy,还有一个Content-Security-Policy-Report-Only字段,表示不执行限制选项,只是记录违反限制的行为。它必须与report-uri选项配合使用。

Content-Security-Policy-Report-Only: default-src 'self'; ...; report-uri /my_amazing_csp_report_parser; 

CSP指令值

介绍完CSP的指令,下面介绍一下指令值,即允许或不允许的资源

*: 星号表示允许任何URL资源,没有限制;
self: 表示仅允许来自同源(相同协议、相同域名、相同端口)的资源被页面加载;
data:仅允许数据模式(如Base64编码的图片)方式加载资源;
none:不允许任何资源被加载;
unsafe-inline:允许使用内联资源,例如内联<script>标签,内联事件处理器,内联<style>标签等,但出于安全考虑,不建议使用;
nonce:通过使用一次性加密字符来定义可以执行的内联js脚本,服务端生成一次性加密字符并且只能使用一次;

 看题

 在响应头里面看到nonce的值

加到script标签里面就行了 

?school=<script nonce="29de6fde0db5686d">alert(flag)<script> 

正常就得到flag了

但是不知道怎么回事吗,没回显

学一下知识点

[SWPUCTF 2023 秋季新生赛]NSS_HTTP_CHEKER

抓包来改

 没啥说的

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1298596.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JSON字符串转泛型对象

JSON字符串转泛型对象 以下问题只仅限于博主自身遇到&#xff0c;不代表绝对出现问题 相关类展示&#xff1a; 参数基类 public class BaseParams { }基类 public abstract class AbstractPush<Params extends BaseParams> {protected abstract void execute(Params…

Shell数组函数:数组——数组和循环(四)

使用数组统计&#xff0c;用户shell的类型和数量 一、脚本编辑 [root192 ~]# vim shell.sh #!/bin/bash declare -A shells while read ii dotypeecho $ii | awk -F: {print $7}let shells[$type] done < /etc/passwdfor i in ${!shells[]} doecho "$i: ${shells[$i]…

开源电子合同签署平台小程序源码/电子文件签字+在线合同签署系统源码/电子合同小程序源码

源码简介&#xff1a; 开源电子合同签署平台小程序源码&#xff0c;它是电子文件签字在线合同签署系统源码/电子合同小程序源码 目前商业端和开源端一致&#xff0c;免费开源状态&#xff01; 聚合市场上各类电子合同解决方案商&#xff0c;你无需一个一个的对接电子合同厂商…

<JavaEE> 经典设计模式之 -- 线程池

目录 一、线程池的概念 二、Java 标准库中的线程池类 2.1 ThreadPoolExecutor 类 2.1.1 corePoolSize 和 maximumPoolSize 2.1.2 keepAliveTime 和 unit 2.1.3 workQueue 2.1.4 threadFactory 2.1.5 handler 2.1.6 创建一个参数自定义的线程池 2.2 Executors 类 2.3…

前端开发_移动Web+动画

平面转换 作用&#xff1a;为元素添加动态效果&#xff0c;一般与过渡配合使用 概念&#xff1a;改变盒子在平面内的形态&#xff08;位移、旋转、缩放、倾斜&#xff09; 平面转换又叫 2D 转换 平移 属性&#xff1a;transform: translate(X轴移动距离&#xff0c;Y轴移动…

vue2 cron表达式组件

vue2 cron表达式组件 1. 先上图 2. 代码目录 3. 直接上代码 &#xff08;组件代码太多&#xff0c;直接上压缩包&#xff0c;解压后直接用&#xff0c;压缩包再博客顶部&#xff09; 4. 使用注&#xff1a;示例代码中使用了element-ui // HomeView.vue<template><…

Python如何实现性能自动化测试

一、思考 1.什么是性能自动化测试? 性能 系统负载能力超负荷运行下的稳定性系统瓶颈 自动化测试 使用程序代替手工提升测试效率 性能自动化 使用代码模拟大批量用户让用户并发请求多页面多用户并发请求采集参数&#xff0c;统计系统负载能力生成报告 2.Python中的性能…

多任务学习(Multi-Task Learning)和迁移学习(Transfer Learning)的详细解释以及区别(系列1)

文章目录 前言一、多任务学习&#xff08;Multi-Task Learning&#xff09;是什么&#xff1f;二、多任务学习&#xff08;Multi-Task Learning&#xff09;对数据的要求三、迁移学习是什么&#xff1f;四&#xff0c;迁移学习对数据的要求五&#xff0c;多任务学习与迁移学习的…

LeetCode Hot100 22.括号生成

题目&#xff1a; 数字 n 代表生成括号的对数&#xff0c;请你设计一个函数&#xff0c;用于能够生成所有可能的并且 有效的 括号组合。 方法&#xff1a;灵神 组合型回溯-剪枝-枚举填左括号还是右括号 代码&#xff1a; class Solution {private int n;private char[] pat…

放弃原生SQL:Python中更优雅的数据库操作

概要 在Python中&#xff0c;通过原生SQL语句进行数据库操作是一种传统的方式&#xff0c;但现代的Python开发中&#xff0c;使用ORM&#xff08;Object-Relational Mapping&#xff09;工具和数据库连接库可以更加高效和优雅地进行增删改查操作。本文将详细介绍Python中放弃原…

Ubuntu 18.04使用Qemu和GDB搭建运行内核的环境

安装busybox 参考博客&#xff1a; 使用GDBQEMU调试Linux内核环境搭建 一文教你如何使用GDBQemu调试Linux内核 ubuntu22.04搭建qemu环境测试内核 交叉编译busybox 编译busybox出现Library m is needed, can’t exclude it (yet)的解释 S3C2440 制作最新busybox文件系统 https:…

vue,nvue,uniapp,到底是什么

vue,nvue,uniapp,到底是什么&#xff1f; 发展猜想&#xff1a; 开发移动端软件&#xff0c;一般是控件逻辑&#xff0c;可拖动控件android studio都给你设计好了。 开发web页面时&#xff0c;用vue&#xff0c;vue是前端框架。主要是终端设备通过浏览器进行访问&#xff08…

第三节JavaScript 函数、作用域、事件、字符串、运算符、比较

一、JavaScript的作用域 1、变量在函数内声明&#xff0c;变量为局部变量&#xff0c;具有局部的作用域。 局部变量&#xff1a;只能在函数内部访问 示例&#xff1a; // 此处不能调用 carName 变量 function myFunction() { var carName "Volvo"; // 函数内可…

Unirest-Java:Java发起GET、POST、PUT、DELETE、文件上传,文件下载工具类介绍

一、简介 Unirest-Java是一个轻量级的HTTP客户端库&#xff0c;用于在Java应用程序中发送HTTP请求。 它提供了简单易用的API&#xff0c;可以方便地处理GET、POST、PUT、DELETE等HTTP方法。 Unirest-Java支持异步和同步请求&#xff0c;可以轻松地与JSON、XML等数据格式进行…

MongoDB的条件操作符

本文主要介绍MongoDB的条件操作符。 目录 MongoDB条件操作符1.比较操作符2.逻辑操作符3.元素操作符4.数组操作符5.文本搜索操作符 MongoDB条件操作符 MongoDB的条件操作符主要分为比较操作符、逻辑操作符、元素操作符、数组操作符、文本搜索操作符等几种类型。 以下是这些操作…

使用医学数据集MIMIC,常见的问题记录

目录 MIMIC数据库安装及数据导入教程1.postgresql安装第一步&#xff1a;error running考虑到是不是不同的sql的冲突从报错信息出发重启之后可以安装了 2.打开navicate153.7z 不是内部或外部命令&#xff0c;也不是可运行的程序4.在postgreSQL中输入**\i xxx**命令后遇到提示pe…

idea__SpringBoot微服务06——静态资源(新依赖),首页和图标定制

静态资源 一、静态资源二、首页和图标定制————————创作不易&#xff0c;如觉不错&#xff0c;随手点赞&#xff0c;关注&#xff0c;收藏(*&#xffe3;︶&#xffe3;)&#xff0c;谢谢~~ 新依赖&#xff1a;jquery的 <dependency><groupId>org.webjars&…

阿里云SLS采集jvm日志

一、背景 java应用部署在阿里云的k8s容器里&#xff0c;采集其日志的需求则是一个不可缺少的。而不同公司的jvm日志会存在很大的差异&#xff0c;所以本文仅以我的实际情况作一个示例&#xff0c;仅供有需要采集jvm日志的同学们一个参考。 我们打印的Jvm日志格式见下&#xf…

基于JAVA+SpringBoot+Vue的前后端分离的医院信息智能化HIS系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 随着科技的不断发展&a…

Gson 自动生成适配器插件

在json解析方面 我们常见有下面几方面困扰 1. moshi code-gen能自动生成适配器,序列化效率比gson快,但是自定义程度不如gson,能java kotlin共存 且解决了默认值的问题 2.gson api 强大自由,但是 第一次gson的反射缓存比较慢,而且生成对象都是反射,除非主动注册com.google.gson…