lvxuzhou


私信TA

用户名:lvxuzhou

访问量:106718

签 名:

lvxuzhou

等  级
排  名 47
经  验 12168
参赛次数 0
文章发表 56
年  龄 0
在职情况 学生
学  校 西安
专  业

  自我简介:


一、前言:

    相信很多学习计算机的同学,都有一个黑客梦,这次就给大家稍微展示一些“拙劣”的黑客技巧,仅限于linux环境。因为工作以后,90%的人都是在linux系统从事开发工作的。

二、测试环境:
微信图片_20210922225910.png

三、strcmp函数简介

    以大家最熟悉的strcmp函数为例,玩一把劫持。人狠话不多,直接上代码。

    1、strcmp函数原型:

    int strcmp(const char *s1, const char *s2);

    2、strcmp函数所属头文件

    #include <string.h>

    3、strcmp函数介绍

    strcmp函数是string compare(字符串比较)的缩写,用于比较两个字符串并根据比较结果返回整数。基本形式为strcmp(str1,str2),若str1=str2,则返回零;若str1

    4、strcmp基本用法 

         test.c文件内容如下:

    #include <stdio.h>    
    #include <string.h>
    
    int main()
    {
        char passwd[] = "654321";
        int ret;
    
        ret = strcmp(passwd, "123456");
    
        if (ret == 0)
        {
            puts("密码正确");
        }
        else
        {
            puts("密码错误");
        }
        return 0;
    }

     5、编译运行

        微信图片_20210922232215.png

四、strcmp函数劫持

    以下代码会涉及到linux环境高级编程的知识,有兴趣的朋友可以留言,根据大家感兴趣程度,我可以再写一篇博客单独介绍这些技巧。

    第一步、编写劫持模块   mystrcmp.c

    微信图片_20210922233528.png

   第二步、编译劫持模块

   gcc -fPIC -shared -o mystrcmp.so mystrcmp.c

   第三步、加载劫持模块

   export LD_PRELOAD=./mystrcmp.so

   第四步、运行test程序

  大家可以看到,即使passwd的值为654321,也会打印密码正确,神奇不。

   微信图片_20210922233849.png

  第五步、恢复环境

  export LD_PRELOAD=

五、小结

 以上就是劫持(Hook)库函数的完成流程了,大家觉得好玩不,有兴趣留言,后续还会更新更多好玩的。

 

0.0分

5 人评分

新上线《蓝桥杯辅导》课程,近五年的蓝桥杯省赛与国赛真题都有,从读题开始理解题意、梳理思路、实现代码再提交评测全过程,可有效提升获奖比例甚至进国赛!课程介绍、试听请猛击这里

  评论区

  • «
  • »