Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <unistd.h>
- void public(char *args) {
- char buff[12];
- memset(buff, 'B', sizeof(buff));
- strcpy(buff, args);
- printf("nbuff: [%s] (%p)(%d)nn", &buff, buff, sizeof(buff));
- }
- void secret(void) {
- printf("SECRETn");
- exit(0);
- }
- int main(int argc, char *argv[]) {
- int uid;
- uid = getuid();
- // Only when the user is root
- if (uid == 0)
- secret();
- if (argc > 1) {
- public(argv[1]);
- }
- else
- printf("Kein Argument!n");
- }
- (gdb) info frame 0
- Stack frame at 0xffffd2f0:
- eip = 0x804852d in public (ret.c:11); saved eip = 0x804858c
- called by frame at 0xffffd330
- source language c.
- Arglist at 0xffffd2e8, args: args=0xffffd575 "A"
- Locals at 0xffffd2e8, Previous frame's sp is 0xffffd2f0
- Saved registers:
- ebp at 0xffffd2e8, eip at 0xffffd2ec
- (gdb) print secret
- $2 = {void (void)} 0x804852f <secret>
- (gdb) print/x &buff
- $4 = 0xffffd2d4
- (gdb) run `perl -e '{print "A"x24; print "xecd2ffff"; }'`
- The program being debugged has been started already.
- Start it from the beginning? (y or n) y
- Starting program: /home/patrick/Projekte/C/I. Stack_Overflow/ret `perl -e '{print "A"x24; print "xecd2ffff"; }'`
- buff: [AAAAAAAAAAAAAAAAAAAAAAAA�d2
- f
- f] (0xffffd2b4)(12)
- Program received signal SIGSEGV, Segmentation fault.
- 0x0c3264ec in ?? ()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement