- 博客(8)
- 收藏
- 关注
原创 ret2syscall
原理ret2syscall,即控制程序执行系统调用,获取 shell。步骤checksec检查是否有保护可以看出,源程序为 32 位,开启了 NX 保护。接下来利用 IDA 来查看源码int __cdecl main(int argc, const char **argv, const char **envp){ int v4; // [sp+1Ch] [bp-64h]@1 ...
2019-07-04 09:14:21
1378
原创 RSA
1、首先进行交互,看看会发生什么,交互界面输出一些东西(做题的时候忘记了截图!不过没有关系,请接着往下看)2、对出题人发布的题目源码进行代码审计,发现交互界面给出的是c1,e,n1,c2,e,n2 p=getPrime(1024) q=getPrime(1024) e=65537 n1=p*q m=bytes_to_long(flag) c1=po...
2019-07-04 09:13:37
416
原创 维吉尼亚密码加解密与破解
实验目的1、进一步理解维吉尼亚密码的加解密原理2、进一步理解维吉尼亚密码的缺陷和利用方法3、提高编程实践能力实验要求1、实现维吉尼亚加解密函数2、破解维吉尼亚加密的密文实验步骤1、维吉尼亚加密实现维吉尼亚密码是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式。也就是说,维吉尼亚密码则是由一些偏移量不同的恺撒密码组成。代码实现:def encrypt (m...
2019-07-04 09:12:50
7901
原创 cbc位反转攻击
1、首先进行交互,看看会发生什么,随便输入点东西,会发现接收到一堆东西,猜测应该是密文。2、对出题人发布的部分题目源码进行代码审计,发现如下问题(1)根据输入的的字符串不同,会有三条路走,之前随便输入的字符串,走的是第三条路。还有两条路是:如果输入字符串以“getapikey:”开头,则会对字符串进行加密;如果输入字符串以“getflag:”开头,则会对字符串进行解密,而且如果(pars...
2019-07-04 09:11:55
829
原创 实验5-通用gadget之lab4
实验原理与目的上一篇以及介绍了实验原理,就是程序在编译时会加入一些通用函数来进行初始化操作,我们可以针对初始化函数来提取一些通用的gadget,通过泄露某个在libc中的内容在内存中的实际地址,通过计算偏移量来得到system和bin/sh的地址,然后利用返回指令ret连接代码,最终getshell。然而本次实验比较巧妙的地方就是利用了leave指令。leave|retleave指令其实是两...
2019-04-16 14:42:45
264
原创 64位ROP——通用gadget
原理与目的程序在编译的时候会加入一些通用函数来进行初始化操作,所以可以针对初始化函数来提取一些通用的gadget,通过泄露某个在libc中的内容在内存中的实际地址,通过计算偏移量来得到system和bin/sh的地址,然后利用返回指令ret连接代码,最终getshell。实验步骤chechsec命令检查是否有canary保护图中显示并没有,如果有的话,就先进行泄露。IDA反汇编int...
2019-04-09 20:46:35
2838
原创 实验三--rop
实验原理与目的在上次实验的基础上稍微加大点难度,倘若不能直接找到system和bin/sh,之前向内存中中直接写入shellcode的方式就行不通了,那么就需要一些其他手段来获得,所以就需要绕过保护。ROP(Return-Oriented Programming, 返回导向编程)就是一种绕过技术,本实验就是通过泄露某个在libc中的内容在内存中的实际地址,通过计算偏移量来得到system和bin...
2019-03-20 19:49:20
616
原创 pwn入门实验--实验二
pwn入门实验–实验二有个大佬在前领着前行,感谢星耀胡!实验的原理和目的利用栈溢出,修改程序ret值,使其返回到我们想让它执行的位置,从而获取flag,这也算是ctf入门级的题目。实验步骤·利用IDA看一下汇编语言·作为小白来讲,可能一开始看到这个并没有太多的感觉,我们来看一下源代码。·来看一下运行效果。·根据实验的原理,如果我们输入的字符串足够长,则会发生栈溢出,我们只要计算...
2019-03-12 21:07:40
413
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人