RSA各种算法
RSA基础RSA原理1.n = p * q n是模数 p和q都是素数,通过欧拉函数得到与n互素的个数φ(n)
2.欧拉数φ(n)=(p-1)*(q-1)
3.选择一个e,e的取值在(1,φ(n)),且e与φ(n)需要互素,不然无逆元得不到d,通常e取65537
4.求出e与φ(n)的模逆数d, e * d ≡ 1 mod φ(n)
加密解密对明文进行加密,c = m^e mod n, 即 c= pow(m,e,n)
对密文进行解密,m = c^d mod n,即m = pow(c,d,n)
其中公钥为(e,n),私钥为(d,n)
解密脚本12345678910111213import gmpy2import randomp=getPrime(1024) #题目上所给的p和qq=getPrime(1024)c=''e=65537n=p*qphi=(p-1)*(q-1)d=int(gmpy2.invert(e,phi))m=pow(c,d,n)from Crypto.Util.number import *print(long_to_bytes(m))
...
ROPgadget 安装 错误处理 与使用
ROPgadget 安装 错误处理 与使用0x0 开始做题需要用到ROPgadget,去安装下载,然后麻烦越来越多,将成功过程记录下来。它就是用来查找你的二进制文件中你想要的一些指令,方便你加以利用。有了ROPgadget 你会发现one_gadget也是必须的。
one_gadget的安装与使用
0x0.1介 绍使用此工具,您可以在二进制文件中搜索Gadgets,以方便您对ROP的利用。
随着 NX 保护的开启,以往直接向栈或者堆上直接注入代码的方式难以继续发挥效果。攻击者们也提出来相应的方法来绕过保护,目前主要的是 ROP(Return Oriented Programming),其主要思想是在栈缓冲区溢出的基础上,利用程序中已有的小片段 (gadgets) 来改变某些寄存器或者变量的值,从而控制程序的执行流程。所谓 gadgets 就是以 ret 结尾的指令序列,通过这些指令序列,我们可以修改某些地址的内容,方便控制程序的执行流程。
我们知道x86都是靠栈来传递参数的而x64换了它顺序是rdi, rsi, rdx, rcx, r8, r9,(这里6个寄存器可以被理解为Gadget ...
RHG赛制
RHG赛制做题技巧静态编译的题目的ropchain
1ROPgadget --binary r2 --ropchain
工具和资源汇总2022网鼎赛制介绍
https://g.ichunqiu.com/wdsignup/static/resources/pdfs/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E6%BC%8F%E6%B4%9E%E6%8C%96%E6%8E%98%E8%B5%9B%EF%BC%88RHG%EF%BC%89%E8%B5%9B%E5%88%B6%E7%BB%86%E5%88%99.pdf?v=20230301
libc符号表
https://github.com/push0ebp/sig-database
i春秋的智能自动挖洞机器人
https://github.com/thinkycx/rhg2018-robot
BCTF的Autopwn
https://github.com/0xaww/RHG-AutoPwn-Robot
网鼎杯题解
https://cn-sec.com/archives/1676819.html
符号信息 ...
RFID第一期——各种IC卡ID卡详解
RFID第一期——各种IC卡ID卡详解RFID师傅博客地址:https://lmark.cc/
前置知识先给大家捋清楚几个不同的名词:ID卡,IC卡,RFID卡,CPU卡,m1卡,MF1卡,UID卡,CUID卡等。
看到这对名词想必大家头都大了,但是,今天我就带大家搞清楚这每一个名词的意思,以及目前市面上比较常见的卡的类型的介绍。
RFID卡和IC卡首先,大家需要知道的一个名词是:RFID
这是什么意思?我摘抄了Wiki上的介绍,帮助大家理解:射频识别 - 维基百科,自由的百科全书 (wikipedia.org)
射频识别(英语:Radio-frequency identification,缩写:RFID)是一种无线通信技术,可以通过无线电信号识别特定目标并读写相关数据,而无需识别系统与特定目标之间建立机械或者光学接触。
无线电的信号是通过调成无线电频率的电磁场,把数据从附着在物品上的标签上传送出去,以自动辨识与追踪该物品。某些标签在识别时从识别器发出的电磁场中就可以得到能量,并不需要电池;也有标签本身拥有电源,并可以主动发出无线电波(调成无线电频率的电磁场)。标签包含了电子储存的信 ...
RE—攻防世界—流浪者
RE—攻防世界—流浪者看文件图标就知道这和MFC有关,没有加壳和反调试混淆。
MFC微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是微软公司提供的一个类库(class libraries),以C++类的形式封装了[Windows API](https://baike.baidu.com/item/Windows API/6088382),并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。
其实MFC就是一个对C++语言的封装,用来减小开发人员工作量。
分析那到手是一个exe文件,试运行一下,就是一个输入密码的题,MFC编写的程序比单纯的控制台程序更难分析。
由于不知道exe的入口函数是什么,我们可以去找到判断密码正确与否的函数,最简单的办法便是字符串的交叉引用。Shift+F12可以查看程序的字符串。
其中pass!在我们输入的时候没有出现。
交叉引用后反编译查看源代码
发现是程序通过会出现的界面。
于是跳转到call了该函数的函数那里 ...
ret2dlsolve漏洞的复现
ret2dlsolve漏洞的复现前言为了学到更多的关于ROP利用的知识开始复现这个漏洞,也为了能够更加深刻的了解程序动态链接的过程,学习更加底层的知识。
原理在Linux中,程序使用_dl_runtime_resolve(link_map_obj,reloc_offset)来对动态链接的函数进行重定位。那么如果我们可以控制相应的参数及其对应地址的内容是不是就可以控制解析函数了呢?答案是肯定的。这也就是ret2dlresolve攻击的核心所在。
具体的,动态链接器在解析符号地址时所使用的重定位表项,动态符号表,动态字符串表都是从目标文件中的动态节.dynamic索引得到的。如果我们能够修改其中的某些内容使得动态链接器解析的符号是我们想要解析的符号,那么攻击就达成了。
思路一 – 直接控制重定位表项的相关内容由于动态链接器最后在解析符号的地址时,是依据符号的名字进行解析的。因此,一个很自然的想法是直接修改动态字符串表.dynstr,比如把某个函数在字符串表中对应的字符串修改为目标函数对应的字符串表。但是动态字符串表和代码映射在一起,是只读的,此外,类似地,我们可以发现动态符号表,重定位表项 ...
ret2csu原理与利用
ret2csu原理与利用原理
在 64 位程序中,函数的前 6 个参数是通过寄存器传递的,但是大多数时候,我们很难找到每一个寄存器对应的 gadgets。 这时候,我们可以利用 x64 下的 __libc_csu_init 中的 gadgets。这个函数是用来对 libc 进行初始化操作的,而一般的程序都会调用 libc 函数,所以这个函数一定会存在。我们先来看一下这个函数 (当然,不同版本的这个函数有一定的区别)
123456789101112131415161718192021222324252627282930313233343536373839404142.text:00000000004005C0 ; void _libc_csu_init(void).text:00000000004005C0 public __libc_csu_init.text:00000000004005C0 __libc_csu_init proc near ; DATA XREF: _start+16o.text:0000000000 ...
RELRO保护原理
RELRO保护原理简介由于 GOT和PLT以及延迟绑定的原因,在启用延迟绑定时,符号解析只发生在第一次使用的时候,该过程是通过PLT表进行的,解析完成后,相应的GOT条目会被修改为正确的函数地址。因此,在延迟绑定的情况下。.got.plt必须可写,这就给了攻击者篡改地址劫持程序的执行的可能。
RELRO(ReLocation Read-Only)机制的提出就是为了解决延迟绑定的安全问题,它最初于2004年由Redhat的工程师Jakub jelnek实现,他将符号重定位表设置为只读,或者在程序启动时就解析并绑定所有的动态符号,从而避免GOT上的地址被篡改。RELRO有两种形式:
partial PELRO:一些段(包括.dynamic,.got等)在初始化后会被标记为只读。在unbuntu16.04(GCC-5.4.0)上,默认开启Partial RELRO。
**Full RELRO **:除了Partial RELRO,延迟绑定将被禁止,所有的导入符号将在开始时被解析,.got.plt段会被完全初始化为目标函数的最终地址,并被mprotect标记为只读,但其实.got.plt会被 ...
Reaver跑pin码+Mdk3无线攻击笔记
Reaver跑pin码+Mdk3无线攻击笔记Reaver跑pin码破解wifiPIN码共分为8位,按 4 3 1分段,总共穷举有11000种组合。通过获取到PIN码,并记住Bssid和PIN,后期可以通过一条命令爆出无线密码。
容易碰到的问题:连接超时,卡住,路由自保护等
首先启动网卡
嗅探模式
查看MB有没有能破解的WiFi
MB是54e.的可破解,54e不可破解。这个我这没有显示,但我还是尝试跑了一下,依旧是自家的701;
开始破解跑PIN1reaver -i wlan0mon -b DC:72:9B:9B:65:F4 -vv
最终可以得到wifi的PIN码和密码,把他们记下来。如果wifi主人过段时间更改密码(一般来说不会改PIN码),这时只需加上-p命令,WiFi密码即可破出;
1reaver -i wlan0mon -b MAC地址 -p PIN码
此方法受信号强度和WPS保护机制等影响,破解需要很长时间,容易连接超时。
Mdk3无线攻击1、伪造AP攻击无线黑客通过创建大量虚假AP基站信号来干扰正常无线通信。可以使用mdk3这款工具实战,通过无线网卡发射伪造的AP ...