Hello World w Linuksie

W tym poście napiszę prosty program Hello World pod Linuksa. Kod programu Zacznijmy od napisania wypisywania komunikatu na ekran. Użyjemy do tego wywołania systemowego write a następnie zwrócimy 0. Bazując na liście syscalli, widzimy, że write ma number 1, natomiast exit ma number 60. Następnie, sprawdzając w manualu dla tych syscall-i widzimy, że write przyjmuje trzy argumenty, natomiast exit przyjmuje … Czytaj dalej

Pushd/Popd

W tym poście pokażę jak działają bashowe polecenia pushd oraz popd. Powłoka bash posiada pewną funkcjonalność, która nie jest powszechnie znana – tą funkcjonalnością jest stos katalogów. Jak sama nazwa wskazuje, jest to stos na którym odkładane są ścieżki do katalogów, a na jego szczycie znajduje się aktualny katalog. Zanim przejdziemy do zastosowań, poznajmy trzy polecenia służące do obsługi tego … Czytaj dalej

Common /dev/ devices

W tym poście przedstawię kilka urządzeń systemu GNU/Linux, których znajomość jest przydatna w pracy administratora systemu. Wstęp Wszystkie specjalne pliki urządzeń obsługiwane przez jądro są opisane w źródłach jądra w pliku https://github.com/torvalds/linux/blob/master/Documentation/admin-guide/devices.txt/. Ja skupię się na tych, które uważam za najczęściej używane. /dev/null Chyba jedno z najczęściej używanych urządzeń urządzeń jest /dev/null. Jest to urządzenie które jest puste, a to znaczy, … Czytaj dalej

Jak to jest z tym little-endian

W tym poście postaram się opowiedzieć trochę o kolejności bitów w pamięci. Zacznijmy od trzęsienia ziemi int main() { long int x=0x4142434445464748; } $ gcc -g main.c -o main $ gdb main (gdb)$ break main (gdb)$ layout src (gdb)$ r (gdb)$ s Na systemie 64-bitowym, nasza zmienna ma 8 bajtów. Dlatego ją wypiszmy: (gdb)$ x/1gx &x 0x7fffffffdca8: 0x4142434445464748 ale 64 … Czytaj dalej

How it is with little-endian

In this post I’m going to tell something about little endian. Let’s start with earthquake int main() { long int x=0x4142434445464748; } $ gcc -g main.c -o main $ gdb main (gdb)$ break main (gdb)$ layout src (gdb)$ r (gdb)$ s In 64bit OS, long ing has 8 bytes So, let’s print it (gdb)$ x/1gx &x 0x7fffffffdca8: 0x4142434445464748 But, 64bits … Czytaj dalej

col – pwnable.kr

W tym poście rozwiążemy sobie zadanie col ze strony pwnable. Analiza wstępna Aby zalogować się do zadania wykonujemy: $ ssh col@pwnable.kr -p2222 a jako hasło podajemy guest. Po zalogowaniu się widzimy 3 pliki fd@ubuntu:~$ ls -l total 16 -r-sr-x— 1 col_pwn col 7341 Jun 11 2014 col -rw-r–r– 1 root root 555 Jun 12 2014 col.c -r–r—– 1 col_pwn col_pwn … Czytaj dalej

fd – pwnable.kr

W tym poście rozwiążemy sobie zadanie fd ze strony pwnable. Aby zalogować się do zadania wykonujemy: $ ssh fd@pwnable.kr -p2222 a jako hasło podajemy guest. Po zalogowaniu się widzimy 3 pliki fd@ubuntu:~$ ls -l total 16 -r-sr-x— 1 fd_pwn fd 7322 Jun 11 2014 fd -rw-r–r– 1 root root 418 Jun 11 2014 fd.c -r–r—– 1 fd_pwn root 50 Jun … Czytaj dalej

Hacking the chroot/docker

W tym poście pokażę jak mając root w chroot dostać się do systemu nadzorcy. Tym samym chcę pokazać, dlaczego nie należy przyznawać praw administratora użytkownikowi nawet w chroot. Crash course Ponieważ docker (podobnie jak większość technologi kontenerowych) używa chroot-a, wyjście z chroot czy docker sprowadza się do tej samej metody. Poniższa metoda wymaga posiadania konta root w kontenerze uruchomionego z uprawnieniami privileged (w … Czytaj dalej

Podstawy chroot

W tym poście omówię ręczne tworzenie chroot-a, uruchamianie w nim aplikacji a także wykorzystanie go wraz z usługą ssh, do ograniczania uprawnień użytkowników logujących się do serwera. Czym jest chroot? Chroot jest skrótem od change root i określa mechanizm zmiany katalogu bazowego dla uruchamianego procesu. Powoduje to, że dany proces oraz wszystkie jego procesy pochodne odnosząc się do ścieżki / … Czytaj dalej

Haproxy vs LVS

W tym poście omówię temat balansowania ruchu. Przedstawię dwa popularne rozwiązania: Haproxy oraz LVS, a następnie przeprowadzę testy wydajności obydwu rozwiązań w środowisku z wysyconym łączem wychodzącym. Uwaga: Ten post jest pisany po nagraniu materiału na YouTube. Dlatego zachowany został chaotyczny charakter tego materiału Teoria Czym jest balansowanie ruchu? Wyobraźmy sobie, że mamy klientów, którzy chcą odpytać o stronę www, np: strona.pl. Gdybyśmy … Czytaj dalej