2023 柏鹭杯
2023 柏鹭杯 web
三等奖没混到,抱着队友的大腿获得了第17
Express fs以下代码存在任意文件读取
先读取环境变量,/proc/self/cmdline中发现了正在运行的node /app/main.js
读取文件之后,发现这里存在任意文件读取,同时ban 了flag
没法直接读取flag
1234567app.use((req, res, next) => { if ([req.body, req.headers, req.query].some((item) => item && JSON.stringify(item) .includes("flag"))) { return res.send("臭黑客!"); } next();});
这里同corCtf2022类似
corCtf2022一道有意思的node题 - 码农教程 (manongjc.com)
直接照着payload打就好了
123456 ...
刷题记录
刷题记录(持续更新)1.[NSSRound#13 Basic]flask?jwt?flask的伪造,主要还是flask_session_cookies_master的使用
注册账号
1AsaL1n/666
访问得到session
使用工具解码
12345flask_session_cookie_manager3.py decode -c '.eJwlzjsOwjAMANC7ZGawHcd1ehnk-CNYWzoh7g4S7wTv3e515Plo--u48tbuz2h7c8bQLsYmxFQTaaiDWWBMh6224m3mAO28Yo5VACgQnWZorglk4cku5pwusSoi3SE7CnWLQlYiimVYJFs3LcYxpmqJa1q1X-Q68_hvqH2-8QYwUQ.ZJbLpQ.mQofkly52NaaUabvgE5e7vPVSL0'b'{"_fresh":true,"_id":"c41d836a4a6242f91258c0aad1d9c07f7f479e50834bd95b ...
逃逸
逃逸
记录各种逃逸的方式
1.python沙箱逃逸介绍在python的沙箱里面,会不允许使用一些函数,包括os等类,题目又要求我们从一个受限制的python环境里面getshell或者执行一些命令
首先是一个可以fuzz 沙箱里面过滤了什么的脚本
12345678910111213141516171819202122232425262728293031323334353637all_modules_2 = [ 'BaseHTTPServer', 'imaplib', 'shelve', 'Bastion', 'anydbm', 'imghdr', 'shlex', 'CDROM', 'argparse', 'imp', 'shutil', 'CGIHTTPServer', 'array', 'importlib& ...
2023 羊城杯-web wp
2023 羊城杯-web wp
队友带飞!线下见!!!
D0n’t pl4y g4m3!!!
确实不是玩游戏捏
p0p.php存在302的跳转,跳转来到hint.zip下载附件
然后尊都假都解密
读道start.sh,看到是php -s启动
php版本7.4.21存在任意文件读取
读取p0p.php源码
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172<?phpheader("HTTP/1.1 302 found");header("Location:https://passer-by.com/pacman/");class Pro{ private $exp; private $rce2; public function __get($name) { ret ...
NSSCTF 2nd复现
NSSCTF 2nd复现
这次比赛出现了不少的问题,比如权限设置的问题。比赛的时候又脑子坏了,想的太复杂,最后导致只做出了两道web两道misc,需要深刻检讨。最近是不是状态不对
1.php签到
这题想的太复杂了,基础的签到都做不出来
源码如下
123456789101112131415161718192021<?phpfunction waf($filename){ $black_list = array("ph", "htaccess", "ini"); $ext = pathinfo($filename, PATHINFO_EXTENSION); foreach ($black_list as $value) { if (stristr($ext, $value)){ return false; } } return true;}if(isset($_FILES['file ...
python pickle反序列化
python pickle反序列化
python的反序列化相对于php反序列化比较的单一,php反序列化通过不断的变量覆盖,使得各个方法之间互相调用,从而导致了恶意方法的调用,而对于python反序列化,通过恶意的构造语句,实现了的命令执行,他更加像是一种命令的注入
1.pickle序列化 把一些复杂的数据用字符串的方法储存起来,在使用的时候取出来重新反序列化就可以。
123456789import pickleclass obj: def __init__(self,str1,str2): self.str1=str1; self.str2=str2;class1=obj("str1","str2")a=pickle.dumps(class1) print(a)#输出b'\x80\x04\x95.\x00\x00\x00\x00\x00\x00\x00\x8c\x08__main__\x94\x8c\x03obj\x94\x93\x94)\x81\x94}\x94(\x8c ...
php原生类
php原生类1.php原生类php为了解决一些常见的问题,存在一些基本的类提供给我们可以去使用(SPL),这是用于解决典型问题(standard problems)的一组接口与类的集合。
列出所有的内置类
12345678910111213141516171819202122 <?php$classes = get_declared_classes();foreach ($classes as $class) { $methods = get_class_methods($class); foreach ($methods as $method) { if (in_array($method, array( '__destruct', '__toString', '__wakeup', '__call', '__callStatic ...
时间盲注
时间盲注时间盲注又称延迟注入,适用于页面不会返回错误信息,只会回显一种界面(与布尔盲注类似),其主要特征是利用sleep函数或者benchmark函数让mysql执行时间变长,制造时间延迟,由回显时间来判断是否报错。
1select * from content where id = 1 and (尝试语句)
1.sleep()函数sleep(X)函数,延迟X秒后回显
2.benchmark函数benchmark是Mysql的一个内置函数,其作用是来测试一些函数的执行速度,benchmark()中带有两个参数,第一个是执行的次数,第二个是要执行的函数或者是表达式
仅支持查询单行单列的结果,如果存在单行单列的执行结果,则可以正常执行,反之则报错,执行失败。
当benchmark()内的语句运行失败时,benchmark同样执行失败。
这俩函数都是比较常见的函数,一般跟在if后面用于判断,下面是一个简单的时间盲注查询语句
123?id=1' and if(ascii(substr(database(),1,1))=115,sleep(2),0) --+或者?id=1' ...
从flask框架到模板注入
从flask框架到模板注入Flask 是一款使用 Python 编写的轻量级 Web 应用框架,它基于 Werkzeug WSGI 工具箱和 Jinja2 模板引擎。Flask 由 Armin Ronacher 开发,其目标是提供一个简单、灵活且易于扩展的框架,可以帮助开发人员快速构建 Web 应用程序。
1.第一个flask程序1234567from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return 'Hello, World!' if __name__ == '__main__': app.run()
运行之后,在5000端口出现一个服务器
访问/路由,返回hello world
2.目录树在创建 Flask 应用时,通常会组织应用程序的代码和资源以保持良好的结构。以下是一个基本 Flask 应用的目录树示例:
123456├── app.py├── static│ └── sty ...
php反序列化初学习
php反序列化php魔术方法1、__get、__set 这两个方法是为在类和他们的父类中没有声明的属性而设计的 __get( $property ) 当调用一个未定义的属性时访问此方法 __set( $property, $value ) 给一个未定义的属性赋值时调用 这里的没有声明包括访问控制为proteced,private的属性(即没有权限访问的属性)
2、__isset、__unset __isset( $property ) 当在一个未定义的属性上调用isset()函数时调用此方法 __unset( $property ) 当在一个未定义的属性上调用unset()函数时调用此方法 与__get方法和__set方法相同,这里的没有声明包括访问控制为proteced,private的属性(即没有权限访问的属性)
3、__call __call( $method, $arg_array ) 当调用一个未定义(包括没有权限访问)的方法是调用此方法
4、__autoload __autoload 函数,使用尚未被定义的类时自动调用。通过此函数,脚本引擎在 PHP 出错失败前有了最 ...