Full code for the entire lab is located in the Buffer directory.
$ sudo sysctl -w kernel.randomize_va_space=0
#if
is an if statement.
-z execstack
-m32
a32.out
.
sudo chown root a32.out
sudo chmod u+s a32.out
stack.c
bof
contains the buffer overflow.
strcpy
copies whatever is passed into it into this buffer.
badfile
badfile
echo "Hello world!" > badfile
$ebp
is the frame pointer.
gdb stack-L1-dbg
b bof
run
will run the program.
next
to move to the next instruction.
list
to see the actual code.
where
will let you see the state.
p str
will print the argument
p buffer
will print the contents of the buffer.
p &buffer
will print the base address of the buffer.
p $ebp
will print the value of the frame pointer, (top of the frame)
# gdb-peda p &buffer #8 = (char (*)[100]) 0xffffcb1c # gdb-peda p $ebp #9 = (void *) 0xffffcb88
# gdb-peda p /d 0xffffcb88 - 0xffffcb1c #10 = 108
quit
to exit gdb.
stack-L1
.
play.py
#!/usr/bin/python3
as the first line in your file.
#!/usr/bin/python3 ary = ['H','e','l','l','o',' ','W','o','r','l','d','!'] print(ary) print(ary[:3]) print(ary[2:4]) print(ary[4:])
chmod u+x play.py
play.py
ary[2:4] = "ven" print(ary)
i = 0 while i < len(ary) : print (i, ary[i]); i += 1
cp exploit.py step1.py
shellcode
value give, copy the 32 bit code from call_shellcode.c
517-len(shellcode)why?
od -x badfile