BUUCTF Reverse 11-32
BUUCTF Reverse 11-32[toc]
11. Java逆向解密附件是一个class文件,用jadx打开
123456789101112131415161718192021222324252627282930public class Reverse { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.println("Please input the flag :"); String str = s.next(); System.out.println("Your input is :"); System.out.println(str); char[] stringArr = str.toCharArray(); Encrypt(stringArr); } pub ...
CodeQL学习笔记(一)
CodeQL学习笔记(一)CodeQL简介CodeQL是一种用于查找潜在漏洞和安全问题的查询语言。它可以帮助开发人员更轻松地检查代码,以确保它们的应用程序没有安全漏洞。CodeQL可以检查源代码,以及编译后的代码,以及可执行文件,以及其他形式的代码。它还可以检查源代码以外的元数据,例如文档和注释。
CodeQL历史该项目的历史为:Semmle公司最早独创性的开创了一种QL语言,Semmle QL,并且运行在自家LGTM平台上。
LGTM平台上存放的就是一些开源项目,用户可以选择分析的语言,编写ql语句进行程序安全性查询。
2019年,GitHub为了解决其托管的海量项目的安全性问题,收购了Semmle公司,并宣布开源CodeQL的部分规则,这样全世界的安全工程师就可以贡献高效的QL审计规则给github,帮助它解决托管项目的安全问题,而对于安全人员也多了一个非商业的开源代码自动化审计工具。
环境配置CodeQL本身包含两部分:解析引擎和SDK
安装解析引擎解析引擎用来解析我们编写的规则,虽然不开源,但是我们可以直接在官网下载二进制文件直接使用。
https://github.com/g ...
BUUCTF Reverse 1-10
BUUCTF Reverse 1-20[toc]
1. easyre64位程序,没有加壳
使用64位ida,shift+f12检索字符串,得flag
2. reverse164位程序
丢入ida,shift+f12查看字符串
双击,发现被sub_1400118C0调用
str2为{hello_world}
转为伪代码,判断输入的字符串和str2相等即可
str2是对{hello_world}进行字符串替换得到的,o替换为0
最后的flag:{hell0_w0rld}
3. reverse2
ida64打开,check+f12查看字符串,跟进right flag
main函数调用,跟进
和上一个题目差不多,查看s2的生成过程,将flag中的i和r替换为1
12345for ( i = 0; i <= strlen(&flag); ++i ) { if ( *(&flag + i) == 'i' || *(&flag + i) == 'r' ...
华为杯第一届中国研究生网络安全创新大赛实网对抗赛初赛
“华为杯”第一届中国研究生网络安全创新大赛实网对抗赛初赛babyql关键的代码
12345678910111213141516171819202122232425@RestController/* loaded from: BabyQL.jar:BOOT-INF/classes/com/ctf/web/ql/controller/AppController.class */public class AppController { @RequestMapping({"/"}) public String index() { return "Welcome :)"; } @RequestMapping({"/exp"}) public String exp(@RequestBody Map params) throws Exception { String x = params.get(&quo ...
第五届强网拟态防御国际精英挑战赛
WHOYOUARE主要看了这个题目,popsql和ezus学弟直接K了
题目给了附件,看关键代码,对传入的user.command进行检查,然后通过merge将user复制给request.user,然后通过ChildProcess.execFile执行request.user.command
所以我们需要赋值command为恶意命令,主要看两个函数,checkuser和merge
checkUsercheckUser函数如下,首先是command需要时一个数组,长度小于等于2,并且字符串长度不能超过4,只能含有a-zA-Z0-9-以内的字符串(包括-i -c这样的字符串)
12345678910111213function checkUser(command){ if (Array.isArray(command) === false || command.length > 2) { // 需要为数组,且长度小于等于2 console.log("不是数组"); return false; & ...
cc2分析
看到commons-collections-4.0以上版本,直接想cc2这个链子
漏洞环境jdk1.8
commons-collections-4.0
javassist(在靶机环境中不需要有javassist,只是我们生成恶意payload的过程中需要javassist动态类编程)
12345<dependency> <groupId>javassist</groupId> <artifactId>javassist</artifactId> <version>3.12.1.GA</version> </dependency>
为什么不能用commons-collections-3.1-3.2在3.1-3.2.1版本中TransformingComparator并没有去实现Serializable接口,也就是说这是不可以被序列化的。所以在利用链上就不能使用他去构造。
并且也采取了一下新的利用类Priority ...
readFileSync浅分析
前言前言:在刚过去的祥云杯中,web类型题目有一个rustwaf的题目(corCTF 2022 simplewaf 改编而来),其中有个关于readFileSync的trick,这里分析一下
源码分析看下官方文档对readFileSync的解释,注意看,path可以是字符串,Buffer类对象,URL类对象等等
调用链
123456fs.readFileSync -->fs.openSync(lib/fs.js) --> getValidatedPath(lib/internal/fs/utils.js) -->toPathIfFileURL(lib/internal/url.js) -->fileURLToPath(/lib/internal/url.js) -->getPathFromURLPosix(lib/internal/url.js)
node/fs.js at v18.x · nodejs/node (github.com)
lib/fs.js,查看readFil ...
原型链污染配合ejs模板引擎RCE分析
首先注意,这个是在原型链污染的前提下,进行的RCE,并不是ejs本身存在原型链污染导致RCE
影响版本ejs版本 < 3.1.7
环境搭建因为该RCE的前提条件是原型链污染,为了方便本地复现,这里使用 lodash.merge 方法中的原型链污染漏洞。
123npm install lodash@4.17.4npm install ejs@3.1.6npm install express
测试代码app.js
12345678910111213141516171819202122232425262728var express = require('express');var lodash = require('lodash');var ejs = require('ejs');var app = express();//设置模板的位置与种类app.set('views', __dirname);app.set('views engine','ejs');/ ...
2022祥云杯初赛
2022祥云杯初赛ezjava直接查看依赖,含有commons-collections4依赖
cc2
不出网的恶意类构造
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051package cc2;import com.sun.org.apache.xalan.internal.xsltc.DOM;import com.sun.org.apache.xalan.internal.xsltc.TransletException;import com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet;import com.sun.org.apache.xml.internal.dtm.DTMAxisIterator;import com.sun.org.apache.xml.internal.serializer.SerializationHandler;import java.lan ...
GYCTF2020 Ez_Express
[GYCTF2020]Ez_Express源码泄露文件泄露www.zip
主要逻辑在routes/index.js
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172var express = require('express');var router = express.Router();const isObject = obj => obj && obj.constructor && obj.constructor === Object;const merge = (a, b) => { // 存在原型链污染 for (var attr in b) { if (isObject(a[attr]) && isObject(b[attr])) ...