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十年就不信还不成大神!!!懂进攻-知防守--先正向-后逆向
  • 相关阅读:
    HDU 5912 Fraction (模拟)
    CodeForces 722C Destroying Array (并查集)
    CodeForces 722B Verse Pattern (水题)
    CodeForces 722A Broken Clock (水题)
    CodeForces 723D Lakes in Berland (dfs搜索)
    CodeForces 723C Polycarp at the Radio (题意题+暴力)
    CodeForces 723B Text Document Analysis (水题模拟)
    CodeForces 723A The New Year: Meeting Friends (水题)
    hdu 1258
    hdu 2266 dfs+1258
  • 原文地址:https://www.cnblogs.com/DeeLMind/p/6821289.html
Copyright © 2011-2022 走看看