2018-12-13 CMU Lab3 溢出攻击

KABOOM


大体概述及思路

执行的是testn函数并且需要执行5遍(在应用-n选项的情况下,程序会要求提交输入字符串 5 次,5次输入会面对5个不同的栈空间





Getbufn(输入超过512导致缓冲区溢出)








第二个if判断要求getbufn的返回值val为cookie,所以要改变getbufn的返回地址。





最关键的一点:因为要执行5次testn函数,每次函数执行完之后原有的栈帧都会被清空,否则就会一直占用着空间,那么就会导致第二次执行testn函数的时候,栈帧扩栈不会在原有的位置上进行扩栈,栈帧在栈中的位置并不能够确定。So,如何确定每次栈帧的位置呢?

可以用gdb中的info registers(即 i r)命令查看esp 和 ebp 的地址,然后再构造攻击字符串。



分析过程


Testn函数




【PS:因为前面有一道题的.......:


0x55683a50+0x20这个 0x20 怎么来的?

首先,我感觉当时我踩的坑是没有搞清楚esp的作用,其实很简单,esp是栈指针寄存器永远指向的是栈的最底端并且栈帧的最顶端一定是函数的返回地址,所以根据汇编


是等到ebx入栈完成后,esp才进行的扩栈即esp-0x14。So,为什么最顶端是返回地址?原因就是call命令在主程序中每次调用函数时,先依次把各参数以相反的顺序入栈;然后call func_name, 这里call要做两件事: 一是把函数的返回地址入栈,二是让指令执行指针%eip指向函数开始处。】





so此函数栈帧:最顶上是返回地址,然后各种入栈



进入正题,看代码:

因为要修改getbufn的返回值,目光移到524行call的位置,getbufn执行完之后走的是525行0x8048e4a的位置,eax即返回值(其实直接看getbufn的汇编代码就能够确定)。

然后确定每次栈的位置,用gdb跟踪getbufn



getbufn函数












这样,刚开始的两大顾虑就解决了,下面就可以构建攻击代码了,根据题目要求:

1. 改变返回的cookie值

2. 恢复testn函数的现场,即比较成功之后testn函数能够继续往下执行。

想要恢复现场,最关键的一点就是要知道ebp的值,如何获取ebp的值?最简单的暴力方法就是直接 i r ebp,但这样是不行的,上一题中的





原来上下两个ebp的值应该是一致的,由下面的可以回溯到上面的,但是现在下面的变了,所以不能够直接看。

回到这个题,继续构建

(一定要有retret指令用栈中的数据,修改IP的值,从而实现转移。)加40是因为



至此,攻击代码构建好了,那么放在哪里又是个问题

因为ebp每次都在变



既然都已经找出来了ebp的位置,不妨来看一下


这里面会产生一个最大值跟最小值差值224确定了ebp跳动的范围,而buf的长度为0x208+4(返回地址)=524.所以,这5次一定有公共的部分,那就可以放攻击代码了。

因为构建的攻击代码长度为0x16远小于公共空间的长度,所以,也一定有个范围

{0x556830F8,max}

max怎么得到呢?

确定了最小值,说明每次运行的时候走的一定有那段公共区域,所以,用ebp的最小值确定最大值,这样,保证了这段公共空间是一定能够执行的。




为什么要用90填充?

nop无作用,英文“no operation”的简写,意思是“do nothing”(机器码90)是一条指令

如果是00就相当于给这段赋了值,可能会影响后续的调用。




 

特别鸣谢:

-------------------------------------------------------------------------------------------

参考:

作者:何凯-山东工商学院

来源:《CMU LAB3解题详解(Ver 1.0)》

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容