相关疑难解决方法(0)

缓冲区溢出攻击格式

通常我们都看到基本的缓冲区溢出格式,它具有: - NOPs + shellcode + return_address

为什么我们不使用, NOPs + return_address + shellcode?我们将返回地址指向shellcode的开头?

我猜这是因为如果漏洞位于main()中,我们可能会尝试在堆栈段外写入数据.我对吗?如果我,那是唯一的原因吗?

哦,是的,我不是指使用return-to-libc,ptrace等的其他类型的攻击; 我只想知道为什么最基本的缓冲区溢出攻击以第一种方式展示而不是第二种方式.

c security x86 buffer-overflow shellcode

7
推荐指数
1
解决办法
1338
查看次数

虚拟地址到物理地址的映射

我怀疑每个进程是否有自己独立的页表,那么为什么需要系统范围的页表呢?此外,如果Page表是将虚拟地址映射到物理地址,那么我认为两个进程可能映射到相同的物理地址,因为所有进程都具有相同的虚拟地址空间.系统范围页面表上的任何良好链接也将解决我的问题?

c unix linux operating-system

2
推荐指数
1
解决办法
4658
查看次数

为什么这两个地址不一样?

shmget.c:

#include<sys/types.h>
#include<string.h>
#include<sys/ipc.h>
#include<sys/shm.h>
#include<stdio.h>
main()
{
    key_t key;
    int shmid;
    char* addr1;
    key = ftok("/home/tamil/myc/pws.c",'T');
    shmid = shmget(key,128*1024,IPC_CREAT|SHM_R|SHM_W);

    addr1 = shmat(shmid,0,0);

    printf("\nIPC SHARED MEMORY");
    printf("\n SENDER ADDRESS");
    printf("\nTHE ADDRESS IS %p",addr1);
    printf("\nENTER THE MESSAGE:");
    scanf("%s",addr1);
    printf("\nMESSAGE STORED IN %p IS %s",addr1,addr1);  
}
Run Code Online (Sandbox Code Playgroud)

shmget2.c:

#include<sys/types.h>
#include<string.h>
#include<sys/ipc.h>
#include<sys/shm.h>
#include<stdio.h>

main()
{
    int shmid;
    char* addr1;
    key_t key;


    key = ftok("/home/tamil/myc/pws.c",'T');
    shmid = shmget(key,128*1024,SHM_R|SHM_W);

    addr1 = shmat(shmid,0,0);


    printf("\nIPC SHARED MEMORY");
    printf("\n SENDER ADDRESS");
    printf("\nTHE ADDRESSS IS %p",addr1);
    printf("\nMESSAGE STORED IN …
Run Code Online (Sandbox Code Playgroud)

unix shared-memory

-1
推荐指数
1
解决办法
323
查看次数