midnight-sun-ctf-2020-quals-writeup
前言第一次做国外 CTF 与国内有差异的,我感觉最明显的是题目会多个方向混合出题,比如说 web 与 pwn 结合出题。从部分题目和结合前几天看的 king of hill 直播,感觉国外 CTF 对 linux 知识也要有一定要求,不能仅仅只会做题的亚子。
admpanel考点:代码能力、linux基操
程序为一个面板,自然有登录功能,帐号密码通过 IDA 看代码得出。登录成功后可以执行命令,但是程序给出提示只能执行 id 。但是使用的判断函数是 strncmp ,只要是子串都可以通过,换句话就是只有含有 id 都能执行。
完整 exp :
1234567891011121314151617181920from pwn import *context.log_level = 'debug'p = remote("admpanel-01.play.midnightsunctf.se",31337)#p = process("./admpanel")p.recvuntil(& ...
第二届BJDCTF Writeup
Misc最简单的misczip 压缩包伪加密,改完标志位,解压得到文件 secret 。winhex 打开发现头部有 IHDR 标志,盲猜一个 PNG 文件,补一个文件头 89504E47 ,改后缀名。
隔壁是作者,重点是下面。十六进制转 Ascii 得到 flag 。
A_Beautiful_Picture下载一个 png ,改高度得到 flag 。
EasyBaBajpg 19.9M 你见过么?反正我没见过。binwalk 一下没有东西,foremost 一下出来一个压缩包,里面还是一个大得出奇的 jpg 。winhex 看了一下 avi 文件,改后缀名,得到一段鬼畜,pr 逐帧查看视频,找到四个二维码,扫码。十六进制转 Ascii 码,转码后调整顺序得到 flag 。
问卷调查认真填写才能获得 flag
小姐姐用 stegdetect 检查 jpeg 文件,发现 jphide 加密。
1stegdetect.exe -s 20 xiaojiejie.jpeg
然后爆破密码?
对,没错想多了。只需要这样:
Real_EasyBaBawinhex 打开文件,仔细看,就能获得 ...
WordPress用户评论和回复评论邮件通知功能
前言目标解决两个问题:
用户在文章中提交评论后,我们无法及时获取用户评论的内容,同时也就没办法及时回复;
从后台发现用户评论,虽然回复了,但是用户已经离开网站,无法接受到您给他的评论回复。
方法一:插件 WordPress Mail SMTPWP 后台直接安装即可,全中文操作。如果使用 qq 邮箱,邮件系统类型选择 other smtp 。stmp 地址填入 smtp.qq.com ,勾选 ssl ,端口 465 。帐号为发件邮箱,密码为 stmp 服务授权码。
方法二:手动修改代码找到你当前使用的主题目录下的 functions.php :
在文件末尾加上下面代码,请自行配置:
1234567891011121314151617181920212223242526272829303132333435363738394041//使用 smtp 发邮件add_action('phpmailer_init', 'fanly_mail_smtp');function fanly_mail_smtp( $phpmai ...
栈迁移学习(新)
栈迁移学习(新)
2020年7月4日 更新:
题目在buu上有实验环境,名字是:gyctf_2020_borrowstack
前面刚总结完的笔记感觉不太完善,然后再做了题后,理解更加透彻,重新整理一下。
介绍当存在栈溢出且可溢出长度不足以容纳 payload 时,可采用栈迁移。一般这种情况下,溢出仅能覆盖 ebp 、 eip 。因为原来的栈空间不足,所以要构建一个新的栈空间放下 payload ,因此称为栈迁移。
大概原理首先栈执行命令是从 esp 开始向 ebp 方向逐条执行,也就是从低地址到高地址逐条执行。触发栈迁移的关键指令:leave|ret,等效于mov esp ebp; pop ebp; ret;,作用是将 ebp 赋值给 esp ,并弹出 ebp 。
正常情况下退出栈时,esp 指向 ebp 所在位置,ebp 指向 ebp 所存储的位置。等同于执行一个 leave ret 的效果。
栈迁移:通过直接控制 ebp 的值,借助 leave 指令,间接控制 esp 的值。从上图可见,正常退出 esp 会指向原 ebp 位置。如果我们覆盖 eip 再次执行 leave 指令 ...
i春秋新春战疫WriteUp
Crypto1. easy_rsa下载附件,内容如下:
123456n = 275609599183856164194862730095945134600443164763378425854635531057018695316983663046376780086027990051816013108169353940030419304455098011965548977815299626163494421360399519117646209991169157419242457889883327661823056358047547980184897930668117410269020119808071578826393138929326536204913546303540604625948658746637739346706189305049258128332020471831664230432648159058534860532553103460304166874307242041774681767625125660551657981724186222687519687939976763 ...
栈迁移学习(旧)
介绍栈迁移可以解决栈溢出后,没有足够空间写入 payload 的情况。主要通过 伪造 ebp ,并利用 leave|ret gadget 劫持栈到预设位置。
leave | ret == mov ebp,esp;pop ebp;ret
HITCON-Training-master lab6题目介绍程序为32 位打开 NX 防护:
运行程序,提示输入,输入后退出程序:
main 函数 read 存在栈溢出,可溢出长度为 0x40 - 0x28 :
1234567891011int __cdecl main(int argc, const char **argv, const char **envp){ char buf; // [esp+0h] [ebp-28h] if ( count != 0x539 ) exit(1); ++count; setvbuf(_bss_start, 0, 2, 0); puts("Try your best :"); return read(0, &buf, 0x40u); //栈溢出 ...
RSA加密笔记
RSA加密笔记
最后更新:2020-03-02 11:23:12
1. RSA 介绍RSA 算法涉及参数有:n、e、d(p、q),其中分为私钥和公钥。公钥为:n、e,私钥为:phi、d。涉及数学基础有:欧拉函数(phi)、欧几里得算法(gcd)、同余。
参数介绍:
n : 两个素数 p 与 q 的乘积。注意:n 将公开,而 p 与 q 不公开。
e :一个素数。满足 1<e<phi ,且 gcd(phi,e)=1(与 phi 最大公约数为 1 ,即互素)。
phi : 欧拉数,计算公式:phi = (p-1)(q-1)。
d : e 模 phi 的逆元,具体关系式:d * e = 1 mod(phi)。
2. 加解密算法c = m^e mod n = pow(m,e,n)
m = c^d mod n = pow(c,d,n)
3. 基础加解密脚本加密脚本
1234567891011121314151617181920212223from Crypto.Util.number import *import gmpy2msg = 'flag is :testflag ...
CTF密码学中python库应用
CTF密码学中python库应用Crypto
取 100 bit 长的随机质数
12from Crypto.Util.number import getPrimegetPrime(100)
bytes 与 int 互换
123from Crypto.Util.number import bytes_to_long, long_to_bytesbytes_to_long(b'this4bytes')long_to_bytes(123456789)
最大公约数
12from Crypto.Util.number import GCDGCD(38,18)
是否为素数
12from Crypto.Util.number import isPrime()isPrime(17)
gmpy2
gmpy2 安装比较麻烦,需要几个额外的运行环境,正常情况下 Ubuntu 没有。详情谷歌百度。
初始化一个大整数
123from gmpy2 import mpzmpz(0x10)mpz(1234)
乘法逆元
12from gmpy2 import invertd = invert( ...
yafu安装及使用
yafu安装及使用yafu用于自动整数因式分解,在RSA中,当p、q的取值差异过大或过于相近的时候,使用yafu可以快速的把n值分解出p、q值,原理是使用Fermat方法与Pollard rho方法等。
如果 p 与 q 相差较大(小),使用 yafu 可以很快分解出来。如果 n 较大,且经过几轮分解都没有得出结果,对于 ctf 题目来说,应该有其他解法。
安装yafu 基本覆盖全平台。反正功能一样,选择最简便安装方法–Windows 下安装。
打开下载地址,下载后解压即可使用。解压后有两个版本,根据自己系统位数选择(下文使用 x64 版本)。
使用
使用 cmd 进入到 yafu 所在目录下,或将目录加入到系统环境 PATH 变量,或打开目录文件夹后 shift+右键 选择在此处打开 powershell 。
假如要分解因数 6 ,输入命令:.\yafu-x64.exe "factor(6)"。
如果因数过长,将 因数 用文本文件存放在 yafu 目录下,例如:data.txt 。文件最后一行一定要换行,否则eof; done processing batch ...
组建隧道中转流量(自建IPLC实现落地)
1. 前言突然之前,电报群热烈讨论“隧道中转流量”。非常好奇这是什么技术,本着不懂就问的真理,询问大佬。大佬回答是: 10 块包安装。emmm……生命不息,折腾不止!我自己研究去吧!Google、Baidu 一圈后,在知乎上找到较为贴切问题的帖子,出自大佬 @iCodex (帖子链接见文末)。
我也是刚刚了解 隧道 方面的知识,如有错误请大佬指出。
2. IPLC、MPLS、隧道我们目标建立的“隧道”概念,与 IPLC 有类似之处,所以先来了解一下。IPLC 粗暴点理解就是专线,直接用网线连接两边用户,不需要经过宽带运营商的机房。具体请看图:
那什么是 MPLS ?实际上我们无法通过软件手段实现物理层面上的两台服务器直接相连,不能完全达到 IPCL 的效果。所以将通过软件手段实现的“类 IPCL ”称为 MPLS。
至于 隧道 可以理解为一条通过软件构建的虚拟的网线,它直接连接两台服务器的。构建完成的架构图:
3. 进一步了解隧道就我目前了解,隧道的实现方案有两类:
使用 Zerotier、WireGuard 。将两台服务器组建在一个内网中,完成隧道部署后,两台机器就相当于在同一 ...