栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

程序集的sys_execve系统调用

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

程序集的sys_execve系统调用

execve
系统调用 被调用,但你确实传递错误参数。

(您可以通过使用运行可执行文件来查看此内容

strace
。)

存在三个问题:

  1. .ascii
    不以0结尾的字符串。(您可能会很幸运,因为
    .data
    在此示例中的本节中没有任何内容,但是不能保证…)添加0或使用
    .asciz
    (或
    .string
    )代替。

  2. movl file_to_run, %edi
    移动的值 指向 由所述
    file_to_run
    符号到
    %edi
    ,即,第一个4个字节的字符串(
    0x6e69622f
    )。字符串的 地址 只是符号本身的值,因此您需要对
    $
    字面值使用前缀:
    movl $file_to_run, %edi
    。同样,您需要说
    movl $file_to_run, %ebx
    几行。(这是AT&T语法和Intel语法之间常见的混淆源!)

  3. 参数以错误的顺序放在堆栈上:

    -0x8(%ebp)
    比的地址低
    -0x4(%ebp)
    。因此,应该将命令字符串的地址写入
    -0x8(%ebp)
    ,将0写入
    -0x4(%ebp)
    ,将
    leal
    指令写入
    leal -8(%ebp), %ecx


固定代码:

.section .datafile_to_run:.asciz       "/bin/sh".section .text.globl mainmain:    pushl %ebp    movl %esp, %ebp    subl $0x8, %esp         # array of two pointers. array[0] = file_to_run  array[1] = 0    movl $file_to_run, %edi    movl %edi, -0x8(%ebp)       movl $0, -0x4(%ebp)    movl $11, %eax# sys_execve    movl $file_to_run, %ebx   # file to executeleal -8(%ebp), %ecx      # command line parameters    movl $0, %edx # environment block    int  $0x80    leave    ret


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/412390.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号