Что выводит эта программа при запуске?

Programs, sources, embedded, demomaking, whatsoever related to subj :)

Postby lvd » 27 Jan 2015, 17:31

Code: Select all
const int main[] = {
    -443987883, 440, 113408, -1922629632,
    4149, 899584, 84869120, 15544,
    266023168, 1818576901, 1461743468, 1684828783,
    -1017312735
};

Программа для linux x86-64 и гцц.
F̞͖̭̿̔ͯu̐̅cͬ̑ͩk̨̤̳͇̮̭̪̠̽̿̓̆ͭͩ ̷̩̰͎̩͓̘̾̀ͬ̊ͭ͛ͅda̝̺͙̬͎̝̾͟ ̰̜̝̯͉̯̖̓̎́ͨ̽ͫ͟f̟͇̭̀ͬͨͭ̐̚u̹̼̹̗̞͑̔͂͐̚cͭ̅̊̆̒̆ǩ̝̩̯́ͥ̔̍̑ḭ͓͍̳̬ͦ̽͂n͍͎͈̈̅ͩͬ ̊ͫ̂̾̑̈́f̲͚͉͓͗̋́ͧͦ̅ȗ͇̲̻͈̲̅̎͗͒ͭ͡c̬̟̠̹̯̈́ͩ͘ͅk̫̠̻̋͜a̲͒̾̇!͙͕̺͉̗̩̲̂̏̄̀
User avatar
lvd
 
Posts: 7262
Joined: 07 Apr 2007, 21:28
Group: Registered users

Postby deathsoft » 27 Jan 2015, 19:04

Переведи поебень в массиве в байты и посмотри любым дизасмом - хинт - main - это просто адрес функции - тело в виде массива.

Выводит она видимо надпись "линупс - говно".

Более того на нормальном проце программа вообще упадет с segv, т.к. у любых массивов стоит атрибут NX (non executable), т.к. это данные а не код и страницы с массивом помечаются как не исполняемые (ридонли или RW).
User avatar
deathsoft
 
Posts: 4744
Joined: 07 Apr 2007, 00:58
Group: Registered users

Postby lvd » 27 Jan 2015, 21:49

А вот хуй, main оказывается в секции .text, и выполняется замечательно.
F̞͖̭̿̔ͯu̐̅cͬ̑ͩk̨̤̳͇̮̭̪̠̽̿̓̆ͭͩ ̷̩̰͎̩͓̘̾̀ͬ̊ͭ͛ͅda̝̺͙̬͎̝̾͟ ̰̜̝̯͉̯̖̓̎́ͨ̽ͫ͟f̟͇̭̀ͬͨͭ̐̚u̹̼̹̗̞͑̔͂͐̚cͭ̅̊̆̒̆ǩ̝̩̯́ͥ̔̍̑ḭ͓͍̳̬ͦ̽͂n͍͎͈̈̅ͩͬ ̊ͫ̂̾̑̈́f̲͚͉͓͗̋́ͧͦ̅ȗ͇̲̻͈̲̅̎͗͒ͭ͡c̬̟̠̹̯̈́ͩ͘ͅk̫̠̻̋͜a̲͒̾̇!͙͕̺͉̗̩̲̂̏̄̀
User avatar
lvd
 
Posts: 7262
Joined: 07 Apr 2007, 21:28
Group: Registered users

Postby deathsoft » 28 Jan 2015, 00:03

lvd wrote:А вот хуй, main оказывается в секции .text, и выполняется замечательно.

Так потому, что компилятор и линкер уебищный, создает потенциально уязвимую программу помещая массив в исполняемые страницы.
User avatar
deathsoft
 
Posts: 4744
Joined: 07 Apr 2007, 00:58
Group: Registered users

Postby fk0 » 31 Jan 2015, 19:19

Пиздишь ёпт!

Code: Select all
   .file   "test.c"
   .globl   main
   .section   .rodata
   .align 32
   .type   main, @object
   .size   main, 52
main:
   .long   -443987883
   .long   440
   .long   113408
   .long   -1922629632
   .long   4149
   .long   899584
   .long   84869120
   .long   15544
   .long   266023168
   .long   1818576901
   .long   1461743468
   .long   1684828783
   .long   -1017312735
   .ident   "GCC: (Debian 4.7.4-3) 4.7.4"
   .section   .note.GNU-stack,"",@progbits


sysop@pc:ghostcheck$ nm a.out | grep main
U __libc_start_main@@GLIBC_2.0
08048480 R main

man nm -->

"R" "r" The symbol is in a read only data section.


$ objdump -D a.out
Code: Select all
...
Disassembly of section .rodata:

08048460 <_fp_hw>:
8048460:   03 00                   add    (%eax),%eax
   ...

08048464 <_IO_stdin_used>:
8048464:   01 00                   add    %eax,(%eax)
8048466:   02 00                   add    (%eax),%al
   ...

08048480 <main>:
8048480:   55                      push   %ebp
8048481:   48                      dec    %eax
8048482:   89 e5                   mov    %esp,%ebp
8048484:   b8 01 00 00 00          mov    $0x1,%eax
8048489:   bb 01 00 00 00          mov    $0x1,%ebx
804848e:   67 8d 35                lea    (%di),%esi
8048491:   10 00                   adc    %al,(%eax)
8048493:   00 00                   add    %al,(%eax)
8048495:   ba 0d 00 00 00          mov    $0xd,%edx
804849a:   0f 05                   syscall
....


Буханка рулез! Виндовс мастдай!
* Origin: зип файл! (2:5030/1559)
User avatar
fk0
 
Posts: 1535
Joined: 07 Apr 2007, 01:08
Group: Registered users

Postby fk0 » 31 Jan 2015, 19:28

А вот хуй. В rodata оно конечно кладёт. С линкером всё заебись, и с компилятором. А стартап уебанский на 146% -- он прямо из rodata main и запускает. И ведь запускается (БУХАНКА, БУХАНКА, БУХАНКА!!!), не падает. NX бит не предусмотрен.
* Origin: зип файл! (2:5030/1559)
User avatar
fk0
 
Posts: 1535
Joined: 07 Apr 2007, 01:08
Group: Registered users

Postby deathsoft » 01 Feb 2015, 22:29

fk0 wrote:NX бит не предусмотрен.

Давно ядро буханки есть с NX битом и рантайм который все это поддерживает.
User avatar
deathsoft
 
Posts: 4744
Joined: 07 Apr 2007, 00:58
Group: Registered users

Postby fk0 » 08 Feb 2015, 20:44

Ну и покажи как это ведро и рантайм запустить.
* Origin: зип файл! (2:5030/1559)
User avatar
fk0
 
Posts: 1535
Joined: 07 Apr 2007, 01:08
Group: Registered users

Postby deathsoft » 09 Feb 2015, 22:12

fk0 wrote:Ну и покажи как это ведро и рантайм запустить.

Вот это разве не оно? http://en.wikipedia.org/wiki/PaX
PaX offers executable space protection, using (or emulating in operating system software) the functionality of an NX bit (i.e., built-in CPU/MMU support for memory contents execution privilege tagging). It also provides address space layout randomization to defeat ret2libc attacks and all other attacks relying on known structure of a program's virtual memory.


И в догонку современное ядро с патчами http://grsecurity.net/
User avatar
deathsoft
 
Posts: 4744
Joined: 07 Apr 2007, 00:58
Group: Registered users


Return to Coding

Who is online

Users browsing this forum: No registered users and 19 guests

cron