【Writeup】i春秋 Linux Pwn 入门教程_CSAW Quals CTF 2017-pilot

Linux pwn入门教程(2)——shellcode的使用,原理与变形

0x01 解题思路

  • 查看文件信息并试运行
    在这里插入图片描述

    1. 没有开保护,显示有RWX段。shellcode必须在具有R和X属性的内存空间上才能执行;

    2. 执行时输出了一个地址0x7ffd426b9ca0;

    3. 有用户输入点。

  • 拖入IDA 64bits,F5查看

    main
    在这里插入图片描述

  • 如图所示,红框处分别为输出地址和读取用户输入的伪代码,输出的地址应该是用户输入在栈上的地址&buf。read函数显然存在栈溢出漏洞。

  • 测试一下溢出地址并计算偏移量
    在这里插入图片描述
    在这里插入图片描述
    可以看出输出地址的确是用户输入的地址,而输入点距离RIP的偏移量是40。

  • 由此可以将shellcode放在用户输入的开头,然后将RIP覆盖为程序输出的地址,这样理论上是可以执行shellcode的。初步EXP:

    #!/usr/bin/python
    #coding:utf-8
    
    from pwn import *
    
    context.update(arch = 'amd64', os = 'linux', timeout = 1)   
    #context.log_level = 'debug'
    
    #io = remote('172.17.0.3', 10001)  
    io = process('./pilot')  
    
    shellcode 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值