CS:APP Attack lab

实验描述

本次实验利用程序需要外部输入的特点,输入机器码对程序返回值覆盖,以达到攻击的目的,即在 getbuf 函数需要的输入中做手脚,以致不能正常返回,执行攻击代码。

阅读更多

CS:APP Bomb lab

实验步骤

准备工作

使用tar -vxf将炸弹压缩包解压,cd 进入,可以从 bomb.c 中看出实验的用意以及程序的大致
逻辑,bomb 为可执行程序,使用 gdb 调试该程序.

1
2
3
4
(gdb) b read_line
Breakpoint 1 at 0x40155c
(gdb) b explode_bomb
Breakpoint 2 at 0x4014e4

给 read_line 函数打上断点,以便每次输入运行一关.给 explode_bomb 打上断点,以便在炸弹爆炸
前可以处理.

阅读更多

CS:APP解题记录

CS:APP 2.60

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
unsigned replace_byte(unsigned x, int i, unsigned char b)
{
x = x & (~(0XFF << (i << 3)));//相应字节置零
x = x | (b << (i << 3)); //相应字节改为char b
return x;
}
int main()
{
unsigned ret = replace_byte(0X12345678, 1, 0XAB);
printf("0X%X\n", ret);
return 0;
}

0X1234AB78

利用按位运算$x \& 1 = x , b | 0 = b$。

阅读更多