缓冲区溢出攻击,从锁定的文本文件中获取密码

时间:2019-03-19 20:44:56

标签: c sh buffer-overflow

因此,我正在尝试利用具有缓冲区溢出漏洞的程序来获取/返回在锁定的.txt包含密码的密码。我不需要为此使用GDB。

vuln.c //没有编辑

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main(int argc, char **argv){
  unsigned int pidgeon = 20;
  unsigned int correct_pwd = 0;
  unsigned int rooster = 25;

  char pwd[100];
  char entered_pwd[100];

  FILE *fptr = fopen("/assignment1/password.txt", "r");

  if(fptr == NULL){
    printf("Error opening password vault!\n");
    exit(1);
  }

  fscanf(fptr, "%s", pwd);
  fclose(fptr);

  scanf("%s", entered_pwd);

  sleep(1);
  if(strcmp(entered_pwd, pwd)){
    printf("Incorrect password\n");
  }
  else{
    correct_pwd = 1;
    printf("Correct password\n");
  }

  if (pidgeon != 20 || rooster != 25) {
    printf("Stack smashing detected!!");
    return 0;
  }
  else if(correct_pwd) {
    printf("\nYou are now authenticated, you deserve a cookie!\n");
    fptr = fopen("/assignment1/secret.txt", "r");
    if (fptr == NULL) {
        printf("But the cookie jar is broken...\n");
    }
    char secret[1024];
    fscanf(fptr, "%s", secret);
    fclose(fptr);
    printf("%s", secret);
  }
  return 0;
}

attack.sh //要编辑

#!/usr/bin/env bash
echo -en "dddddddddddddddd" | /assignment1/vuln

ython <<@@
print 'hello from Python!'
from subprocess import call
call('echo "I like potatos"', shell=True)
@@

我知道,如果我回显足够大的字符串,可能会导致段错误,但这并不能帮助我。我知道fscanf和strcmp是脆弱的区域。我的想法是,我需要传递“ if(strcmp(entered_pwd,pwd))”条件语句来检索密码。为了做到这一点,我需要执行一些代码,将entered_pd设置为pwd。

但是我很迷茫,我花了几个小时寻找示例以及如何做到这一点,但我还是陷入了困境。 任何帮助将不胜感激,谢谢

0 个答案:

没有答案