参赛感悟 第三次还是第二次参加这种CTF大赛了,感悟和学习也是蛮多的,越发感觉跟大佬的差距明显,但是还是要努力啊,都大三了,也希望出点成绩.比赛中一道WEB都没做出来,唯一有点思路的只有EZCMS,通过哈希扩展攻击,进入admin.但是对于Phar的反序列化让我无所适从,找不到任何的利用点,干看着似乎有反序列化的利用点,却一头雾水.还是学习的太少,boring_code这道题的bypass方法也受益颇多. boring_code 题目: <?php function is_valid_url($…
开发环境 Python版本:3.6.4 (32-bit) 编辑器:Visual Studio Code C++环境:Visual Studio 2013 需求说明 在用VS2013编写的Win32程序CallPy.exe中,调用Python模块say_hi.py中的prt_hi()函数,从而实现C++中Python的嵌入. 0 准备say_hi.py模块 1 设置主程序CallPy环境 使用VS2013新建一个名为CallPy的Win32空项目,添加主程序文件CallPy.cpp,再按照下图将P…
https://github.com/januwA/GameCheat #include "pch.h" #include <iostream> #include <Windows.h> #include "GameCheat.h" using namespace std; void __stdcall myHook() { printf("触发钩子了\n"); } DWORD WINAPI MyThread(HMODUL…
简介  原题复现:  考察知识点:无参数命令执行.绕过filter_var(), preg_match()  线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题 环境复现 目录 www/flag flag文件 www/code/code.php 代码 1 <?php 2 function is_valid_url($url) { 3 //FILTER_VALIDATE_URL 过滤器把值作为 URL 进行验证. 4 i…
简介  原题复现:  考察知识点:无参数命令执行.Fuzz  线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题 环境复现 代码 <?php highlight_file(__FILE__); $code = $_GET['code']; if (!empty($code)) { if (';' === preg_replace('/[a-z]+\((?R)?\)/', NULL, $code)) { if (preg…
0x00 前言 这几天做了几道无参数RCE的题目,这里来总结一下,以后忘了也方便再捡起来. 首先先来解释一下什么是无参数RCE: 形式: if(';' === preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['code'])) { eval($_GET['code']);} preg_replace('/[a-z]+\((?R)?\)/', NULL, $code) pre_match('/et|na|nt|strlen|info|path||rand|d…
简介  原题复现:  考察知识点:无参数命令执行  线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题 源码审计 代码 1 <?php 2 error_reporting(0); 3 //听说你很喜欢数学,不知道你是否爱它胜过爱flag 4 if(!isset($_GET['c'])){ 5 show_source(__FILE__); 6 }else{ 7 //例子 c=20-1 8 $content = $_GET…
 装饰器分成三种: 1.无参数的: 2.有参数的: 3.装饰器本身带参数的. 装饰器decorator又叫语法糖 定义:本质是函数,器就是函数的意思.装饰其他函数.就是为其他函数添加附加功能. 原则:   1.不能修改被装饰的函数的源代码: 2.不能修改被装饰的函数的调用方式: 3.装饰器对被装饰的函数是完全透明,就是被装饰的函数,根本不知道装饰器的存在. 实现装饰器知识储备: 1.函数即“变量” 2.高阶函数 3.嵌套函数 高阶函数+嵌套函数=>装饰器的效果 1.函数即变量的意义: 函数跟变量…
写带参数的函数装饰器最纠结的是需要包好多层,最外层是接收参数的函数,它返回一个接收函数的的函数.但这样有个问题是,最终包装出来的装饰器必须加()调用一下,即使没有参数也需要这样做,因为调用这个最外层函数才能返回里面装饰器(就是接收函数的函数).以前一篇为例,可以这样改进: def opt_arguments(func): def meta_wrapper(*args, **kwargs): if len(args) == 1 and callable(args[0]): return func(…
关键字参数 函数也可以使用 键 =值 的关键字参数形式被调用,这种调用形式的参数被称为关键字参数. 特别是在一个有许多参数的函数下,你想要指定参数中的部分参数,你可以使用关键字参数的方式来调用函数. 这有两个优势: 1.使用函数容易,因为我们不需要担心参数的顺序. 2.如果其他参数有默认参数值,我们可以只给我们想赋值的参数赋值. def print_info(name, age): print("name:", name) print("age:", age) pr…