0%

[pasecactf_2019]flask_ssti

题目本身出的很诡异,flag删了然后源码里面放了一个憨批对称加密函数,加密过的flag放进了config里面,config可以直接看(BUU题目描述上的那个加密函数是错的),过滤了单引号点号下划线
目标是读源码

题解

只过滤了单引号,双引号还能用,python单双引号好像没有什么大的区别,留了一个能用的就行
单双引号全挂了还过滤字符的话就只能用上次DASCTF的凑%c和全数字,然后一个个格式化字符串凑字母表
这里不用太麻烦,直接在双引号里面用十六进制\\x00就能绕过下划线的过滤,点号的过滤用方括号代替,一样能访问属性。
然后随便找个常用payload读文件就能打通。这次的记录主要是重新学习总结了一下SSTI相关的东西,找个机会开一篇文章

总结

阅读全文 »

[CSAWQual]Web_Unagi&[FireshellCTF]Caas

两个BUU一分题,不难但也不算太简单

Web_Unagi

题目就是个很明显的XXE,传一个XML文件上去,ban了ENTITY,SYSTEM,file之类的关键字

使用UTF16编码绕过,编码之后这种字符串匹配的waf就根本拦不住我们了,直接读文件就行

阅读全文 »

MAR DASCTF2021

平台好卡,环境时不时就访问不上了。卡到不想做题。。。感觉题目也有点莫名其妙的

baby_flask

很容易验证是SSTI,先fuzz一遍过滤的字符# "'.0123456789:[\_ config chr request pop大概测出来这些,不给用引号数字点号右括号下划线和几个函数,访问属性可以用attr()|attr()这样子绕,不过下划线这些关键字符还是得想办法搞出来,并且没了数字chr和引号也不好凑字符串了
以前看到过”%c”%num这种方法进行格式化字符串来拼字符的,现在的问题就在于引号没得数字没得,凑不出来,看到这么文章上写了这么个东西
{%set pc = g|lower|list|first|urlencode|first%} 取得%
用set定义一堆变量开始慢慢拼,g是flask一个奇怪的模块,g|lower|list|first会获得一个字符<,其URL编码为%3C,直接一波获得%c两个字符
{%set c = g|lower|list|first|urlencode|last|lower%} 取得c
{%set udl=(pc,c)|join%}
得到”%c”字符串,接下来就要想办法获取数字了,可以像上面的方法如法炮制url反复编码拿到数字,也可以用bool变量加加减减获得数字{%set one=-(False-True)%},然后一路加法获得所有数字
最后通过{%set a=udl%((nine|string, seven|string)|join|int) %}这样子获得
最后的最后凑齐字母表再一个个join起来通过attr()形式命令执行

ps

阅读全文 »

Switch自建加速终章

短时间内不会再研究这个东西了,到最后感觉还是竹篮打水一场空。。。但是发现之前写的东西似乎有一点问题,订正一下然后最后总结一下这几天都干了什么奇怪的事情

2022.2.12 update

写在前面
套娃操作实际意义不大,起码我目前从未见识过所谓的UDP断流等情形,switch联机的P2P性质使得游戏体验在理论上由几个因素决定:1.NAT类型,NAT类型决定了联机进入房间的成功率,NAT到A只要丢包不严重你就是人上人;2.出口点之间的网络环境,比如你开个加速器飞去美国,然后国内裸连卡比就等于是从国内连你,还是卡,但是你们俩都飞美国或者都在国内,可能就很顺畅了。比如我和我大哥直接校园网畅快联机。。。3.网络链路质量,正常人一般使用的都是家用网络,总是能在网上看到说这个机房去程xx线路回程xx线路的。如果是很好的线路应该就不用考虑丢包延迟问题了,因此自建时服务器所使用的链路应该影响也很大。
还是推荐一下后来更新的较稳定方案
且该套娃方案可能由于工具本身的问题,会导致NAT类型的退化,不建议用于Switch P2P联机加速,反而可能对某些PC端CS类型游戏有效
Switch自建NAT优化指北

—————原文章内容分割线————–

阅读全文 »

Docker escape

Docker逃逸的本质和硬件虚拟化逃逸的本质有很大的不同,容器逃逸的过程是一个受限进程获取未受限的完整权限,又或某个原本受Cgroup/Namespace限制权限的进程获取更多权限的操作,更趋近于提权。

前置知识

在开始之前,先看看docker和docker实现相关的技术基础

Linux namespace

阅读全文 »