首页
社区
课程
招聘
[旧帖] [原创]学习缓冲区溢出的时候的一个小问题 0.00雪花
2009-6-16 21:28 2663

[旧帖] [原创]学习缓冲区溢出的时候的一个小问题 0.00雪花

2009-6-16 21:28
2663
好久没上论坛学习了,决定重新开始.
从failwest的教程开始看起.看到第五篇的时候,怎么都做不成功,研究如下:
由于我算出来的messageboxA的地址是77d5050b,
0b的asc码是CR,结果fscanf接受输入的时候,给截断了.结果老溢出不成功.
因此建议新手可以试下用fread读取字符,将原来的代码改为如下,溢出成功......

#include <stdio.h>
#include <windows.h>
#define PASSWORD "1234567"
int verify_password (char *password)
{
  int authenticated;
  char buffer[44];
  authenticated=strcmp(password,PASSWORD);
  strcpy(buffer,password);//over flowed here!  
  return authenticated;
}
main()
{
  int valid_flag=0;
  char password[1024];
  FILE * fp;
  LoadLibrary("user32.dll");//prepare for messagebox
  if(!(fp=fopen("password.txt","rwb+")))
  {
    exit(0);
  }
  //fscanf(fp,"%s",password);
  fread(password,1,56,fp);
  valid_flag = verify_password(password);
  if(valid_flag)
  {
    printf("incorrect password!\n");
  }
  else
  {
    printf("Congratulation! You have passed the verification!\n");
  }
  fclose(fp);
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回