最近打了ringzer0 CTF PHPJail挑战,题目非常有趣考察PHP的特性以及绕过奇淫技巧,下面是对PHPJail的多解分析 PHP Jail1 源码 <?php array_shift($_SERVER['argv']); $var = implode(" ", $_SERVER['argv']); if($var == null) die("PHP Jail need an a
最近打了ringzer0 CTF BashJail挑战,题目非常有趣考察bash的特性以及绕过奇淫技巧,下面是对BashJail的多解分析 Bash jail1 jail源码如下 Challenge bash code: ----------------------------- while : do echo "Your input:" read input
BaseCTF新生赛 week2 PWN详解 format_string_level0 保护全开,但是没什么影响。 open了flag又读入给了ptr分配的内存空间里,那么ptr里面就是flag,ptr和读入的buf之间的距离是0x10也就是16,64位下也就是相差2个字节。 先计算一下格式化字符串参数: buf的格式化字符串参数是10,那么ptr的格式化字符串参数就是10-2=8,只需要发
前言 Tcache机制的出现改变了堆利用的玩法,该机制于libc2.26首次出现,在libc2.27默认开启,libc2.28引入了key机制缓解double-free漏洞 只要能绕过key机制,就能触发double-free漏洞,通过修改tcache chunk next指针再申请内存,进行一次任意内存分配(读,写) 通常来说,key机制的绕过就是把该字段的值随便改一下就行,但是如果无法去修改该
hard+sandbox 这题难点在于绕过沙盒的限制,但是这里open和openat都禁用,并且固定执行环境,很难通过平替函数或者篡改cs切换执行环境来执行open函数 在堆题方面没什么好说的,一个大堆的申请限制+uaf漏洞,直接largebin attack+IO就能完成劫持rip glibc2.36,这里使用了一个magic_gadget来配合使用setcontext完成劫持 0x0000
前言 一道涉及恶意宏的逆向题目,不算难。 知识点 关于OLE文件 office文档(如.doc、.ppt、.xls等)其实都是复合文档(OLE),该文件格式全称为OLE复合文档格式,它允许多个数据流和存储在单个文件中,这些数据流和存储可以包含文本、图形、表格、音频、视频、嵌入对象等。包括宏代码信息也是存储在OLE中的。 doc、docx、docm都是word文档的文件格式,doc是普通的OLE文档
相关源码 这里新加的prev_inuse检查让off-by-null变得麻烦,因为会通过prev_size来寻找到要被unlink的chunk,然后比较prev_size和它本身的size是否相等,这种一般也没有uaf /* consolidate backward */ if (!prev_inuse(p)) { prevsize = prev_size (p);
前言 在此之前,笔者libc2.35都固化思维地只会largebin attack然后打IO,一遇到高版本还打tcache的好像束手无策 但是largebin attack的目的其实就是任意地址写堆地址,但是如果能做到tcache poison实现任意地址分配,这种攻击的威力更大 例题分析 例题 NSSROUND21 want_girlfriend main函数 create函数 aban
Lyrics For You 读/lyrics?lyrics=/proc/1/cmdline得到su-cexec python3 -u /usr/etc/app/app.pyplayer,访问/lyrics?lyrics=/usr/etc/app/app.py得到源码 import os import random from config.secret_key import secret_co
分析 这里首先有一个权限认证,查看 Shiro 的版本是 1.2.4 ,可以利用 Shiro 的 CVE-2020-1957 漏洞绕过权限认证,在要访问的接口后面加上 / 即可绕过。 /user/index -> /user/index/ 然后看后端有两个接口,一个文件上传漏洞,一个反序列化漏洞。 @PostMapping({"/user/ser"}) @ResponseBody pub
NSS影院 dirsearch扫描访问网站www.zip中包含了字典 仔细找一下,资讯页面下存在TEST新闻,点击进去 评论区第二页有提示 测试发现是网站的后台页面 管理员用户名在刚刚提交文章的页面是可以看到的,密码需要爆破 但是每次爆破都会刷新一次验证码 摸索很久找到,bp中的xiapao插件来识别 ,当然用自己的也未尝不可 效果: 密码为princess!,管理员的名字为d3f4u1t,
EZsquares from Crypto.Util.number import * from gmpy2 import * from secret import flag p=getPrime(512) q=getPrime(512) n0=p**2+q**2 print('n0 =',n0) e=65537 n=p*q m=bytes_to_long(flag) c=pow(m,e,n)
[Week2] ez_ser 这是一道反序列化的入门题目 只要自己了解一下序列化即可做出来 payload:O:3:"web":2:{s:2:"kw";O:2:"re":1:{s:4:"chu0";O:3:"pwn":2:{s:4:"dusk";s:4:"gods";s:4:"over";O:4:"Misc":2:{s:7:"nothing";N;s:4:"flag";N;}}}s:2:"dt"
前提提醒: 这个方法不是原创 https://bbs.kanxue.com/thread-282105.htm 跟着这篇文章进行的学习 如果可以,大家还是多多去学习原文章 这篇文章就是写出我对这个方法的心得体会以及一些理解来帮助大家理解 我的理解 其实就是黑盒测试中,只不过黑盒必须是单字节才能进行爆破,因为最多只是128 n 次就可以 如果是双字节其实也行, 128**2 n 具体就看你们的大家的
在ctf中比较常见的流密码题型中lcg,mt19937,lfsr三类伪随机数生成方法是比较常见的,本文对这三类做一个介绍并附上一些简单的例子 lcg 原理 lcg即线性同余生成器,是较为简单的伪随机数生成方法,通常由如下式子生成 作为题目出现时,通常是已知这个式子里的几个量,需要求这个式子里余下的几个未知量 1.求a a=((Xn+2-Xn+1)(Xn+1-Xn)^(-1))%m 2.求b b=