GHCTF_web_wp(个人出的题)
给非预期烂了,先对各位师傅说个抱歉(难受)upload?SSTI!这题我是直接给出了源码。写了个文件上传和文件读取的逻辑。
我们看文件读取的函数就可以发现。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455@app.route('/file/<path:filename>')def view_file(filename): try: # 1. 过滤文件名 safe_filename = secure_filename(filename) if not safe_filename: abort(400, description="无效文件名") # 2. 构造完整路径 file_path = os.path.join(app.config['UPLOAD_FOLDER' ...
CTFshow
c6bded76d588d5cd534ed93e2aa21dc15c9b1a318762a0a7de8a92f96025b2e27c8c6450f475b797d2344a810a73bf9d0b28615fbe52ff6c3a10acf70f99ab56ccf61d0b34bb3ca9b95dffb2d2671954ea6c9fcb884ba9e914bcd613952ec1893277785da55a923c7ccdf6b395d065e8c2df2e1fccf761342471bd739d8ff378be95513b72e10b40930d474bc7121c1272247d0a78d735d2310e29d4ce80900810869edb82f26fad20d67a65d0e5628c9cef3c3e223a2fa6d51691cb4ed70b583809587738be47f78289f729a63f6bfbc3708775f61a7710ba0f3d4a0339ad03be2c3e10271e27e16b80ddb01f8fb3ed753bdfab4e8fd8740 ...
java_web开发
单元测试Spring项目目录结构介绍web源码目录
我们的web源码是再src目录的java方法下,的包里的。与Spring的启动项同级或子目录
123456789101112package org.lse;import org.springframework.web.bind.annotation.*;@RestController//标识我们的类是控制器类public class HelloController { @RequestMapping("/Hello")//标识请求的路径,其下面的方法为其视图函数 public String hello(String Name) { System.out.println(Name); return "hey "+Name; }}
注解@RestController和 @RequestMapping,Spring框架有很多注解,我们需要通过注解来将普通类与构造类区分,将普通方法与我们的请求方法区分等等
reso ...
本人对于bottle框架下中无大括号ssti的一些思考以及内存马的挖掘
SimpleTemplateSimpleTemplate是bollte框架下的一款模板渲染引擎其内置了相当多的函数,也有一些不同于jinja2的trick如下
include 文件读取
这个函数我们从介绍可以发现其是导入一个子模板,并将结果导入模板,虽然他的官方文档写的是123% include('header.tpl', title='Page Title')Page Content% include('footer.tpl')但是其并没用对导入的模板文件进行检测,所以当我们输入{{include(app.py)}}就可以进行任意文件读取,好像只有web目录
% 与<%Bollte的模板是SimpleTemplate 模板引擎,里面有一个挺有趣的操作就是<%%>与%,我们可以利用上面的来执行python代码。
这样我们再SSTI时就会有很多的操作。
像如下demo。1234567891011121314from bottle import template, ...
java(整理一下,方便复习)
143d5673a003b6feb710e92aa9ea18c2e9a45deb4ad7a8d5a96100e95eddb6d5122f8cc7e0361c51656a009ef4c3fa60017aec2c10facb3264ea350559ee7aee2419cf55b1f95094eaf93dedae4b79fb6f032d9dd024cf831016660b42afb36fa054f24e509534fbf1c5882118dd6e061c35dd076f4a2351f0464e3dcd97fa0965174eec642b3d3b6457eb1c361069afaf5e83d8502a8daaef5d3881419c3e74b7b50a0653f96be011fbbc9fec7e05a26363c90b9425cd8a173238f7c80f201107b1d0a78682178061248ed7fe5e3dfa2728bd92dddbeab72c7d3e67caa23951b0d926575a4fcf18d881feb8ed16478332237e9077a8bb933 ...
N1CTF junior 2025 Web(复现)
说实话很久没水博客了,感觉自己自从大二以来对CTF的热情就越来越低,各种事情压过来,什么协会,攻防,社工,明明才大二,领导安排的任务一个比一个离谱,没有报酬还占用一堆时间,当然这些可能也是是我自己心里逃避的借口而已,但不知道为什么就是累,好了不能再这么下去了😠,开始学习。还有感谢bao师傅提供的附件Gavatar
upload.php很明显当上传的文件为空时会进入url的判断,将url指向的文件写入到$avatarPath而远程文件读取利用的函数是file_get_contents,那么我们就可以进行任意文件的读取然后写入到$avatarPath,而再读取头像的avatar.php下我们可以发现无需知道$avatarPath就可以读取到头像,虽然user[id]是随机数但是无影响
但仅仅是文件读取的话我们是无法得到flag的,这里还需要使用到CVE-2024-2961这里我利用珂字辈师傅拆解出的脚本来跑payload
https://github.com/kezibei/php-filter-iconv
读取/proc/self/maps
1php://filter/conv ...
VNCTF2025wp(部分)
奶龙回家进入可以发现其为一个登陆框,经过尝试发现sql注入
经过产生无法使用union,空格,sleep,BENCHMARK。一使用if就发现其会报错,这时候就已经怀疑其为sqlite的数据库不存在if语句了。然后使用case when来进行sqli的注入,按sqlite的注入方式。使用randomblob来进行延迟
123-1'/**/or/**/(case/**/when(substr((select/**/sql/**/from/**/sqlite_master),1,1)>'1')/**/then/**/randomblob(400000000)/**/else/**/0/**/end)/*-1'/**/or/**/(case/**/when(substr((select/**/password/**/from/**/users),1,1)>'1')/**/then/**/randomblob(400000000)/**/else/**/0/**/end)/*
123456789101112131415 ...
hgame2025
webPacmanhttps://deobfuscate.io/反混淆
BandBomb上传文件改名为模板,实现覆盖
MysteryMessageBoard和网鼎青龙组的很像
双面人派对prodbucket
逆向在字符串李搜索可以发现存储桶的账号密码用的是minio的分布式存储桶,这里我使用其官方工具mc进行连接12mc.exe config host add minio_admin http://node1.hgame.vidar.club:30407
连接上后就可以看到hint里是一个源码。可以发现是一个使用overseer来自更新program函数的程序,而更新的Fetcher就是minio prodbucket的update程序。那么我们只要将program重写成危险函数再传到update就可以了就可以了
角落https://blog.wm-team.cn/index.php/archives/82/配置文件错误,源码读取
发现路径/app.conf发现apache配置有问题,可以进行源码读取
123456789101112131415161 ...
出题
143d5673a003b6feb710e92aa9ea18c2e9a45deb4ad7a8d5a96100e95eddb6d58f443b8e61547fabbb6d0e456f048a7a619bb5de79a589801b9e68e9caf3a5fa7ab9c0be03168a2cf0196736eb39cfb9924ce0f65c7b3cf27553040716c874fece6816ac123e7aff25b39b933c4d3cf56d08bc6d0a0c1eda1e87be0af8525875027683fdd514017fbac7b47e506094494cbaa333f3490c4ec2569aa055d9a81d43b257afc6c83c726b54320356695f53e9b60761f912ad4361a9e64be87327170bab30e6f1dc3eb57c3f1cb091b807954d740c12a1c4efe4e9072ef1efd915a4f3c1fed26bc3553cc8544997b5208813c4f5366b83c9fcf07 ...
西湖论剑
Rank-l登陆时可以发现其输入用户名和输入密码是在不同路径下的。
在经过尝试可以发现在登陆页面输入一次用户名,服务器会将其保存,后面输入密码时,如果错误会回显用户名因为是py所以尝试使用ssti
经过尝试可以发现,在用户名处存在ssti其过滤了一些特殊符号如/ * ;等。这里我使用equest.args.x1来进行绕过1phone_number={{g.pop.__globals__.__builtins__['__import__']('os').popen(request.args.x1).read()}}phone_number={{g.pop.__globals__.__builtins__['__import__']('os').popen(request.args.x1).read()}}
easydatalog下载查看日志可以发现其为使用蚁剑所记录的日志。一步步看下去可以发现用蚁剑传了一张jpg图片 ...