- 博客(8)
- 收藏
- 关注
原创 Seccomp
seccomp是内核中的一种安全机制,正常情况下(没有打开seccomp),程序是可以使用所有的syscall,这是不安全的。ptrctl 和 seccomp 的系统调用分别为157,317;然后要想进行orw,我们得知道open,read,write函数的地址,可以通过libc加上printf函数泄露的函数地址就可以得到libc_base。1.在SECCOMP_MODE_STRICT的模式下,进程只能使用read,write,_exit 和 sigreturn系统调用。seccomp可以通过系统调用。
2024-09-19 23:07:41
515
原创 idea.elf
gift函数里的scanf函数接收了6个字符的数据,剩下的字符还在缓冲区里,然后通过getchar可以接受一个字符(也可以是换行符,制表符和空格),剩下的字符则传输到第二个get_n函数里了。下一个atoi函数是将字符串转为整数的标准库函数,如果字符串的开头不是数字或字符,atoi函数将停止转换并返回已解析的整数,如果字符串是空的或者无法转换,将返回0。vuln函数首先printf一条语句,问我们想让程序读取几个字节的数据,然后调用了get_n函数,这个函数是程序员自己写的,我们进入此函数。
2024-09-16 14:57:16
309
原创 返回导向编程
ldd命令 :查看一个可执行文件用到的所有的动态链接库。软连接相当于一个快捷方式。linux下的symbolic link 就相当于windows的快捷方式动态连接库会不定时的更新,软连接指向动态链接库,无论动态链接库怎样更新,用软连接打开,都是此动态连接库。软连接的名字是不会变的。执行软连接或者直接执行动态链接库的效果是一样的。可以把动态链接库当成一个可执行文件直接执行。
2024-09-09 15:11:57
768
原创 Canary与PIE
刚刚在程序中看到的开了PIE保护的程序,所有代码段的地址都只有最后三个数是已知的,这里有一点要知道的是,程序的加载地址一般都是以内存页为单位的,所以程序的基地址最后三个数字一定是0,这也就是说那些地址已知的最后三个数就是实际地址的最后三个数。那我们就可以逐位爆破。修改got表中_stack_chk_fail函数的地址,在栈溢出后执行该函数,但由于该函数的地址被修改,所以程序会跳转到我们想要执行的地址。通过格式化字符串读取canary的值,在覆盖canary的时候将canary原有的值写入payload中。
2024-09-09 15:09:22
421
原创 NSSCTF [LitCTF 2023]口算题卡
先建立远程连接,其次接收内容,然后去掉多余的字符串,只需留下 86 + 93 ,再用eval 函数求出结果,最后发送字符串。2.开启第二个端口逐步编写脚本 vim exp.py。开启此题得到其地址与端口。
2024-07-18 10:51:27
340
原创 栈溢出基础
在形成一个新的栈帧的时候,会在previous的低地址出形成一个canary,里面是一个随机值,因此如果要进行栈溢出,就一定会遇到canary并覆盖它,销毁栈帧的时候会检测canary是否发生了变化,如果发生了变化,程序会直接崩溃退出,并弹出stack check file,即栈检查失败,程序强制退出。此段数据发了过来,但是由于\r的存在使得此数据无法显示出来。(2)io.send(p64(64位的数字)) ()里应为字节流 p64()将数据打包为64位宽度的字节流数据,p32()即为32位。
2024-07-18 09:17:02
882
原创 Pwn基础知识
32位架构中有4GB的物理内存,当执行文件时,会出现一个或多个4GB的虚拟内存,但是实际上程序所占有的空间通常很小,所以执行的程序的总空间不超过4GB的时候可以出现多个虚拟内存。是自己的(不同的)剩余的1GB是内核空间,是共享的。shellcode :调用攻击目标的shell的代码,shell是一个提供用户与操作系统交互的命令行接口,有zsh,sh,bash。Stack : 动态存储区,程序栈,用来管理函数调用的状态。64位架构中128TB是内核空间,128TB是用户空间,剩下的是未被定义的空间。
2024-07-18 08:56:58
761
原创 汇编语言简短笔记
DS和[address]实现字的传送 :段地址可以放入DS中,但应首先将段地址存入通用寄存器中再转入DS中,不可以直接向DS中存入段地址,在之后的指令中例如 mov ax [0],[0]指段地址为DS中内容,偏移地址为0的内存单元,并将其存入ax中;mov [0],ax 即是将ax 中的内容存入段地址为DS内容,偏移地址为0的内存单元中。地址加法器合成物理地址的方法:物理地址(20位)=段地址*16+偏移地址 (16进制的段地址相当于左移一位) 表示方法: 段地址:偏移地址。
2024-07-18 08:47:10
835
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人