- 博客(17)
- 收藏
- 关注
原创 Canary保护
Canary 与 Windows 下的 GS 保护都是缓解栈溢出攻击的有效手段,它的出现很大程度上增加了栈溢出攻击的难度,并且由于它几乎并不消耗系统资源,所以现在成了 Linux 下保护机制的标配。通常栈溢出的利用方式是通过溢出存在于栈上的局部变量,从而让多出来的数据覆盖 ebp、eip 等,从而达到劫持控制流的目的。栈溢出保护是一种缓冲区溢出攻击缓解手段,当函数存在缓冲区溢出攻击漏洞时,攻击者可以覆盖栈上的返回地址来让 shellcode 能够得到执行。
2024-03-31 09:38:50
1153
1
原创 格式化字符串漏洞
格式化字符串函数是根据格式化字符串来进行解析的。对于这样的例子,在进入 printf 函数的之前 (即还没有调用 printf),栈上的布局由高地址到低地址依次如下在进入 printf 之后,函数首先获取第一个参数,一个一个读取其字符会遇到两种情况如果没有字符,报错如果下一个字符是 %, 输出 %否则根据相应的字符,获取相应的参数,对其进行解析并输出那么假设,此时我们在编写程序时候,写成了下面的样子此时我们可以发现我们并没有提供参数,那么程序会如何运行呢?
2024-03-19 17:46:57
1762
原创 GDB调试器
GDB,GNU 项目调试器,允许您查看另一个程序在执行时“内部”发生了什么,或者另一个程序在崩溃时正在做什么。GDB 支持断点、单步执行、打印变量、观察变量、查看寄存器、查看堆栈等调试手段。说白了就是用来看你这个程序在运行时他里面的情况是什么。
2024-02-22 05:58:33
1055
1
原创 GDB调试器
GDB调试包括2个程序:gdb程序和被调试程序。根据这2个程序是否运行在同一台电脑中,可以把GDB的调试模型分为2种: 1. 本地调试 2. 远程调试本地调试:调试程序和被调试程序运行在同一台电脑中。远程调试:调试程序运行在一台电脑中,被调试程序运行在另一台电脑中。关于可视化调试程序并不是重点,它只是一个用来封装GDB的外壳而已。我们既可以用黑乎乎的终端窗口来手动输入调试命令;
2024-02-21 13:42:57
1232
1
原创 PWN-03
通过漏洞泄露puts函数的真实地址,并计算出ibc基址。然后,构造合适的ROP链来调用system函数,并传递"/bin/sh"字符串作为参数,从而获取shell权限。1.找到函数地址:首先,使用ELF模块获取目标二进制文件中函数的地址。在脚本中,通过e1f.p1t和e1f.got来获取puts函数的p1t和got表项的地址,以及encrypt和main函数的地址。2.构造漏洞触发payload:在脚本中,通过构造一系列的字节串来构造payload。
2024-02-20 15:40:35
1160
1
原创 PWN-题解
检查文件,64位,开启NX保护拖入IDA打开,查看主函数双击查看可以看到buf的长度只有0x80,即可用栈大小只有108字节,但是read()并没有限制输入,显然存在栈溢出漏洞。在Functions window可以看到有一个callsystem()函数,按F5反汇编可以看到这是一个系统调用,存在system(“/bin/sh”)即使用栈溢出令返回地址指向该函数地址即可。
2024-02-20 13:34:06
1050
1
原创 PWN-02
ret2syscall原理顾名思义,ret to syscall,就是调用系统函数以达到getshell的目的在计算中,系统调用是一种编程方式,计算机程序从该程序中向执行其的操作系统内核请求服务。这可能包括与硬件相关的服务(例如,访问硬盘驱动器),创建和执行新进程以及与诸如进程调度之类的集成内核服务进行通信。系统调用提供了进程与操作系统之间的基本接口。至于系统调用在其中充当什么角色,稍后再看,现在我们要做的是:让程序调用execve(“/bin/sh”,NULL,NULL)函数即可拿到shell相
2024-02-03 15:35:17
901
1
原创 PWN-01
指的是程序向栈中某个变量中写入的字节数超过了这个变量本身所申请的字节数,因而导致与其相邻的栈中的变量的值被改变。这种问题是一种特定的缓冲区溢出漏洞,类似的还有堆溢出,bss 段溢出等溢出方式。栈溢出漏洞轻则可以使程序崩溃,重则可以使攻击者控制程序执行流程。此外,我们也不难发现,发生栈溢出的基本前提是。
2024-01-31 12:42:35
931
原创 第八周学习内容
函数调用栈本质上就是一个栈数据结构。在计算机中,函数的调用和返回过程使用栈来保存和管理相关信息。当一个函数被调用时,会将函数的返回地址、参数和其他必要的上下文信息压入栈中,形成一个新的栈帧。这个栈帧包含了函数执行所需的所有信息,包括局部变量、临时变量等。在函数执行过程中,如果函数内部调用了其他函数,会将新的栈帧推入栈中,形成一个函数调用链。每个栈帧都按照后进先出(LIFO)的原则进行管理,即最后一个进入栈的栈帧首先被处理。
2023-12-24 18:19:19
2094
1
原创 第七周学习内容
如果首位是0就表示正整数,如果首位是1则表示负整数,正整数可以直接换算,负整数则需要先取反再换算。如果11101011想转为*负的十进制,因为最高位是1,所以先减一取反 00010101,然后计算出00010101对应的十进制为21,所以11101011最终对应的十进制为 -21。1.首先用2整除一个十进制整数,得到一个商和余数2.然后再用2去除得到的商,又会得到一个商和余数3.重复操作,一直到商为小于1时为止4.然后将得到的所有余数全部排列起来,再将它反过来(逆序排列),切记一定要反过来!
2023-12-16 22:09:16
1046
原创 第六周学习内容
注:VMnet1网口对应的是仅主机模式VMnet8网口对应的是NAT模式VMnet0网口对应的是桥接模式查看以上对应是在VMware workstation中的编辑-虚拟网络编辑器。
2023-12-08 21:15:26
803
原创 第五周学习内容
RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,被广泛应用于数据加密、数字签名和密钥交换等领域。RSA 算法基于数论中的大数分解问题,其安全性基于大整数分解的困难性。
2023-11-23 21:52:44
1900
1
原创 第四周实验任务(upload-labs)
upload-labs是一个使用php语言编写的,专门收集渗透测试过程中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共21关,每一关都包含着不同上传方式。推荐使用php2016版。
2023-11-20 21:16:10
212
1
原创 第三周学习任务
1.下载安装phpstudy2.到Github中下载源码的压缩包3.将下载好的压缩包解压到PHPstudy目录下的www的子目录中,并重命名为upload-labs4.打开php,在网页中输入127.0.0.1/upload-labs即搭建成功。
2023-11-08 12:46:11
108
1
原创 实验第一周
get请求是一个幂等的请求,一般get请求应用于对服务器资源不会产生影响的场景,比如请求一个网页的资源。get:浏览器由于对url长度的限制,所以会影响get请求发送数据时的长度。post不是一个幂等的请求,一般用于对服务器资源会产生影响的场景,比如注册用户这一类操作。因为两者应用场景不同,浏览器一般会对get请求缓存,但很少对post请求缓存。get 数据在 URL 中对所有人都是可见的。
2023-10-25 23:03:25
128
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅