![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机安全导论
文章平均质量分 79
醉悒
这个作者很懒,什么都没留下…
展开
-
格式化字符串漏洞
格式化字符串漏洞可变参数函数有些函数的参数是变化的,是不确定个数的,比如格式化字符函数中的printf,后面可以有n个参数如何使用这些可变参数printf的实现中采用了stdarg.h头文件中的宏定义。初始化va_list指针,它用来指向可变参数,初始化为第一个参数位置。在printf中,根据匹配的格式字符来决定自己的移动字节数,如%d就动4字节,%d就8字节,这样来找到下一个参数的位置隐藏的危险当匹配的格式字符串,交由用户输入,或者有部分用户输入,那格式字符多于实际传入参数的数目后,就原创 2021-02-02 20:25:23 · 372 阅读 · 0 评论 -
# Return to libc
Return to libc在典型的栈溢出攻击中,需要把shellcode放在栈内,这样遇到不可执行栈防护的时候就无法成功。这起源于我们对恶意代码有着自己的想法,想要自己编写一个恶意代码,然后将返回函数地址修改,但是能拿到rootshell,其实应该就大差不错的够了,而这样的功能的实现在动态链接库里有,如system函数这种老生常谈的不安全函数。如果我们能把返回地址修改为system函数所在地址,并且设法把参数成功传递,那我们就不需要自我编写恶意代码且担心栈的不可执行这是对不可执行栈的绕过,当然我们也原创 2021-02-01 20:10:50 · 307 阅读 · 0 评论 -
栈溢出
缓冲区溢出攻击程序的内存布局对于一个典型的C语言程序,内存由5个段组成,分别是代码段,数据段,堆,栈,bss段代码段:放可执行代码,通常只读数据段:已经初始化全局变量,静态变量BSS段:未初始化的全局变量和静态变量堆:用于动态内存分配栈:用于存放与函数调用相关的数据栈与函数调用栈的内存布局[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qwAsV2hd-1612085707431)(%E7%BC%93%E5%86%B2%E5%8C%BA%E6%BA%A2原创 2021-01-31 17:37:20 · 275 阅读 · 1 评论 -
环境变量相关的shellshock攻击
环境变量什么是环境变量环境变量是存储在进程中的一系列动态键值对,它们可以影响进程的行为。可以通过局部变量envp获取,只能在main函数中使用也可以用environ全局变量获取也可以调用getenv(var_name)来获取这个函数是在environ数组中搜索也可以使用putenv(),setenv()和unsetenv()来改变修改和删除环境变量进程获取环境变量的方式使用fork()子进程继承父进程的所有环境变量使用execve()第一个参数是新程序的路径第二个参数是数组传入新程序的原创 2021-01-12 16:55:36 · 575 阅读 · 0 评论 -
Set-Uid特权程序
特权程序存在的必要性很多特殊的敏感操作需要特权,但是操作系统往往不能提供足够的颗粒度,大部分时候操作系统只能达到文件层次的颗粒度而不能精准到文件中某段记录的修改权限。所以特权程序就因此诞生特权程序的类型守护进程和set-UID程序守护进程是以特权用户的身份如root运行的进程,当用户需要做一些特殊操作的时候可以请求他的帮助,在Windows中叫做服务而不是守护进程set-uid 他通过一个比特位的标记告诉操作系统自己是特权程序set-Uid机制在Unix操作系统中,一个进程有三个用户ID:真原创 2021-01-12 14:30:56 · 1132 阅读 · 0 评论