杂谈
misc入门——图片分析
本篇文章以CTFshow为基础,系统研究一下CTF的misc中有关图片分析的题目。
本人有一定的misc基础,不过都是看啥不会学啥,自认为缺少系统的学习,趁着提前放假,速速静下心来慢慢研究,不求多,坚持就行。
CTFshow官方网站
图片基础misc1题目图片:
好吧,flag就摆在眼前……为了节省时间,电脑QQ截图之后对图片可以转文字,避免了对着打字会打错的情况。
misc2题目给了一个txt文件,打开一看全是乱码……
12345678910111213141516171819202122232425262728293031323334353637塒NG IHDR ? ? 喐F6 sRGB ? gAMA 睆黙 pHYs t t辠x 鮅DATx^磔;r?防qEr0?碬 ;檋疑ばN渳?'R(e?rbi?\尨椌d?阅?$?W藕烕┵ ?$泋砿 @u? ?! €J? @ 燫$? P)B ? ! T妱 *EB ?! €J? ...
CTF
CTFshow做题记录(下)
RSA进阶funnyrsa1题目:
123456789e1 = 14606334023791426p1 = 121009772735460235364940622989433807619211926015494087453674747614331295040063679722422298286549493698150690694965106103822315378461970129912436074962111424616439032849788953648286506433464358834178903821069564798378666159882090757625817745990230736982709059859613843100974349380542982235135982530318438330859q1 = 130968576816900149996914427770826228884925960001279609559095138835900329492765336419489982304805369724685145941218640504262821549441 ...
Crypto
RSA学习笔记(四)
本篇对一些较为复杂的攻击进行研究
$e$、$phi$不互素攻击题1:
之前已经了解过了模不互素,这里再引入一种不互素的情况:e和phi不互素。
e和phi不互素是指它俩的公约数不为1,下面是一道有关e和phi不互素的题:
1234567891011121314151617181920212223242526import gmpy2import libnumimport randomimport uuidflag="flag{"+str(uuid.uuid4())+"}"m=libnum.s2n(flag)while 1: e = random.randint(100,1000) p=libnum.generate_prime(1024) q=libnum.generate_prime(1024) phi_n=(p-1)*(q-1) t=gmpy2.gcd(e,phi_n) if gmpy2.invert(e // t, phi_n) and t !=1: breakn=p*q ...
杂谈
pwn基础和栈溢出
栈(Stack)栈是数据暂时存储的地方,操作主要有压栈 (push) 与出栈 (pop) 两种操作,属于先进后出的数据结构,压栈和出栈都操作栈顶。
栈帧一个栈帧就是保存一个函数的状态,即一个函数所需要的栈空间。
rsp和esp指向栈帧的栈顶。
rbp和ebp指向栈帧栈底。
rip和eip指向当前栈帧执行的命令。
栈从高地址向低地址开辟内存空间,所以低地址的是栈顶,而栈底的第一个栈帧在这里存放着我们的主函数的父函数,所以main函数并不是最栈顶的函数,main上面还会在编译过程中有一些库函数,但是他们并不会产生栈帧,因为栈先进后出的特性,所以当在main函数中需要调用其他函数时,就开辟一个新的函数栈帧,并存储上一个栈的栈底,当调用结束时,将现在的栈帧弹出,恢复到原来的main函数继续执行完main函数。
新栈帧的生成下面是创建新栈帧的图解步骤(caller为调用函数,callee为被调用函数):
1.被调用函数的参数(argn)依次逆序压入栈内,如果没有参数那么不需要压入,之后压入栈内的数据都会作为被调用函数来保存。
2.将调用函数之后的下一条指令地址作为压入栈内,作为返回地 ...
CTF
CTFshow做题记录(上)
本篇是对前面学习过的内容以及攻击方式的实战训练,以及额外知识补充(平台为ctfshow)
一些很易的题为了节省篇幅尽量一笔带过了
基础题部分推荐阅读:各种奇奇怪怪的“密码” | Chemtrails Home (ch3mtr4ils.cn)
Crypto0题目:gmbh{ifmmp_dug}
一眼罗马密码,也没有大写字母,那就写个简单的爆破脚本:
123456789101112131415book='abcdefghijklmnopqrstuvwxyz'text='gmbh{ifmmp_dug}'for key in range(1,26): flag='' for i in text: if i in book: f=chr(ord(i)+key) if ord(f)>122: f=chr(ord(f)-26) flag+=f else: flag+=i if flag[:4]=='flag': pri ...
Crypto
RSA学习笔记(三)
中国剩余定理(CRT)我们设正整数$m_1,m_2,…,m_k$两两互素,得到同余方程组:
x\equiv a_1\ (\bmod m_1)
\ \ \ \ \ \ \ x\equiv a_2\ (\bmod m_2)\ \ ...
x\equiv a_k\ (\bmod m_k)有整数解,在模$M=m_1m_2…m_k$下的解唯一,解为:
x\equiv (a_1M_1{M_1}^{-1}+a_2M_2{M_2}^{-1}+...+a_kM_k{M_k}^{-1})\bmod M$Mi=\frac{M}{m_i},M_i^{-1}$是$M_i$模$m_i$的逆元。
$∏$是求积运算符号,类似于$Σ$,求多个数的积。
历史背景“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?”
韩信点兵,士兵站成三人一列,多出来两人;站成五人一列,多出来三人;站成七人一列,多两人。问共有多少人;
满足第一条:2,5,8,11,14,17,20,23,26,29….
满足第二条:8,13,18,23,28……
满足第三条:9,16,23,30……
23同时满足,但是如 ...
web
web基础学习(一)
web网页构成
结构
对于网页元素进行整理和分类,主要为HTML
标准
说明
表现
设计网页元素版式、颜色、大小等外观样式,主要指CSS
行为
网页模型的定义和交互,主要为JavaScript
结构在html文件中,表现在css文件中,行为在JavaScript文件中。
HTML语法
HTML 可以来建立自己的 WEB 站点,HTML 运行在浏览器上,由浏览器来解析,在浏览器的页面上使用键盘上的 F12 按键开启调试模式,就可以看到组成标签。
基本骨架
在vscode里html文件先输入感叹号能自动生成默认骨架:
123456789101112<!DOCTYPE html><!--文档类型声明--><html lang="en"><!--显示语言("zh-CN"中文)--><head> <meta charset="UTF-8"><!--字符存储方式--> <meta http-equiv=&quo ...
Crypto
RSA学习笔记(二)
本篇介绍RSA的常见攻击方式和题型
更新记录
2022-11-14
更新了几种常见的攻击方式
2022-11-20
整理了CopperSmith相关攻击
2022-12-28
把文章的所有数学公式改成mathjax格式,学习Rabin加密
低加密指数攻击RSA中,如果e选取较小可以缩短加密时间($e=2,e=3$),但是选取不当会造成安全问题。
e=2密文开平方如果$e=2$时,即为对$m$进行平方,由于$c=pow(m,e,n)$,极有可能$m^e$后的数据甚至没有$n$大导致取余商为0,余数$c=m^e$,所以我们可以直接对c进行开平方求m。
python自带的开根号函数无法对特别大的数开方,我们可以使用gmpy2来对大整数开根号。
如果e=2
c=9217979941366220275377875095861710925207028551771520610387238734819759256223080175603032167658086669886661302962985046348865181740591251321966682848536331583243529
求m ...
Crypto
RSA学习笔记(一)
本篇介绍RSA的基本原理
小知识RSA加密算法是一种非对称加密算法。
对称加密指的就是加密和解密使用同一个秘钥,所以叫对称加密。 对称加密只有一个秘钥,作为私钥。加密:原文+密钥 = 密文解密:密文-密钥 = 原文
非对称加密指的是加密和解密使用不同的秘钥,一把作为公开的公钥,另一把作为私钥。 公钥加密的信息,只有私钥才能解密,私钥加密的信息,只有公钥才能解密。
RSA基本原理公钥与私钥现寻找两个不同的大质数$p,q$。
计算乘积$n$并计算$n$的欧拉函数:
n=pq
phi=\phi(n)=(p-1)(q-1)寻找一个公钥$e,1<e<phi$,而且$e$和$phi$互质,即为$gcd(e,phi)=1$
两个正整数,除了$1$以外,没有其他公因子,我们就称这两个数是互质关系。
任何两个质数构成互质。
如何寻找私钥?
ed \equiv 1(\bmod \phi(n))这时我们可以得到私钥$d$,这个$d$被称为$e$在模$phi$上的逆元。
在python中,求解d通常使用gmpy2库的公式: d=gmpy2.invert(e,phi)
这样,我们 ...
Crypto
奇奇怪怪的密码
本文偏向于科普丰富知识面,带有一定的misc成分,比较基础
更新记录
2022-11-05
将之前学过的一些密码和编码进行整理
2022-12-25
又经过了一段时间学习,准备再进行一次整合更新
2023-01-09
学习了CTFwiki上几种没见过的密码,整理一下
2024-03-30
打了AliyunCTF2024,被 字 这个题给搞了,所以准备整理一下中文相关的编码问题。
编码类(常见的ASCII码之类的就不介绍了)
base编码Base编码系列有 Base64 Base32 Base16等等。我们可以根据其中出现的一些特征来区分不同的base编码:
①所谓的Base16其实就是16进制,我们可以借助print(int(s16,16))将base16转换为10进制以进行其他运算:0-9 A-F
②Base32的特征比较明显:A-Z 2-7 =
比如 cryptoisinteresting 的Base32编码就是MNZHS4DUN5UXG2LOORSXEZLTORUW4ZY=
③Base64算是最为常见,开始出现斜线和加号,同时包括所有大小写字母和数字组合:A-Z a- ...