shellcode相关内容
这是我想要做的: 添加 rsi,单词 [rsi+16] 我想读取位于 rsi+16 地址的无符号短值.我想将此值添加到 rsi. 这是我在 nasm 中得到的错误: s2.asm:62: 错误:操作数大小不匹配 这很奇怪.为什么 nasm 和我的 cpu 无法将 16 位添加到 64 位寄存器? 这是我所做的工作: mov rbx,0mov bx, 字 [rsi+16]添
..
我正在尝试编写某种漏洞利用程序,但在使我的 asm 代码在堆栈上的任何位置运行时遇到了问题.就是这样: BITS 64全局_start_开始:mov rax, 59jmp 短文件c1:流行音乐jmp 短 argvC2:流行音乐移动 rdx, 0系统调用回复文件:呼叫 c1数据库 '/bin/sh',0argv:呼叫 c2dq arg, 0 由于选择了行,此代码在堆栈上的任何地方都不起作用,因
..
我似乎有一个有趣的问题,尽管我可能做错了什么. 我的问题是我试图将 AAAABBBBCCCC 推入堆栈,然后通过标准输出打印它们.然而,在我的 x86_64 环境中,push 0x41414141 似乎推送了 4141414100000000. 所以下面的代码块: 全局 _start节.text_开始:推送 0x43434343 ;中交所推送 0x42424242 ;BBBB推送
..
我在MAC OSX上,并且尝试通过程序集调用execve syscall.他的操作码是59.在linux中,我必须将操作码设置为eax,然后将参数设置为其他寄存器,但是在这里,我必须将操作码放入eax,并从右向左将参数压入堆栈. 所以我需要execve("/bin/sh",NULL,NULL),我发现某个地方的程序集为null = 0,所以我将null放入了第二个和第三个参数中. 全局开始
..
我正在遵循一个基本的生成shell漏洞利用示例.以下正是我的书告诉我写的内容,但我仍然遇到段错误. 在gdb中运行此命令时,在"mov byte [esi + 7] al"处出现段错误.此行是必需的,以便我可以在字符串"/bin/sh"的末尾放置一个空字节.当我将其翻转到"mov byte al,[esi + 7]"时,这不会引起段错误.我假设我没有存储我的字符串存储在内存中的位置的写权限.
..
例如,如何转换以下Windows Shell代码: \ xfc \ xe8 \ x8f \ x00 \ x00 \ x00 \ x60 \ x31 \ xd2 \ x64 \ x8b \ x52 \ x30 \ x8b \ x52 \ x0c \ x89 \ xe5 \ x8b \ x52 \ x14 \ x14f\ xb7 \ x4a \ x26 \ x31 \ xff \ x8b \ x7
..
我正在尝试运行此shellcode,但是我一直遇到分段错误 /* call_shellcode.c *//*一个程序,该程序创建一个包含用于启动shell的代码的文件*/#include#include#includeconst char code [] ="\ x31 \ xc0"/*第1行:xorl%eax,%eax */"\
..
我正在尝试解决 Protostar stack5 .这是一个解决方案.它将 shellcode 放在返回地址之后,我尝试将其放在之前数组.我已经试过了shellcode,它可以正常工作. 似乎一切正常,执行跳转到shellcode,但是在shellcode结束后出现段错误,并且没有生成任何shell.我不知道为什么,在 gdb 中,并不是所有的shellcode指令都能正确显示.例如,在 0
..
在编写缓冲区溢出漏洞利用程序时,我了解到我需要输入一个长度为数组的地址(address_of_return_address-address_of_buffer).并且该数组需要用shellcode的地址填充.这样,当我的输入数组溢出时,它将用shellcode的地址覆盖保存的返回地址. 我认为由于shellcode将存储在堆栈上保存的返回地址上方,因此其地址应为address_of_retu
..
我想将Intel x86汇编代码转换为ARM.我不知道如何使用堆栈. 我使用32位x86 Linux的 int 0x80 系统调用编写了对execve的调用.但是,ARM使用svc或swi. 但是我不知道如何使用这样的东西: push 0x0068732f 和 push 0x6e69622f .globl主要主要的:推0x0068732f推0x6e69622fmov edx,0m
..
在理解二进制文件(虚拟内存布局,执行...等)的方式中,我编写了 C 代码,该代码声明了一个包含字符串的全局字符串。可执行代码,然后我使用一个简单的技巧通过声明一个指针( PTR main()函数的返回地址到该可执行代码/ code>)在$code> main()中,这是在堆栈上保留的本地内存区域2个字,距 main(),所以我要做的就是将返回地址的地址分配给该指针(PTR =(int *)& P
..
我有一个小程序,希望将shellcode作为参数传递。在shellcode中,必须传递\x00。我尝试了以下命令: ./ program`python -c'print“ \x01\x00\x00\ \x00\x9c\xd8\xff\xbf“'` 但是the x00根本没有注册!传递给程序的参数是“ \x01\x9c\xff\xbf”。 我不认为这是python的
..
我正在做一个关于C程序中缓冲区重载的练习,这个问题的目的是在我将 shellcode 插入到程序。这是我到目前为止所拥有的: 步骤1:首先,让我们在名为file.c的文件中查看我的C代码: root @ kali:〜#cat ./file.c #include #include void premio() { printf
..
我正在尝试使用ubuntu 12上的终端进行编译: #include #include main() { / *声明参数数组* / char * args [2]; args [0] =“ / bin / bash”; args [1] = NULL; execve(args [0],args,NUL
..
我正在尝试通过覆盖main的返回地址来为exit(0)调用执行此简单操作码。 问题是我遇到了分段错误。 #include char shellcode [] =“ / 0xbb / 0x14 / 0x00 / 0x00 / 0x00” “ / 0xb8 / 0x01 / 0x00 / 0x00 / 0x00” “ / 0xcd / 0x80 “;
..
我想出于教育目的而利用基于堆栈的缓冲区溢出。 有一个典型的函数,调用时带有main参数,该函数作为编程保存参数的本地缓冲区。给定这样的输入,即 nops + shellcode + address_shellcode ,我将利用它。 用gdb调试后,我发现了shell代码的地址,因为它将作为参数传递,并且在 strcpy 我检查了堆栈,返回地址 $ ebp + 8 已成功被shell代
..
我正在尝试学习在Backtrack Linux上利用简单的bufferover流技术。 这是我的C程序 #include #include int main(int argc,char ** argv) { char buffer [500]; if(argc == 2) { strcpy(buffer,argv
..
我正在阅读《剥削的艺术》(Art of Exploitation),这是一本不错的书,我从exploit_notesearch.c文件中浏览了该示例。 简而言之,作者试图溢出程序来自notesearch.c int main(int argc,char * argv []){ int userid,printing = 1,fd; char searchstring [100]
..
先前的相关问题得到了回答.谢谢!但是,这给我提出了一个新问题. nasm为什么将数据字节放在两个不同的存储位置?我在下面包括程序信息和其他数据转储. ---------- code snippet compiled with nasm, ld ----------------- section .text ... zero: jmp short two one: pop ebx
..
目的:我试图利用x86-64中的RIP模式.即使程序集单独执行了预期的操作,shellcode也无法执行. 问题:简而言之,我尝试过的是这个 jmp l1 str1: db "some string" l1: other code lea rax, [rel str1] 我在不同的地方使用了上述方法,但仅在某些地方失败了,在其他地方却成功了.我试着玩,失败时找不到任何模
..