Hemmann, Volker Armin wrote:
to do this fancy jump-around stuff, you need to know exactly where which snippet resides in ram - one error and all your work is lost.

So, and because on gentoo everything is compiled by yourself with a little bit different setting like the next gentoo user, it is a lot harder to guess the correct adresses. Not like the binary distributions, where one is laid out like the other.

Well, lets find out. On my home system, i did this:

strace gzip > /dev/null
hit ctrl-c
find the mmap that maps /lib/libc.so.6 by:
- find the open call that opens libc, note that the open call returns
  the file descriptor
- find the next mmap that acts on that fd (second to last argument
  to mmap)
- mmap returns the address it mmapped to

Short excerpt:
$ strace gzip > /dev/null
[...snip...]
open("/lib/libc.so.6", O_RDONLY)        = 3
[... reads, lseeks and fstats snipped ...]
mmap(NULL, 2248680, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x2aaaaabc1000
[...snip...]

I got 0x2aaaaabc1000 on my machine, i would be interested to know what your machine did. But judging from the fact that the people from hardened added address space layout randomization, i'd guess we're going to get the same address or something that varies but not very randomly (low entropy). Make sure that you test with gzip though, other apps will have slighly different addresses as they seem to load libs in a different order -- this won't help though, as an exploit will be targeted at a specific app.

But I'm still interested if we all get the same addresses or slightly different.

Marco
--
[email protected] mailing list

Reply via email to