前言本篇复盘仅仅是针对于本次比赛中我不会的题目进行一次复盘,对于做出来的题目并不会写上相关的题解
并且仅仅是web方向的题目
Re: 从零开始的 XDU 教书生活该题首先要对题目提供的源码理解透彻,明白每个函数的功能
题目要求是要让每个学生都正常签到才可以获得flag
其实本质上就是需要我们重复发送请求
脚本如下:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495import requestsfrom Crypto.Cipher import AESimport base64# 请替换为您的靶机BASE_URL = "http://127.0.0.1:8888"def encrypt_by_aes(data: str, key: str, iv: str) ...
借鉴JWT渗透姿势
JWT(JSON Web Token)是一种无状态认证机制,通过将用户身份和权限信息存储在令牌中,实现安全地在网络应用间传递信息。它具有跨域支持、扩展性和灵活性、安全性以及可扩展的验证方式等特点,成为现代应用开发中重要的认证和授权解决方案。
JWT的组成JWT的结构由三部分组成,分别是Header、Payload和Signature,下面是每一部分的详细介绍和示例:
Header 部分在 JWT 中 Header 部分存储的是 Token 类型和加密算法,通常使用JSON对象表示并使用Base64编码,其中包含两个字段:alg和typ
alg(algorithm):指定了使用的加密算法,常见的有HMAC、RSA和ECDSA等算法
typ(type):指定了JWT的类型,通常为JWT
下面是一个示例Header:
1234{ "alg": "HS256", "typ": "JWT"}
Payload 部分Payload包含了JWT的主要信息,通常使用JSO ...
前言本次审计的项目有提供部署的相关步骤和视频教程,但不知为何我自己在搭建的时候会出现莫名的错误导致环境搭建不起来,因此只能fofa上面搜一个来进行测试
fofa语句:"/Mao_Public/js/jquery-2.1.1.min.js"
前台sql注入漏洞首先我们先审计一下主页代码index.php,发现一处sql查询的地方
1234567891011<?php $rs = $DB->query("SELECT * FROM mao_shop WHERE M_id='{$mao['id']}' and (tj='0' && zt='0') order by id desc limit 2"); while($rows = $DB->fetch($rs)){ i ...
前言本次审计的是一个基于tinkphp6框架的U支付系统
在fofa上面搜索:"/usdtmerchant/login/reg.html"便可以找到相关的网站,要注意的是有些网站已经进行了改进,再也不能利用该文章中的漏洞了
前台sql注入漏洞身为一个普通用户,我们能够访问的也就只有index.php,所以我们要从app/index/controller/Index.php开始进行审计
我是在已经知道有该漏洞的情况下进行复现的,所以在该文件中我直接搜索关键字Db,查查是否有可以利用的函数,如下:
1public function send(){ $dd = Db::query(urldecode($_REQUEST['query']));}
该方法允许直接对变量query进行赋值,输入相关的搜索语句,直接运行
该方法并没有对输入的内容进行验证,所以可以尝试是否存在sql注入漏洞
正是因为语句是我们自己输入的,所以并不存在联合注入漏洞,无法报错注入
尝试后可知该方法只要搜索语句正确状态码便是200 ...
引用本文是根据P神的两篇文章进行学习,分别是一些不包含数字和字母的webshell以及无字母数字webshell之提高篇
浅析CTF绕过字符数字构造shell
第一个问题123456<?phpif(!preg_match('/[a-z0-9]/is',$_GET['shell'])) { eval($_GET['shell']); }else{ highlight_file(__FILE__);}
题目在eval()前进行过滤,那我们就得在eval()里得到正常的webshell语句并执行。eval()允许多语句(可分号),这就为我们得到正常的webshell语句提供了很大的操作空间。
首先,核心思路便是将非字母、数字的字符经过各种变换,最后能构造出a-z中任意一个字符。然后再利用PHP允许动态函数执行的特点,拼接处一个函数名,如“assert”,然后动态执行之即可
php5中assert是一个函数,我们可以通过$f='assert';$f(...) ...
Cat首先打开题目环境,发现是如下的输入框
尝试输入127.0.0.1,回显如下
发现是get传参,输入ip后会ping一下
最开始以为是ssrf相关漏洞,尝试后发现并不是,那么应该就是跟ping相关的了
输入:127.0.0.1;ls,结果回显Invalid URL
那应该就是有字符过滤的了,掏出sqli_fuzz字典开始fuzz
结果发现当输入%a0的时候页面会直接会显出代码
一个html文件,将其代码复制后再打开
用游览器打开以后最底下可以看到一串提示:You’re seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard page generated by the handler for this status code.
也就是说,True in your Django settings file.有可能flag文件在 settings file 中 ...
前言这两天审计了一个基本组成是thinkphp的代码,里面有一个文件上传的漏洞,下面记录一下审计的整个流程
在fofa上面搜索一下:"web/static/css/chunk-elementUI.f92cd1c5.css",搜索到的链接其前后端便是这次审计的代码框架
审计在开始审计该框架的时候,我便已经知道这个框架有一个文件上传的漏洞,所以审计的过程中我便只看了跟文件上传有关的代码
该框架是一个多应用模式,app目录下面有admin,api,super,web四个目录,身为普通用户的我们是在web目录下的,也只能够操作web目录下面的控制器方法
web目录下面有一个Upload.php文件,具体代码如下:
1234567891011121314151617181920212223242526272829303132333435363738<?phpnamespace app\web\controller;use think\facade\Filesystem;class Upload extends Base{ /** *上传图片 ...
面向对象-基础类和对象的内存分配机制Java 内存的结构分析
栈: 一般存放基本数据类型(局部变量)
堆: 存放对象(Cat cat , 数组等)
方法区:常量池(常量,比如字符串), 类加载信息
举一个创建对象的流程分析例子
123Person p = new Person();p.name = “jack”;p.age = 10
先加载 Person 类信息(属性和方法信息, 只会加载一次)
在堆中分配空间, 进行默认初始化(看规则)
把地址赋给 p , p 就指向对象
进行指定初始化, 比如 p.name =”jack” p.age = 10
成员方法调用机制示意图
递归例题一
下面为该题代码
1234567891011121314151617181920212223242526272829303132333435public class Test { public static void main(String[] args) { T t1 = new T(); int n = 7; ...
Write-Up
未读journal关注重点代码
1234567891011121314151617181920212223<?phpecho "<p>Welcome to my journal app!</p>";echo "<p><a href=/?file=file1.txt>file1.txt</a></p>";echo "<p><a href=/?file=file2.txt>file2.txt</a></p>";echo "<p><a href=/?file=file3.txt>file3.txt</a></p>";echo "<p><a href=/?file=file4.txt>file4.txt</a></p>";echo "<p><a href ...