shellcode相关内容

将 16 位添加到 64 位寄存器

这是我想要做的: 添加 rsi,单词 [rsi+16] 我想读取位于 rsi+16 地址的无符号短值.我想将此值添加到 rsi. 这是我在 nasm 中得到的错误: s2.asm:62: 错误:操作数大小不匹配 这很奇怪.为什么 nasm 和我的 cpu 无法将 16 位添加到 64 位寄存器? 这是我所做的工作: mov rbx,0mov bx, 字 [rsi+16]添 ..
发布时间:2021-06-07 18:41:54 其他开发

指向没有 .data 部分的独立二进制代码中的字符串的指针

我正在尝试编写某种漏洞利用程序,但在使我的 asm 代码在堆栈上的任何位置运行时遇到了问题.就是这样: BITS 64全局_start_开始:mov rax, 59jmp 短文件c1:流行音乐jmp 短 argvC2:流行音乐移动 rdx, 0系统调用回复文件:呼叫 c1数据库 '/bin/sh',0argv:呼叫 c2dq arg, 0 由于选择了行,此代码在堆栈上的任何地方都不起作用,因 ..
发布时间:2021-06-07 18:41:27 其他开发

nasm 64 位推送 qword?

我似乎有一个有趣的问题,尽管我可能做错了什么. 我的问题是我试图将 AAAABBBBCCCC 推入堆栈,然后通过标准输出打印它们.然而,在我的 x86_64 环境中,push 0x41414141 似乎推送了 4141414100000000. 所以下面的代码块: 全局 _start节.text_开始:推送 0x43434343 ;中交所推送 0x42424242 ;BBBB推送 ..
发布时间:2021-06-07 18:41:24 其他开发

为什么系统调用不起作用?

我在MAC OSX上,并且尝试通过程序集调用execve syscall.他的操作码是59.在linux中,我必须将操作码设置为eax,然后将参数设置为其他寄存器,但是在这里,我必须将操作码放入eax,并从右向左将参数压入堆栈. 所以我需要execve("/bin/sh",NULL,NULL),我发现某个地方的程序集为null = 0,所以我将null放入了第二个和第三个参数中. 全局开始 ..
发布时间:2021-05-31 18:51:59 其他开发

写入db [assembly]分配的字符串时出现段错误

我正在遵循一个基本的生成shell漏洞利用示例.以下正是我的书告诉我写的内容,但我仍然遇到段错误. 在gdb中运行此命令时,在"mov byte [esi + 7] al"处出现段错误.此行是必需的,以便我可以在字符串"/bin/sh"的末尾放置一个空字节.当我将其翻转到"mov byte al,[esi + 7]"时,这不会引起段错误.我假设我没有存储我的字符串存储在内存中的位置的写权限. ..
发布时间:2021-05-29 22:17:37 服务器开发

Shellcode执行不正确

我正在尝试解决 Protostar stack5 .这是一个解决方案.它将 shellcode 放在返回地址之后,我尝试将其放在之前数组.我已经试过了shellcode,它可以正常工作. 似乎一切正常,执行跳转到shellcode,但是在shellcode结束后出现段错误,并且没有生成任何shell.我不知道为什么,在 gdb 中,并不是所有的shellcode指令都能正确显示.例如,在 0 ..
发布时间:2021-04-16 19:27:37 其他开发

写缓冲区溢出漏洞-如何找出shellcode的地址?

在编写缓冲区溢出漏洞利用程序时,我了解到我需要输入一个长度为数组的地址(address_of_return_address-address_of_buffer).并且该数组需要用shellcode的地址填充.这样,当我的输入数组溢出时,它将用shellcode的地址覆盖保存的返回地址. 我认为由于shellcode将存储在堆栈上保存的返回地址上方,因此其地址应为address_of_retu ..
发布时间:2021-04-16 19:27:33 其他开发

我可以执行驻留在数据段(ELF二进制)中的代码吗?

在理解二进制文件(虚拟内存布局,执行...等)的方式中,我编写了 C 代码,该代码声明了一个包含字符串的全局字符串。可执行代码,然后我使用一个简单的技巧通过声明一个指针( PTR main()函数的返回地址到该可执行代码/ code>)在$code> main()中,这是在堆栈上保留的本地内存区域2个字,距 main(),所以我要做的就是将返回地址的地址分配给该指针(PTR =(int *)& P ..
发布时间:2020-10-28 21:28:39 其他开发

如何将\x00作为参数传递给程序?

我有一个小程序,希望将shellcode作为参数传递。在shellcode中,必须传递\x00。我尝试了以下命令: ./ program`python -c'print“ \x01\x00\x00\ \x00\x9c\xd8\xff\xbf“'` 但是the x00根本没有注册!传递给程序的参数是“ \x01\x9c\xff\xbf”。 我不认为这是python的 ..
发布时间:2020-10-06 01:29:57 其他开发

使用shellcode的缓冲区溢出练习

我正在做一个关于C程序中缓冲区重载的练习,这个问题的目的是在我将 shellcode 插入到程序。这是我到目前为止所拥有的: 步骤1:首先,让我们在名为file.c的文件中查看我的C代码: root @ kali:〜#cat ./file.c #include #include void premio() { printf ..
发布时间:2020-09-24 02:21:42 其他开发

为什么我得到“无法找到当前函数的界限”?当我覆盖易受攻击程序的ret地址时?

我想出于教育目的而利用基于堆栈的缓冲区溢出。 有一个典型的函数,调用时带有main参数,该函数作为编程保存参数的本地缓冲区。给定这样的输入,即 nops + shellcode + address_shellcode ,我将利用它。 用gdb调试后,我发现了shell代码的地址,因为它将作为参数传递,并且在 strcpy 我检查了堆栈,返回地址 $ ebp + 8 已成功被shell代 ..
发布时间:2020-09-24 02:18:02 其他开发

为什么我的数据段在已编译的二进制文件中出现两次? Ubuntu,x86,nasm,gdb,reaelf

先前的相关问题得到了回答.谢谢!但是,这给我提出了一个新问题. nasm为什么将数据字节放在两个不同的存储位置?我在下面包括程序信息和其他数据转储. ---------- code snippet compiled with nasm, ld ----------------- section .text ... zero: jmp short two one: pop ebx ..
发布时间:2020-09-13 00:47:19 其他开发

当next(跳过)指令是变量定义时,Shellcode中的JMP意外行为

目的:我试图利用x86-64中的RIP模式.即使程序集单独执行了预期的操作,shellcode也无法执行. 问题:简而言之,我尝试过的是这个 jmp l1 str1: db "some string" l1: other code lea rax, [rel str1] 我在不同的地方使用了上述方法,但仅在某些地方失败了,在其他地方却成功了.我试着玩,失败时找不到任何模 ..
发布时间:2020-09-13 00:02:56 服务器开发