zoukankan      html  css  js  c++  java
  • PWN学习001

    简介:

    PWN是CTF中的一种题目,利用溢出等等攻击手段达到入侵设备的一个简称,不必深究它到底是什么意思,学完下面这个网站上的几道题目,自然就懂了。

    练习网站: http://pwnable.kr/play.php

    • 打开网站第一题(fd)。


    • 看到有一个ssh fd@pwnable.kr -p 2222 密码是:guest,我们先连接过去。

    • 查看一下目录有什么内容,如下图,看到有三个文件,fd , fd.c , flag。
    • 由权限可知道,我们不能读取flag文件,题目思路尝试执行fd,查看fd.c 进行读取flag。

    • 查看源码
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    char buf[32];
    
    int main(int argc, char* argv[], char* envp[])
    {
        if(argc<2)
        {
            printf("pass argv[1] a number
    ");
            
            return 0;
        
        }
        int fd = atoi( argv[1] ) - 0x1234;
        int len = 0;
        len = read(fd, buf, 32);if(!strcmp("LETMEWIN
    ", buf))
        {
            printf("good job :)
    ");
            system("/bin/cat flag");
            exit(0);
        }
        printf("learn about Linux file IO
    ");
        return 0;
    
    }
    • 从源码分析,可知,这个程序接收一个参数argv[1],这个参数转换成整数int型,然后减去0x1234,然后读入buf,输入:LETMEWIN,进行字符串比较,如果正确就读入flag这个文件。
     stdin            0      标准输入
     stdout           1      标准输出
     stderr           2      标准错误输出
    • 所以我们只有让fb 等于0 再想buf里面写入我们相要写的内容LETMEWIN,然后就成功了。
    • 怎么让fb 为 0 呢?
    •  fd = atoi( argv[1] ) - 0x1234;
    • 所以只要把我们的输入的值为0x1234就可以了,输入对应的十进制4660即可。


    • 总结:
    1. 先运行程序。
    2. 查看源码。
    3. 找到溢出点。
    4. 输入对应字符。
    5. 获取flag。      
    DeeLMind'Blog| 再坚持10十年就不信还不成大神!!!懂进攻-知防守--先正向-后逆向
  • 相关阅读:
    Python基础知识
    Oracle 总结
    Linux基本命令
    测试理论
    计算机基础
    http常见的状态码,400,401,403状态码分别代表什么?
    html
    day21 包
    day20 模块引入的一些说明
    我又回来了???
  • 原文地址:https://www.cnblogs.com/DeeLMind/p/6821289.html
Copyright © 2011-2022 走看看