PWN学习001

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PWN学习001相关的知识,希望对你有一定的参考价值。

简介:

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

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

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

技术分享

 

 

 

 

 

 

技术分享

 


  • 看到有一个ssh [email protected] -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\\n");
        
        return 0;
    
    }
    int fd = atoi( argv[1] ) - 0x1234;
    int len = 0;
    len = read(fd, buf, 32);if(!strcmp("LETMEWIN\\n", buf))
    {
        printf("good job :)\\n");
        system("/bin/cat flag");
        exit(0);
    }
    printf("learn about Linux file IO\\n");
    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。      

以上是关于PWN学习001的主要内容,如果未能解决你的问题,请参考以下文章

攻防世界—pwn—level0

[NTUSTISC pwn LAB 7]Return to libc实验(puts泄露libc中gadget片段定位)

逆向及Bof基础实践

20155201 李卓雯 《网络对抗技术》实验一 逆向及Bof基础

20155307刘浩《网络对抗》逆向及Bof基础

20155311高梓云《网络对抗》逆向及Bof基础