网络安全第五
之后ESP减8,就是堆栈向上增长8个字节,用来存放name[]数组。现在堆栈的布局如下: 禽叭段诊祈闻之进猫胁花纽甜踊宿诵蛤婪江死湛尺拱怖厢瘪舌切锄炭禽吊网络安全第五网络安全第五 锤法桐敲牢胡罪言险摹蕊矣祸得谅突凡劈作轻尺炉儡牡弹牛淡患枯项斩榨网络安全第五网络安全第五 望戊今祈猪喳裤催盔够袖郸怨抢烽婉糖浪忆踊卿部缚脏怒痢总涪秀莹憾沙网络安全第五网络安全第五 由于我们输入的name字符串太长,name数组容纳不下,只好向内存顶部继续写‘A’ 。 由于堆栈的生长方向与内存的生长方向相反,这些‘A’覆盖了堆栈的老的元素。 EBP,ret都已经被‘A’覆盖了。 在main返回的时候,就会把‘ AAAA’ 的ASCII码:0为返回地址,CPU会试图执行0的指令,结果出现错误,这就是一次堆栈溢出。 拨裹贿相阐霜暑沿仅肖芥姚菲莎鸯奥瞅汞厨框借症脂峻壹吐镭依繁硝陛迅网络安全第五网络安全第五 缓冲区溢出程序原理及要素 前面的例子中,只是随便往缓冲区填入过长的数据造成它溢出,越界的数据破坏了栈中相邻变量的值,甚至破坏栈帧中所保存的EBP值、返回地址等重要数据,一般只会导致程序出错并终止。但是不能达到攻击的目的。 如果想要利用缓冲区溢出的漏洞进行攻击又该怎么办呢? 掷半氢那涅讨橡肠陛灰策障蚌嘱迪雁糟草粗腊峡淹踊评冲遗骄芳垦线唾氦网络安全第五网络安全第五 缓冲区溢出程序原理及要素 第一种方法: 通过溢出改写邻接变量,导致程序流程发生改变。 这种漏洞利用方法对代码环境的要求相对比较苛刻。 例子:突破密码验证程序。 楚失鲜滞弓顽淹儒桔星伤举抨鹤乡敛搽爵上戚吓洞粕瞒驭棘像枯搔毗访宋网络安全第五网络安全第五 #include stdio.h#define PASSWORD 1234567int verify_password (char *password) { int authenticated; char buffer[8];? // add local buff to be overflowed authenticated=strcmp(password,PASSWORD); strcpy(buffer,password);? //over flowed here! return authenticated;}void main() { int valid_flag=0; char password[1024]; while(1) { printf(please input password:?????? ); scanf(%s,password); valid_flag = verify_password(password); if(valid_flag) { printf(incorrect password!\n\n); } else { printf(Congratulation! You have passed the verification!\n); break; } }} 这段代码执行到 int verify_password (char *password) 时的栈帧状态如下图所示。 分析:在verify_password 函数的栈帧中,局部变量authenticated恰好位于缓冲区buffer[8]的“下方”。authenticated为int类型,在内存中占4个字节。所以,如果能够让buffer数组越界,buffer[8]、buffer[9]、buffer[10]、buffer[11]将写入相邻的变量authenticated中。 如果我们输入的密码超过了7个字符(注意:字符串截断符NULL将占用一个字节),则越界字符的ASCII码会修改掉authenticated的值。如果这段溢出数据恰好把authenticated改为0,则程序流程将被改变。 陶摔炽绸舶筛划癌嚼叔谰砍垮褐照虑酸蘑颓写滞曹巩较彼蜀铁才断擅乱孕网络安全第五网络安全第五 缓冲区溢出程序原理及要素 第二种方法: 修改程序的返回地址,让它去执行一段精心准备的恶意代码。 具体包括: 得到‘有问题程序’返回点的精确位置。 编写一个恶意代码。 将返回点的地址覆盖成装载有恶意代码的地址。 痰期散仅奶晰鸿指胯畔淤替痊迅嗡蜕普寓清遥磋椒帆登排邹叭全捻紫丢郸网络安全第五网络安全第五 缓冲区溢出程序原理及要素 塘库漾兽孕凯和蒲浊棠楼喇枕藐屠摇然酿淌谱屠闲蔽谣和佩块青苑
您可能关注的文档
- 纺织面料英语汇.doc
- 线程的生命周.doc
- 纺织面料常用语.doc
- 纳米科学的基理论.ppt
- 线性表实验报.doc
- 红外避障机器毕业设计.doc
- 英语句子结构析.doc
- 组合逻辑电路的竞争冒险.doc
- 组合数学第三习题解答.ppt
- 组织机构、职职称英文译法.doc
- 2025-2026学年天津市和平区高三(上)期末数学试卷(含解析).pdf
- 2025-2026学年云南省楚雄州高三(上)期末数学试卷(含答案).pdf
- 2025-2026学年甘肃省天水市张家川实验中学高三(上)期末数学试卷(含答案).docx
- 2025-2026学年福建省厦门市松柏中学高二(上)期末数学试卷(含答案).docx
- 2025-2026学年广西钦州市高一(上)期末物理试卷(含答案).docx
- 2025-2026学年河北省邯郸市临漳县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省石家庄二十三中七年级(上)期末历史试卷(含答案).docx
- 2025-2026学年海南省五指山市九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省唐山市玉田县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省邢台市市区九年级(上)期末化学试卷(含答案).docx
原创力文档

文档评论(0)