linux中call命令,各种linux命令(pwn)

(gdb)bt                               //查看函数堆栈

(gdb)info break                    //查看断点信息

(gdb)x 0X804962c               //相当于 *0X804962c

(gdb)x /20i  $eip               //查看接下来20条指令

(gdb)p system                        //打印出system函数地址

(gdb)vmmap//查看当前程序的heap,stack地址

(gdb)find addr(__libc_start_main) ,+22000000, string  //在某个范围找string,返回地址

(gdb)delete 1(1-5)               //删除断点

(gdb)b *address//根据地址下断点

(linux)绑定一个程序到端口:

socat TCP4-LISTEN:(10001)端口号,fork EXEC:(./level1)程序名

(gcc) -E  //只进行预编译

(gcc) -no-pie//关闭pie

(IDA) G jump address  //G键

(objdump) objdump -d -j .plt level2  //将level2的 plt表反汇编出来

(pwn题) 找程序本身是否调用了system()

(汇编理解)

call func---> push pc ,jmpfunc

leave---> mov esp,ebp    pop ebp

Ret ---> pop ip

Checksec:

CANARY    : ENABLED      //canary 栈保护  在栈中的函数返回地址(eip)和基地址(ebp)之间插一个随机cookie

FORTIFY  : ENABLED     //在程序中判断数组大小,防止栈溢出

NX        : ENABLED         //栈堆不可执行    gcc中的 -z execstack 关闭NX

PIE      : disabled              //地址随机化,但是地址的后两位是不变的(十六进制)

RELRO    : Full               //保护GOT表

使用objdump和grep命令查看是否有与eax/esp相关的转跳指令:

$ objdump -d stack2 | grep *%eax

80483df:ff d0call   *%eax

80484cb:ff d0call   *%eax

$ objdump -d stack2 | grep *%esp

ldd level3     //查看level3使用的共享库文件

readefl -S  level2 //获取各个段的地址

grep  XXX //搜索指令

(gdb)set args 设置main函数参数

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值