pwn基础入门-1

下面内容配合B站上的你有多想学pwn进行学习

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
char sh[]="/bin/sh";
int init_func(){
    setvbuf(stdin,0,2,0);
    setvbuf(stdout,0,2,0);
    setvbuf(stderr,0,2,0);
    return 0;
}
​
int func(char *cmd){
    system(cmd);
    return 0;
}
​
int main(){
    char a[8] = {};
    char b[8] = {};
    //char a[1] = {'b'};
    puts("input:");
    gets(a);  
    printf(a);
    if(b[0]=='a'){ 
        func(sh);
    }
    return 0;
}

需要用到的程序内容如上

gcc-a.out

如何将上面代码变为一个程序呢?使用gcc

image-20240510194302780

先使用ls查看要执行的程序是否存在,存在以后我们去执行这个程序,而后再用ls查看就会多一个a.out的程序内容

image-20240510194758630

执行这个程序,是让输入一些内容

gcc的-o命令,设置程序执行后的名字

image-20240510195042200

使用-o命令生成我们想要的文件名

image-20240510195215251

执行这个文件,输入相关内容

file命令

image-20240512184143057

使用file命令,出现的内容包含:

ELF 64-bit LSB shared object:64位小端序的ELF文件

dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2:动态链接,以及链接器的位置

BuildID[sha1]=6130301d5c74b4686c3a52363f52e86332057420:Hash数值

readelf -a quetion_1_64x |less

使用上面命令查看quetion_1_64x的具体内容

image-20240511193933326

得到下面图中信息

image-20240511194022708

64位的补码小端序的程序。IDA中能看到的内容,在这里都可以看到。使用-a可以全部查询到

nm命令

nm看的是一个过程

nm quetion_1_64x | less

image-20240511194559881

image-20240511194623112

hexdump-查看16进制

hexdump quetion_1_64x |less

image-20240511194841368

以上就是执行代码

strings效果相同

和下面这个命令结果是一样的

strings quetion_1_64x |less

image-20240511195052864

ldd命令-ldd较为常用和重要:查看用到的库函数位置

image-20240512184728734

libc.so.6 是在这个 /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff9bfa96000)文件夹下

通过ll命令可以查看到

image-20240512184922804

软链接,链接到:libc-2.31.so*

objdump

没有反编译工具之前使用的命令

objdump -d quetion_1_64x |less

image-20240512185340739

image-20240512185431219

将程序内容编译为汇编语言

image-20240512185610090

这里就是main函数对应的编译语言

gcc查看汇编语言

image-20240512190053920

image-20240512190914657

image-20240512190934744

image-20240512191042199

现在一般很少有人用这个了,大部分都使用IDA来看了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值