Wczoraj, oprócz premiery trzeciego numeru Paged Out!, na sieć wrzuciłem też wywiad z naszym zespołem biorącym udział w konkursach związanych z „hakowaniem satelitów”, tj. Poland Can Into Space. Podczas ponad półtoragodzinnego spotkania rozmawiamy zarówno o tegorocznej edycji konkursu, tj. HACK-A-SAT 4, jak i trochę o zeszłorocznym HACK-A-SAT 3. Zapraszam!


Czytaj dalej...
2023-12-18:

Mamy to! Paged Out! #3

paged out

Po czterech długich latach w końcu mamy to – trzeci numer magazynu Paged Out!

Download: pagedout.institute, w sekcji Download Issues. Za darmo. Miłej lektury!

Jeśli zastanawiacie się, czym jest Paged Out!, to jest to eksperymentalny magazyn o IT/elektronice, gdzie każdy artykuł zajmuje dokładnie jedną stronę. W tym numerze mamy ich 48 50, porozrzucane po kilku kategoriach:

  • Programming,
  • Networks,
  • Reverse Engineering,
  • Security/Hacking,
  • Cryptography,
  • Hardware,
  • Artificial Intelligence,
  • File Formats,
  • Art,
  • i Sysadmin stuff (przydałaby się lepsza nazwa)!

W tym numerze trochę brakuje Retro (mamy coś o PS4, ale to chyba jeszcze nie jest retro; jest też SuperH!), Demoscene, Radio, i kilku innych tematów. Więc jesli chcecie coś napisać na któryś z tych lub innych tematów, to mamy dobre wieści! Call For Articles do numeru czwartego jest już otwarte! Szczegóły znajdziecie na tej stronie. Bardzo zachęcamy do napisania czegoś do Paged Out!, szczególnie, że artykułu na jedną stronę pisze się dość szybko :)

Przez ostatnie kilka lat wydarzyło się wiele w kwestii PO! i jeśli jesteście zainteresowani rzutem oka za kulisy, zachęcam do przeczytania wstępniaka w numerze trzecim, a także do zajrzenia na blog Paged Out! Institute.

Miłej lektury!
gynvael


Czytaj dalej...

UPDATE: Krótki dodatek, bo widzę, że ktoś faktycznie zainteresował się tym postem, ale jest dużo zamieszania co do dwóch kwestii: definicji słowa "hacker" oraz czym jest "Dragon Sector".

Po pierwsze, jest chyba 6 czy 7 definicji słowa "hacker":

  1. hacker – osoba, która pisze kod z "hackami", tj. taki, który niby działa, ale nie czyta się go najlepiej (przykład),
  2. hacker – osoba, która posiada głęboką wiedzę w tematyce informatyki i/lub elektroniki, i lubi wiedzieć jak rzeczy działają (patrz: 1, 2, ale też 3),
  3. hacker – osoba, zajmująca się bezpieczeństwem komputerowym; także: osoba, która posiada wiedzę o wykorzystywaniu podatności i przełamywaniu zabezpieczeń; istotne: jest to określenie neutralne (patrz: 1, 2),
  4. hacker – synonim cyberprzestępcy, co btw jest niepoprawną, ale niestety potocznie używaną definicją (patrz 1, 2),
  5. hacker – tak podobno mówi się na taksówkarzy w niektórych rejonach US (patrz: 1),
  6. hacker – podobno również tak się mówi na niewprawnych golfiarzy.

Zarówno ja, jak i inne osoby z Dragon Sector, jesteśmy hackerami w rozumieniu punktów 2 oraz 3, a czasem także 1 (tak tak, mam na myśli szczególnie Ciebie, widziałem Twój kod). W moim przypadku również ostatnia definicja by pasowała. W szczególności NIE jesteśmy hakerami w rozumieniu definicji 4.

Po drugie, czym jest "Dragon Sector", o którym media piszą "grupa hackerów". Otóż Dragon Sector jest... drużyną e-sportową, która bierze udział w zawodach e-sportowych zwanych Security Capture The Flag (w skrócie: CTF), które sprawdzają umiejętności techniczne uczestników w hackingu zgodnie z definicjami 2 oraz 3 (btw pod pewnymi względami zadania na topowych CTFach są dużo bardziej skomplikowane niż to co Redford/mrtick prezentowali na Oh My H@ck). Jest to bardzo popularna rzecz w środowiskach związanych z cyberbezpieczeństwem i odnośniki do CTFów pojawiają się m.in. w tym rozporządzeniu Rady Ministrów (ctrl+f CTF) w sekcji o wymogach posiadania specjalistycznej wiedzy w zakresie cyberbezpieczeństwa. Dragon Sector jest drużyną, która zajmowała trzy razy pierwsze miejsce w rocznym rankingu światowym (patrz np. wpis na stronie Biura Bezpieczeństwa Narodowego).

Tym samym Dragon Sector nie jest firmą/spółką świadczącą usługi z zakresu cyberbezpieczeństwa. Pracujemy w różnych miejscach (np. ja 12 lat przesiedziałem w Google), niektórzy z nas mają własne firmy. Ale łączy nas to, że jesteśmy hakerami zgodnie z definicją 2 i 3 powyżej, lubimy komputery, lubimy wyzwania, i interesuje nas, jak różne rzeczy działają od środka.

Wczoraj (tj. 5 grudnia 2023) na konferencji Oh My H@ck widziałem zaprezentowany chyba najciekawszy case-study ze stosowanej inżynierii wstecznej w tym roku (jeśli nie w tej dekadzie). Mówię oczywiście o prelekcji „Heavyweight Hardware Hacking”, gdzie zaprezentowane zostaly wyniki badań prowadzonych przez Redforda, q3ka, oraz mrticka (PanaKleszcza). W skrócie i uproszczeniu można o nich poczytać m.in. na Z3S lub u q3ka na mastodonie. A dzisiaj na te publikacje oficjalnie odpowiedziała spółka NEWAG (mirror).

W odpowiedzi pojawiło się bardzo ciekawe stwierdzenie na temat technikaliów inżynierii wstecznej, a ponieważ jest to temat, którym zajmuję się od prawie 20 lat, to postanowiłem się do tego odnieść.

Na początek kilka disclaimerów:

  1. O ile wychodzę w poście od cytatu z oświadczenia NEWAGu, to skupiam się na ogólnych technikaliach, a nie na tym konkretnym przypadku i tej konkretnej sprawie.
  2. Full-disclosure: jestem członkiem i założycielem Dragon Sector, natomiast nie pracowałem nad tym konkretnym projektem, więc nie mam praktycznie żadnych dodatkowych informacji poza tym co można znaleźć w Internecie oraz co było wczoraj na prelekcji.

Zacznijmy od cytatu z oficjalnego oświadczenia spółki NEWAG (podkreśliłem jedno kluczowe słowo, które jest trochę bez znaczenia dla tego postu, ale które ładnie nawiązuje do problematyki metadanych; ale to inny temat i nie na dzisiaj):

8. W konsekwencji w dowolnym czasie możliwe było wykonanie tzw. reverse engineering oprogramowania sterującego (tj. zhakowanie) poprzez przeniesienie jego kodu dekompilacji, modyfikacji oraz ponowne załadowanie zmienionego oprogramowania sterującego. [...] 10. [...] Otóż oczywistym jest, iż nawet najlepszy haker może co najwyżej próbować poznać treść określonego zapisu cyfrowego. Żaden haker nie jest natomiast w stanie, na podstawie samego zapis cyfrowego, wskazać kto konkretnie jest „autorem” określonego zapisu cyfrowego.

Czytaj dalej...
00000150  82 86 3e de eb 0c 2f 9c  c3 75 07 96 7c de 7d 7a  |..>.../..u..|.}z|
00000160  62 eb 7c 1a f1 3b 0f 47  97 9e 78 8f 30 78 72 e0  |b.|..;.G..x.0xr.|
00000170  92 d4 d2 44 02 6e 4e 4f  54 c0 a8 20 b0 94 33 1c  |...D.nNOT.. ..3.|

Jeśli zawsze chcieliście nauczyć się posługiwać hexedytorami i sprawnie operować na plikach binarnych, ale jakoś do tego jeszcze nie dotarliście, to mam coś dla Was. W poniedziałek (18 września) i wtorek (19 września) o 20:00 będę prowadzić darmowe szkolenie pt. „Operowanie na Bitach i Bajtach”, które jest praktyczno-teoretycznym wstępem do 4-częsciowej serii szkoleń z plików binarnych. Szkolenie z tego jak sprawnie korzystać z hexedytorów i grzebać w plikach binarnych chodziło mi po głowie od długiego czasu – to moim zdaniem jeden z fajniejszych i bardziej przydatnych skilli w hackingu. Stąd też był to pierwszy temat, który przyszedł mi do głowy jak zacząłem myśleć nad tym od jakiego szkolenia zacząć z HexArcana. O samych szkoleniach piszę trochę więcej poniżej, a póki co garść najważniejszych informacji organizacyjnych:

  • Wszystkie szkolenia razem w pakiecie (2099 PLN + VAT)
    hex.sekurak.pl

  • #1 Operowanie na Bitach i Bajtach (płać ile chcesz, w tym 0 PLN)
    18 + 19 września godz. 20:00 – 22:00, 4h szkolenia w sumie
    Rejestracja i więcej info

  • #2 Wstęp do plików binarnych i hexedytorów (499 PLN + VAT)
    25 + 26 września godz. 9:00 – 13:00, 8h szkolenia w sumie
    Rejestracja i więcej info

  • #3 Programowanie Bezpiecznych Parserów (1000 PLN + VAT)
    2 + 3 października godz. 9:00 – 13:00, 8h szkolenia w sumie, programowanie wymagane
    Rejestracja i więcej info

  • #4 Inżynieria Wsteczna Nieznanych Formatów (1000 PLN + VAT)
    9 + 10 października godz. 9:00 – 13:00, 8h szkolenia w sumie, programowanie wymagane
    Rejestracja i więcej info

P.S. Przez 60 dni będą dostępne również nagrania dla osób zarejestrowanych.

Na każde z powyższych szkoleń można się zarejestrować niezależnie od pozostałych (jeśli posiada się odpowiednią wiedzę wstępną). Początkującym i osobom, które miały niewielką styczność z niskopoziomowymi tematami zalecałbym zacząć od #1 i potem dorzucić #2. Części #3 i #4 będą wymagały umiejętności programistycznych (czego dwa pierwsze szkolenia z serii nie wymagają).

Zalecane szkolenia według celu:


Czytaj dalej...

Na majowym Mega Sekurak Hacking Party miałem wystąpienie na żywo właśnie o takim tytule – „Jak wygrywać CTFy” – podczas którego pokazywałem różne sztuczki i kruczki, które podłapałem przez ostatnie 20 lat udziałów w konkursach hackerskich (serio, w pierwszych konkursach tego typu brałem udział koło 2002-2003 roku). Prelekcja została bardzo ciepło przyjęta – dostała 5.0 za poziom merytoryczny, i było sporo komentarzy typu „za mało czasu na prezentację, powinno być go co najmniej dwa razy więcej”. A więc mówicie? Macie! Jutro o 20:00 odbędzie się około 2-godzinna wersja rozszerzona prelekcji, na którą serdecznie zapraszam!

  • Kiedy: wtorek, 29.08.2023, 20:00
  • Gdzie: Rejestracja (za darmo lub ile się chce)
  • Nagranie: dostępne dla zarejestrowanych przez 60 dni
  • Więcej informacji na sekurak.pl
Obrazek z tym samym co w poście.

Czytaj dalej...
Chyba rendering książki i kawałka kubka sekuraka.

Kilka dni temu rozpoczął się preorder na nową książkę pod redakcją Michała Sajdaka i wydawaną przez wydawnictwo Securitum. Jak można się domyślić po tytule, i co zresztą widać po spisie treści (wrzuciłem pod koniec posta), książka będzie bardzo techniczna i zapowiada się wyśmienicie – masa ciekawych tematów opisanych przez osoby, które na pewno kojarzycie jeśli interesujecie się polską sceną bezpieczeństwa.

Preoder/informacje o książce: ksiazka.sekurak.pl

Jedynym nietechnicznym rozdziałem jest napisany przeze mnie rozdział otwierający książkę pt. „O etyce w hakingu”. Pozwolę sobię zacytować pierwsze cztery akapity, które dobrze oddają jego cel:


Czytaj dalej...

Po nieco ponad 12 latach opuściłem zespół bezpieczeństwa Google, aby odpocząć i zbudować coś swojego. Zapraszam, na mój livestream, gdzie opowiem o tym, co było i co będzie.

Livestream odbędzie się 5 lipca 2023. Nagranie będzie dostępne.


Czytaj dalej...

Odbywający się 17 października 2022 Sekurak Mega Hacking Party w zasadzie rozpoczął się dwa dni wcześniej od indywidualnego CTFa. W którego miałem nie grać. Bo miałem robić inne Ważniejsze Rzeczy™. Ale wyszło jak zwykle - i w sumie fajnie, bo CTF okazał się być bardzo sympatyczny.

Poniżej znajdują się rozwiązania zadań, w których udało mi się zdobyć flagę. Rozwiązania są dość skrótowe, ale starałem się mniej więcej wskazać jaką drogą poszedłem.

Rozwiązania innych osób:


Czytaj dalej...
Logo Sekuraka na tle padającego śniegu z dopiskiem sekurak hacking party

6 grudnia odbędzie się Mega Sekurak Hacking Party, czyli jednodniowe wydarzenie organizowane przez ekipę od sekurak.pl/securitum.pl z serią 8 prelekcji live i ~8 nagrań puszczanych w trybie "oglądaj razem z prelegentem na czacie" (imo ciekawy pomysł – można prelegentów trochę podpytać o to co się dzieje w danej chwili na nagraniu).

Dodam, że przypadł mi zaszczyt otworzyć konferencję pierwszym wykładem o wczesnej porannej godzinie (9:15). Sama prelekcja ma wdzięczny tytuł „Netgear – CTF w pudełku?!”, i opowiem na niej o błędach znalezionych w firmware niektórych urządzeń Netgeara (raporty z nich można znaleźć po angielskiej stronie mojego bloga), a także o tym jak w ogóle doszło do tego, że zacząłem się zajmować tym tematem, i jak wyglądały same badania od strony procesu/narzędzi (przy czym to są bardziej podstawy – dużo więcej nie było potrzebne).

Poza moją prelekcją na MSHP będzie jeszcze kilka lepszych - poniżej krótki spis.


Czytaj dalej...
2020-06-22:

lightning Sekurak Hacking Party

konferencja
Sezon konferencji online w pełni, i pojawia się sporo ciekawych rozwiązań – jak na przykład wirtualna konferencja w wirtualnym 3D świecie, czy właśnie tytułowy piątkowy lightning Sekurak Hacking Party, czyli 3-godzinny event z piętnastoma 7-10 minutowymi lightning talkami / prelekcjami.

Moja prelekcja podczas lSHP będzie w zasadzie pierwszą prelekcją w cyklu o mniej lub bardziej pomysłowym tytule „Principle of vast astonishment”. Cykl ten powstał w zasadzie przez przypadek – któregoś pięknego wieczoru podczas analizowania kolejnej rzeczy natknąłem się na coś, co zachowywało się dziwnie i nietypowo, i pomyślałem, że w sumie zrobię z tego kilka slajdów. Kilka dni później doszło kilka kolejnych slajdów o czymś innym, tydzień później jeszcze kilka, i tak dalej. I tak oto okazało się, że w zasadzie mam gotowy materiał na kilka kolejnych lightning talków na losowych konferencjach w ciągu roku. W takiej sytuacji Michał nie musiał mnie za długo przekonywać do opowiedzenia czegoś na piątkowym wydarzeniu ;>

Agenda lSHP znajduje się poniżej, a póki co kilka ważnych linków:

lSHP na YouTube ← tu będzie można oglądać prelekcje
Zaproszenie na lSHP (w formie fajnego cyber wideo ;>)
O lSHP na Sekuraku


Czytaj dalej...
2020-04-02:

Użycie struct a padding przy zapisie do pliku w C/C++

warsztaty dla początkujących

Od zeszłego tygodnia prawie codziennie prowadzę "wirtualne warsztaty dla początkujących z jakości kodu" - w dużym skrócie: analizuje i sugeruje rzeczy do poprawienia / zrobienia inaczej w kodzie, który otrzymuje od widzów. Wczorajszy (#6) odcinek był o dość krótkim i ciekawym kodzie w C++, który między innymi zapisywał ("manualnie") plik BMP. Ponieważ sam nagłówek BMP był tworzony/trzymany bezpośrednio w tablicy bajtów - co nie jest specjalnie czytelne - zasugerowałem użycie struktury. To z kolei spotkało się z zaskoczeniem jednego z widzów (w komentarzach pod wideo) z uwagi na dopełnienie (padding) / wyrównanie pól (alignment). Delikatnie rozbudowaną wersję mojej odpowiedzi zamieszczam poniżej.


Czytaj dalej...
2019-08-11:

Pierwszy numer Paged Out!

pagedout
Opublikowaliśmy Paged Out! #1 - miłej lektury!

Okładka Paged Out! #1

Artykuły do numeru #2 przyjmujemy do 20 październik 2019 - wszelkie szczegóły można znaleźć na stronie projektu - https://pagedout.institute/.


Czytaj dalej...
Człowiek vs Komputer (baner)
Jakiś czas temu dostałem do przejrzenia wstępne tłumaczenie książki "Człowiek vs Komputer" z pytaniem czy polskie wydanie ma szansę na mój patronat (jak widzicie mam opinię dość wybrednego). Jak możecie domyślić się z samego faktu istnienia tego postu, książkę zacząłem czytać, i po kilku rozdziałach odpowiedziałem twierdząco:

Przejrzałem, poczytałem, posprawdzałem trochę źródeł i... świetna książka :) Zdecydowanie kapitalne historie!
W dużym skrócie, książka jest zbiorem autentycznych historii w których przez błąd w jakimś oprogramowaniu (lub PPKK*) stało się coś, co miało interesujące konsekwencje w świecie rzeczywistym. Na przykład urzekła mnie historia o mandatach spływających do osoby która miała samochód z tablicą rejestracyjną z napisem "NO PLATE" ("brak tablicy") - czytelnicy tego bloga na pewno domyślą się co zaszło, ale na wszelki wypadek dam podpowiedź: co zrobić, jeśli interfejs policyjny wymaga wypełnienia pola "tablica rejestracyjna", a samochód (który, przykładowo, przekroczył prędkość) takiej nie miał? W samej książce sprawa z tablicami rejestracyjnymi jest pociągnięta jeszcze dalej, ale nie będę spoilerować :). I takich historii jest tam kilkadziesiąt.

W każdym razie post wrzucam, ponieważ polskie tłumaczenie trafiło do (przed)sprzedaży:
http://bit.ly/CzlowiekvsKomputer

Dodam, że sama książka jest nietechniczna, tj. nie trzeba mieć wiedzy o programowaniu/komputerach, żeby się ją fajnie czytało (w przeciwieństwie do moich/j00ru "Potknięć programistycznych").

Miłej lektury!

* Problem Pomiędzy Krzesłem a Komputerem (czyli PEBKAC)


Czytaj dalej...
2019-05-23:

CONFidence 2019 golf - wyniki

confidence:conference
Konkursy o wejściówki na CONFidence 2019 zakończyły się wczoraj w południe, więc czas na opublikowanie zwycięskich prac (bo technicznie ogłoszenie wyników miało miejsce na dzisiejszym livestreamie).


Czytaj dalej...
Do tegorocznej edycji CONFidence nie zostało już za dużo czasu (3-4 czerwca), a ja mam jeszcze trzy wejściówki do rozdania. Czas najwyższy na zapowiadany konkurs, a w zasadzie trzy konkursy, każdy o jeden bilet wstępu.

Zanim jednak przejdę do konkursu kilka "przypomnień":
- Jeśli nadal chcecie kupić bilet na CONFidence, to najlepiej to zrobić przed 27 maja (wtedy zmienia się cena biletów).
- Z tego co mi wiadomo, to biletów już wiele nie zostało, a na kilka dni przed konferencją może ich zupełnie zabraknąć.
- Dla przypomnienia, kod rabatowy: GC_20 (20%)
- Dla osób w wieku 13-19 lat: Są jeszcze miejsca na CONFidence Class (to osobne wydarzenie, szczegóły na stronie).

A teraz CONFidence golf!


Czytaj dalej...
2019-03-11:

Mój nowy Discord

livestreams
Jak część z Was pewnie wie, od pewnego czasu mam zestaw dwóch kanałów IRCowych na irc.freenode.org, na których dyskutujemy sobie na techniczne tematy z moją małą livestreamową społecznością (polski kanał jest dość aktywny non-stop, a angielski w zasadzie tylko podczas livestreamów). W każdym razie ostatnio zorientowałem się, że w zasadzie masa osób korzysta obecnie z Discorda, więc i to postanowiłem założyć.

Jeśli chcielibyście dołączyć do naszego Discorda: https://discord.gg/QAwfE5R

A jeśli preferujecie IRCa, to zapraszam na dwa "stare" kanały:

• #gynvaelstream-en @ irc.freenode.org (j. angielski)
• #gynvaelstream @ irc.freenode.org (j. polski)

I tyle.


Czytaj dalej...
Krótki post z moim kalendarium konferencyjnym na najbliższe pół roku (za dużo tego nie ma, bo robię sobie rok przerwy od prelekcji znowu):

PL:
• (25.02, Kraków) MEGA sekurak hacking party - jeszcze podobno trochę biletów jest, a są dość tanie w porównaniu do sporej liczby eventów, więc zachęcam, zachęcam :).

EN:
• (22.02, Lizbona) SINFO - największa darmowa konferencja o IT w Portugalii (chyba pierwszy raz będę na nie-strikte-technicznym wydarzaniu, więc jestem ciekaw jak wyjdzie).

W drugiej połowie roku najpewniej będę na PWNingu, i... może na czymś z zupełnie innej beczki, zobaczymy jak wyjdzie.

Do zobaczenia :)


Czytaj dalej...
Wycinek z CTFtime.org: 1. Dragon Sector, 1090 punktów. 2. PPP, 991 punktów. 3. p4, 628 punktów.

Z (bardzo przyjemnego) kronikarskiego obowiązku odnotowuje, że po czterech latach udało się nam powtórzyć wyczyn z 2014 i ponownie zająć pierwsze miejsce w klasyfikacji generalniej CTFtime.org! Co więcej, na podium, na trzecim miejscu, stanął również inny polski zespół - p4 :). Drugie miejsce zajął legendarny amerykański zespół Plaid Parliament of Pwning (gratulacje!).

W sumie więcej się rozpisywać nie będę, szczególnie, że wrzuciliśmy już dość długi post o sezonie 2018 na nasz blog teamowy:
https://blog.dragonsector.pl/2019/01/dragon-sector-wins-ctftime-season-2018.html

Nowy sezon rozpocznie Insomnie'hack teaser CTF 19 stycznia i, jak to się mówi po angielsku, "mamy pewną historię" z tym CTFem - wygraliśmy teaser 5 razy pod rząd. Poprzeczkę ustawiliśmy sobie wysoko - powinno być ciekawie :).

Tak więc dla wszystkich graczy CTFowych sezonu 2018, oraz już niedługo 2019: GG, HF GL!

P.S. Napisali o nas:
Zaufana Trzecia Strona
Niebezpiecznik
Sekurak
WP tech
WP tech (wywiad: Redford z DS i Rev z p4)
CyberDefense24
Dziennik Internautów
AVLab.pl
(jeśli znaleźlibyście jeszcze coś na sieci, dajcie znać)


Czytaj dalej...
2018-12-16:

Wyjątki od kuchni

programista
Zmniejszona wersja pierwszej strony artykułu, pokazana jedynie w celach ilustracyjnychW okolicach lata 2014 zainspirowany zadaniem CTFowym membership z kwalifikacji na koreański Codegate 2014, stworzyłem artykuł opisujący jak działają wyjątki w C++ "pod linuxem", czyli w GCC/GNU libc/GNU libstdc++. A jest to mechanizm bardzo ciekawy, bo znaleźć w nim można np. maszynę wirtualną, która realizuje pewien specyficzny kod bajtowy w momencie rzucenia wyjątku.

W każdym razie artykuł został opublikowany a magazynie Programista, ale zapomniałem go wrzucić potem na swojego bloga. Czas więc to nadrobić:

Artykuł na Google Docs (w menu File jest opcja do pobrania w PDF i innych formatach)
Cały numer Programisty z tym artykułem (w formie EPUB, wymaga zapisania na newsletter)

Dodam tylko, że wersja artykułu z pierwszego linka może zawierać drobne literówki - jest to wersja po głównej korekcie, ale przed składem i drugą korektą.

P.S. Podziękowania dla j00ru i KrzaQ za techniczne review artykułu, oraz Tomasza Łopuszańskiego z redakcji Programisty za korektę.
P.P.S. Artykuł powinien chyba nazywać się "Wyjątki u krasnoludów i elfów", bo... no wiecie, DWARF, ELF...


Czytaj dalej...
Taka krótka informacja, że na stronie naszej konferencji pojawiły się slajdy z 10 prezentacji:

Materiały z Security PWNing 2018

Kawałek wyżej na stronie jest również relacja z konferencji, tj. trochę tekstu i sporo zdjęć.

Fotografia z pierwszego dnia konferencji przedstawiająca prawie całą salę; po lewej widać prelegenta - Dominika Czarnotę - a po prawej kilkuset słuchaczy, oraz budkę tłumaczy symultanicznych w tle


Czytaj dalej...
2018-12-03:

Materiały postkonferencyjne: C/C++ vs Security!

conference:code dive:security pwning:PUT security days
Ostatnio było na mini-tournée po Polsce na kilku konferencjach/wydarzeniach/etc, i m.in. miałem okazję wygłosić prelekcję pt. "C/C++ vs Security!" (właśnie z wykrzyknikiem na końcu, bo jak się okazało Redford miał podobną, tylko bez wykrzyknika ← kluczowa różnica). Slajdy pokazałem na code::dive we Wrocławiu (w wersji 60 minutowej po EN), PUT Security Day w Poznaniu (w wersji 60 minutowej po PL), oraz na Security PWNing w Warszawie (w wersji 30 minutowej po PL). W każdym razie obiecałem, że slajdy udostępnię, więc oto i są:

Slajdy PL: click (Google Docs; File→Download as jeśli kogoś interesuje inny format)
Video PL: PUT Security Day

Slajdy EN: click (Google Docs; File→Download as jeśli kogoś interesuje inny format)
Video EN: code::dive 2018

I tyle.


Czytaj dalej...
Takie krótkie info, że "Serious Cryptography: A Practical Introduction to Modern Encryption" autorstwa Jean-Philippe Aumassona została przetłumaczona na polski i wydana przez wydawnictwo PWN pod polskim tytułem "Nowoczesna kryptografia: Praktyczne wprowadzenie do szyfrowania". O książce wspominałem już na livestreamie (kilkukrotnie), ale wspomnę i tutaj - wg. mnie to świetna pozycja wprowadzająca do praktycznej kryptografii, tj. jeśli ktoś jest zainteresowany np. CTFami i zadaniami z kategorii "crypto", to jest to pozycja w zasadzie obowiązkowa. Podobnie w przypadku szukania błędów w kodzie korzystającym z dobrodziejstw kryptografii, np. przy okazji pentestów czy code security review (jak wiecie jest różnica między bezpiecznym algorytmem szyfrującym a faktycznym bezpiecznym użyciem takiego algorytmu w programie).

Księgarnia PWN: https://ksiegarnia.pwn.pl/Nowoczesna-kryptografia,747540506,p.html
Inne księgarnie (ceneo): https://www.ceneo.pl/62138294

P.S. Jestem jednym z patronów medialnych polskiego wydania tej książki, stąd mój blurb na jej okładce. Jest to pierwsza i póki co jedyna książka w Polsce (poza .pl była jeszcze ta), której patronuje (srsly, good stuff ;>).
P.S.2. Moje zadanie Better ZIP z Google CTF 2018 Quals było zainspirowane kilkoma stronami z tej książki :) (zadanie wraz ze źródłami, wideo z rozwiązania (start 28:45))


Czytaj dalej...

W najbliższy czwartek będzie całkiem ciekawy stream (moim zdaniem) zaproponowany przez dwie osoby z pewnej grupy Facebookowej* - dodawanie nieśmiertelności do gry Commando na 8-bitowy komputer Commodore 64. Dodam, że celem będzie uruchomienie gry z nieśmiertelnością na prawdziwym C64 - emulator też pójdzie w ruch oczywiście, ale ostatecznie jednak będę chciał przejść Commando nie wysilając się zbytnio na prawdziwym sprzęcie. Dodam, że gra jest na dyskietce 5.25", więc do całości dojdzie jeszcze pobawienie się starymi nośnikami.
* Uhm, szczerze, wymieniłbym z imienia, ale nie mogę znaleźć komentarzy z naszą dyskusją :(

Disclaimer: Nie miałem nigdy C64 (ale "grałem w C64" u kolegów ;>), więc stream będzie bardziej na zasadzie "skoro na x86 zrobiłbym tak tak i tak, to na MOS6510 też tam spróbuje".

Gdzie: https://www.youtube.com/watch?v=RzIZFmkmhFQ
Kiedy: Czwartek (15.03.2018) 20:00 CET

P.S. Przy okazji będzie to okazja do przetestowania mojego "setupu" do streamowania obrazu ze starych komputerów, tj. m.in. karty do przechwytywania HDMI.


Czytaj dalej...

Paweł "pawlos" Łukasik odnalazł ostatni easter egg (tudzież flagę) ukryty w Praktycznej Inżynierii Wstecznej - gratulacje! Dodam, że flaga ta pozostawała ukryta od momentu publikacji książki (listopad 2016) aż do wczorajszego wieczoru, i to pomimo tego, iż przynajmniej od pół roku było wiadomo, że flaga gdzieś tam jest, a na znalazce czeka giftcard (standardowo, na wybrany Amazon).

Szczegółowy opis odkrycia ostatniej flagi można przeczytać na blogu Pawła:
https://ctfs.ghost.io/finding-praktyczna-inzyniera-wsteczna-last-hidden-flag/

Paweł otrzymał ode mnie obiecany giftcard o równowartości 150 USD na wybrany Amazon.

Raz jeszcze gratulacje!

P.S. Hmmm, chyba muszę nową książkę wydać z kolejnymi flagami...
P.S.2. Artykuł o poprzedniej fladze w PIW.


Czytaj dalej...
2017-10-15:

Wyniki Security PWNing Code Golf 2017

security pwning
Zdecydowaną zaletą konkursów typu code golf / sizecoding jest łatwość testowania i oceny prac, dzięki czemu wyniki mogę ogłosić od razu po zakończeniu konkursu. Tak więc, nie przedłużając, chciałbym pogratulować następującym osobom (każda z nich otrzyma po wejściówce na konferencję Security PWNing 2017):

1. Marcin Probola (169 bajtów, zgłoszone 13.10.2017 23:17)
2. Robert Sebastian Gerus (169 bajtów, zgłoszone 14.10.2017 1:15)

Konkurs był niesamowicie zacięty - przyszły aż 22 rozwiązania z przedziału 170-179 bajtów, a w sumie zgłoszone zostały 84 potencjalne rozwiązania (w tym kilka nieprawidłowych).

Listę zgłoszeń można zobaczyć tutaj, a same zgłoszenia tutaj.

Chciałbym podziękować wszystkim za udział - good game, well played :)

P.S. Jako, że jest to blog również o hackingu, to nie sposób nie wspomnieć o bardzo kreatywnych metodach na nagięcie zasad.


Czytaj dalej...
Czas na obiecany konkurs w którym można wygrać dwie wejściówki na konferencję Security PWNing 2017!

Celem konkursu jest stworzenie jak najmniejszego (w rozumieniu wielkości pliku w bajtach) programu, który wypisze na konsoli następujący tekst:


Download: pwning2017.txt - plik z tekstem

Wymagania konkursowe:


Czytaj dalej...
Na przedostatnim streamie pojawiło się zadanie nazwane później "drone scan", w którym, "kontrolując" (trochę na zasadzie gry paragrafowej) skanującego drona, należało wykonać mapę bardzo dużych podziemi pod pewnym zamkiem. Rozwiązań pojawiło się zaskakująco dużo (podsumowanie rozwiązań przygotowane przez foxtrot charliego) i wspominałem już o nich na ostatnim streamie. Rzeczą nierozstrzygniętą pozostał ogłoszony podczas streamu konkurs na najlepszą animację (w postaci video) samego skanowania.

Na dole postu znajdują się wszystkie zgłoszone prace, ale zacznę od ogłoszenia zwycięzcy konkursy, do którego wędruje książka "Wprowadzenie do algorytmów" (czyli słynny "Cormen") ufundowana przez Wydawnictwo Naukowe PWN (podziękowania):

Autor zwycięskiej animacji: blamedrop - gratulacje!

Wszystkie można obejrzeć poniżej:


Czytaj dalej...
Poprzedni livestream był bardzo ciekawy (przynajmniej dla mnie ;>) - miałem okazję zaprezentować prostą implementacje rozproszonego raytracingu, oraz poprosić widzów, by Ci wsparli rendering mocą obliczeniową. Założeniem było, że coś pójdzie "nie tak", a to z uwagi na absolutny brak mechanizmów weryfikacji poprawności wyników (co jest tematem kolejnego streama - w czwartek o 20). I na szczęście się udało, tj. coś faktycznie poszło "nie tak" i wynikowe sceny wyglądały jak przysłowiowa sztuka nowoczesna. W tym krótkim poście chciałem wskazać kilka oddzielnych klas rzeczy, które wpłynęły na ostateczny wygląd renderingu (patrz obraz po prawej).


Czytaj dalej...
Czas ogłosić wyniki konkursu (na śliczny Guru Panic of Death) ogłoszonego na ostatnim streamie, jak i na blogu! Temat lub termin chyba nie za bardzo Wam przypadły do gustu, bo przyszły jedynie trzy prace, które dodatkowo są dość zbliżone jeśli chodzi o poziom skomplikowania (screeny można zobaczyć poniżej). Tym łatwiej o wygraną :)

Niemniej jednak zwycięzca może być tylko jeden, więc bez dalszego przeciągania chciałbym pogratulować pajadamowi (do którego wędruje giftcard 50 GBP), którego praca najbardziej przypadła mi do gustu, jak i wymagała najwięcej pracy.


Czytaj dalej...
Wczoraj podczas livestreamu (OSDev #8) spontanicznie powstał pomysł na konkurs na zrobienie jak najładniejszego "blue screena śmierci" do systemu tworzonego podczas livestreamów (zwanego "Guru Panic of Death" w tym wypadku). Tj. celem konkursu jest takie przerobienie kodu obecnego jądra, by ekran wyświetlany w momencie krytycznego błędu w systemie był jak najładniejszy wizualnie. Zdaje sobie oczywiście sprawę, że to dość subiektywna sprawa, niemniej jednak zastrzegam możliwość wyboru rozwiązania, które mi osobiście się najbardziej podoba (tj. oceniał będę wedle tylko mi znanych kryteriów).

Główną nagrodą będzie giftcard na amazon.co.uk o wartości 50 GBP (jeśli będzie dużo dobrych technicznie i wizualnie prac jest całkiem prawdopodobne, że giftcardów znajdzie się kilka).

Zgłoszenia, w formie patchy LUB plików źródłowych do podmiany LUB pull requestów ORAZ OBOWIĄZKOWO screenshotów należy wysłać do 23:59 CEST (tj. letniego czasu polskiego) dnia 10.06.2017 na mój e-mail (gynvael@coldwind.pl) lub githuba (w przypadku PR; patrz niżej). Potwierdzał odbiór będę w ciągu 24h (w przypadku PR nie będę - na githubie od razu widać czy dotarło); gdybym nie potwierdził w tym terminie spytajcie mnie innym kanałem komunikacyjnym czy na pewno otrzymałem zgłoszenie.

Obecny kod można znaleźć pod poniższym linkiem:
https://github.com/gynvael/stream/tree/master/042-osdev-08

Zasad za dużo nie ma - w sumie są dwie główne:
- testował będę na Bochs'ie (tj. zgłoszenie musi działać pod tym emulatorem)
- celem jest modyfikacja tego 'systemu operacyjnego', a nie Bochs'a :)

Powodzenia! :)


Czytaj dalej...
2017-04-08:

Eksploitacja JITBF

Na początku lutego w 27 odcinku moich livestreamów stworzyłem prosty kompilator JIT dla interpretera ezoterycznego języka Brainfuck. Standardowo dla zaoszczędzenia czasu nie robiłem żadnego sprawdzania błędów, więc w kodzie pojawił się nawet błąd klasy relative write-what-where, który na pierwszy rzut oka był eksploitowalny. Na końcu odcinka zaproponowałem więc drobny konkurs na eksploitacje wspomnianego błędu. Ostatecznie przyszły trzy eksploity, a dodatkowo dwóch autorów zdecydowało się napisać krótkie artykuły o tym jak ich eksploity działają. O samej eksploitacji, jak i o nadesłanych eksploitach, mówiłem w 33 odcinku livestreamów. Kilka linków na początek:

Artykuły / linki do artykułów / exploitów znajdują się poniżej.


Czytaj dalej...

Trochę się tego nazbierało.
  • Dzisiaj w nocy zakończył się CONFidence DS Teaser CTF 2017 (CTFtime, strona CTFa). Zawody wygrała drużyna 217 z Taiwanu, i to w pięknym stylu - rozwiązali wszystkie przygotowane zadania w 16 godzin, 27 minut i 35 sekund - gratulacje! Drugie miejsce zajął australijski zespół 9447, a trzecie Shellphish z USA. Pełne wyniki można znaleźć na stronie CTFa (link na początku paragrafu), a ja skorzystam z okazji, żeby zaprosić na pełnometrażowy CONFidence DS CTF 2017, który odbędzie się standardowo w maju w Krakowie podczas konferencji CONFidence, i który jest otwarty dla wszystkich uczestników konferencji [format: drużyny po 4 osoby, jeopardy, 24-27h, offline, open].

  • Zachęcam do spróbowania swoich sił z moim JavaScript CrackMe - Starblind, które brało udział we wczorajszym CTFie jako RE200, i zostało rozwiązane przez 70 drużyn (wiec można spokojnie uznać, że jest raczej proste) :). Za kilka dni wrzucę źródła + może jakiś artykuł o nim.

  • W najbliższy weekend na AGH (wydział EAIiIB) odbędzie się "Wake Up!" - darmowe warsztaty z kilku działek IT. Zapisy są już otwarte, i może jeszcze są jakieś miejsca. Szczegóły na stronie projektu oraz FB.

  • Po 6 latach dodałem obsługę 64-bitowych (x86) platform (Windows, Linux) do asmloadera. Było tam trochę zabawy, żeby to mini-API działało z tą samą konwencją wywołań (cdecl) niezależnie od platformy, więc bawię się pomysłem nagrania krótkiego vloga o tym / ew. napisania artykułu na blogu - zobaczymy, czy będę miał czas na któreś z tych.

  • Nowy Programista jest już w Empikach (a w nim m.in. Strefa CTF - "BSidesSF 2017 – Pinlock" by Jarosław Górny).
Na tą chwilę tyle ;)


Czytaj dalej...
Z perspektywy czasu jednym z błędów, które zrobiłem tworząc kurs asemblera na YouTube parę lat temu było wprowadzenie mechanizmu ASLR (a raczej: zdanie się na istniejący mechanizm ASLR w mmap/VirtualAlloc) przy wyborze adresu, pod który ma zostać załadowany kod maszynowy do uruchomienia. O ile sam mechanizm dobrze obrazuje realia współczesnych systemów operacyjnych, o tyle triki, które trzeba używać przy adresowaniu relatywnym w x86-32 wprowadzają trochę niepotrzebnego zamieszania dla osób początkujących. Lepszym rozwiązaniem byłoby zaczęcie od jednego, zdefiniowanego adresu gdzie zostanie załadowany program i korzystanie z adresowania bezwzględnego, i wprowadzenie ASLR w połowie/pod koniec serii. Niemniej jednak wyszło jak wyszło, więc od czasu do czasu pojawiają się pytanie o to, dlaczego nie można w łatwy sposób zaadresować fragmentów kodu lub danych korzystając z asmloadera. Poniższy post jest de facto fragmentem odpowiedzi na jedno z takich pytań, której udzieliłem chwilę temu w komentarzach na YT, ale po namyśle zdecydowałem, że może zainteresuje ona więcej osób (a przynajmniej będę miał do czego linkować w przyszłości).

Komentarz na YT autorstwa Kapa PL, zacytowany w całości (istotne z uwagi na przykładowy kod):

Nie rozumiem dlaczego tak nie może być :/ ET to nie jest adres danej linijki kodu ?

[bits 32]
push ET
call [ebx+3*4];printf
add esp,4
push 0
call [ebx];exit

ET:db 'Hello World',0xa,0


Czytaj dalej...
Tematem czwartkowego livestreamu był system plików ext2, a konkretniej próba stworzenia w Pythonie parsera obrazu partycji sformatowanej jako ext2. Ostatecznie po niecałej godzinie pisania udało się poprawnie sparsować superblock i napisać trochę kodu, który miał listować aktywne inode'y, ale ten coś nie chciał działać. Nie chciałem wtedy specjalnie przedłużać streama, szczególnie, że moja wiedza na temat ext2 ograniczała się do fragmentu specyfikacji, który przeczytałem rano przed streamem; obiecałem więc dokończyć na spokojnie w ciągu kilku dni, co też udało mi się wczoraj zrobić.

W skrócie, błąd sprowadził się do tego, że w niektórych miejscach (a w szczególności w polach bg_inode_bitmap oraz bg_inode_table deskryptora grupy bloków) numery bloków są podawane zaczynając od indeksu 1, a nie, jak założyłem, względem indeksu 0. Co więcej (i tutaj za bardzo dokumentacja nie pomagała) okazało się, że niektóre indeksy bloków (np. wskazane przed chwilą pola) są względne wobec początku grupy bloków, a w innych miejscach są to indeksy bezwzględne (tj. względne wobec początku partycji).

Po poprawieniu obu powyższych rzeczy listowanie inode'ów zaczęło (mniej więcej) działać, więc dopisałem jeszcze obsługę linków symbolicznych, katalogów i zrzucania zawartości plików. Ograniczyłem się natomiast tylko do obsługi bloków jawnie podanych w inode, tj. numery bloków podane niebezpośrednio (i_block, indeksy 12-14) zostały przeze mnie zignorowane. Co więcej, nadal kod ma jakieś problemy z inode'ami spoza pierwszej grupy, ale zawsze jest jakiś progres.

Finalny kod źródłowy można znaleźć na moim githubie: https://github.com/gynvael/stream/tree/master/031-ext2.

Poniżej wrzuciłem opis jeszcze kilku innych problemów i zmian w kodzie, które miały miejsce poza streamem.


Czytaj dalej...
DS top2, p4 top5Pierwsze newsy z nowego roku:
  • Dragon Sector zakończył sezon 2016 na drugim miejscu - czyli udało nam się powtórzyć rezultat z 2015 :). Trochę więcej rozpisałem się kilka dni temu na moim FB, więc wspomnę jedynie, że na piątym miejscu sezon zakończył inny polski zespół - p4 - gratulacje!
  • Wyszedł Sekurak/Offline #3, czyli darmowy e-zin o bezpieczeństwie (głównie webowym) prowadzony przez ekipę serwisu sekurak.pl. Link do linków ;)
Na ten moment tyle. "Słoniem w pokoju", jak to lubią mawiać nasi zachodni znajomi, jest pytanie kiedy kolejny stream - prawdopodobnie dopiero w następnym tygodniu, ale jeszcze zobaczymy jak wyjdzie.


Czytaj dalej...
Każdego roku Polskie Towarzystwo Informatyczne organizuje konkurs na "Najlepsze Polskie Książki Informatyczne". Przy okazji tegorocznej edycji wydawca zasugerował zgłoszenie i mojej książki - "Zrozumieć Programowanie" (zeszłoroczna edycja zakończyła się przed premierą ZP) - co też zrobiliśmy (w tym miejscu podziękowanie dla KrzaQ za fizyczne podrzucenie zgłoszenia, jak i również za przygotowanie wymaganego przez regulamin konkursu uzasadnienia zgłoszenia). Ogłoszenie wyników oraz uroczysta gala z tym związana odbyła się dwa dni temu - 30 listopada 2016 - na Uniwersytecie Szczecińskim, gdzie też udał się mój wydawca (Łukasz Łopuszański). Wczoraj rano otrzymałem od niego bardzo krótkiego (3 wyrazy + emotikonka), ale i bardzo pozytywnego mejla: „Dostałeś główną nagrodę 😄”. Jak możecie się domyślić, mój wyraz twarzy szybko dostosował się do sugerowanego przez wspomnianą emotikonkę ;)

Więc tak, to oficjalne: „Zrozumieć Programowanie” otrzymało Główną Nagrodę w konkursie na Informatyczną Książkę Roku 2016 w kategorii książek popularnonaukowych! :)

Należy w tym momencie wspomnieć, że ex aequo Główna Nagroda w tej samej kategorii została przyznana Adamowi Romanowi za "Testowanie i jakość oprogramowania. Modele, techniki, narzędzia" (to taka wielka czarna księga, ponad 1000 stron - stoi zresztą u mnie na półce; gratulacje dla pana Adama!). Książka ta również została wydana przez Łukasza i PWN, więc mój wydawca zdecydowanie miał co odbierać.

Pełną listę laureatów można znaleźć na stronie PTI; wspomnę od razu, iż oprócz Nagród Głównych były przyznawane również Wyróżnienia, a oprócz kategorii książek popularnonaukowych była również kategoria książek naukowych.

P.S. No, to wg regulaminu konkursu (§ 4 pkt. 7 b) teraz mogę pisać, że ZP jest Informatyczną Książką Roku - PTI 2016 :)


Czytaj dalej...
Okładka książki Praktyczna inżynieria wstecznaKsiążka - „Praktyczna inżynieria wsteczna: Metody, techniki i narzędzia” - skończona i oddana do druku, czas więc na zapowiadany post o tym co nam z tej książki wyszło, co się w niej znalazło, kto ją pisał, jaka jest okładka, grupa docelowa odbiorców i gdzie można ją kupić. Będzie też o spotkaniu autorskim.

Losowe informacje o książce

  • Tytuł: „Praktyczna inżynieria wsteczna: Metody, techniki i narzędzia”
  • Autorzy: (w kolejności rozdziałów w książce): Tomasz Bukowski, Grzegorz Antoniak, Tomasz Kwiecień, Mateusz Krzywicki, Marcin Hartung, Gynvael Coldwind, Hasherezade, Maciej Kotowicz, Michał Kowalczyk, Robert Święcki, Piotr Bania i Mateusz Jurczyk
  • Spis treści: PDF
  • Rodzaj książki: techniczna, specjalistyczna, zbiór opracowań/artykułów
  • Poziom trudności: zależny od konkretnego rozdziału - są rozdziały dla początkujących, dla zaawansowanych i dla profesjonalistów; są też ciekawostki dla wszystkich; taki mix
  • Wydawnictwo: Wydawnictwo Naukowe PWN
  • Data premiery: 4.11.2016 (a przynajmniej taki jest plan)
  • Okładka: miękka
  • Liczba stron: 526
  • Przedsprzedaż: na stronie wydawnictwa, agregat (ceny około 65-80 PLN z tego co widzę)
  • E-book: będzie miesiąc po premierze, tj. w okolicach początku grudnia
  • Redaktorzy prowadzący: Gynvael Coldwind, Mateusz Jurczyk
  • Redaktorzy: Tomasz Łopuszański, Małgorzata Dąbkowska-Kowalik
  • Wydawca: Łukasz Łopuszański
  • Korekta merytoryczna: Mariusz Witkowski, Paweł Zakrzewski, a także Michał Kowalczyk
  • Słowa kluczowa: inżynieria wsteczna, formaty plików wykonywalnych, anty-RE, anty-anty-RE, programowanie, CTF, x86, asembler, GNU/Linux, Windows, .NET, CPython, firmware, bezpieczeństwo niskopoziomowe, buffer overflow, format string, mitygacje, obfuskacja, shellcode

Spotkanie autorskie

Spotkanie autorskie odbędzie się w Warszawie 7 listopada (18:00 - 20:00), w Klubie ARCO, który znajduje się przy ul. Bitwy Warszawskiej 1920 r. 19. Technicznie jest to część agendy konferencji Security PWNing, natomiast samo spotkanie będzie otwarte i bezpłatne.

Rejestracja: click

Na spotkaniu będzie większość autorów książki (tj. Tomasz Bukowski, Tomasz Kwiecień, Mateusz Krzywicki, Marcin Hartung, Maciej Kotowicz, Michał Kowalczyk, Robert Święcki oraz Mateusz Jurczyk) i będzie ono miało formę panelu (prowadzonego przeze mnie), a potem odbędzie Q&A jeśli będą pytania. A na końcu oczywiście stała część spotkań autorskich, czyli podpisywanie książek :)
Dodam, że jeśli wszystko pójdzie dobrze (a na to się zanosi), to będzie stoisko PWN z zapasem książek do nabycia.
Na tą chwilę jest to jedyne przewidziane spotkanie autorskie (dość trudno jest zebrać tak liczną grupę autorów w jednym miejscu w tym samym czasie).


Czytaj dalej...
Security PWNing ConferenceJak już wspominałem, 7-8 listopada w Warszawie odbędzie się konferencja Security PWNing Conference, przy której organizacji trochę pomagam od strony programowej. Sama konferencja organizowana jest przez Wydawnictwo Naukowe PWN, natomiast charakter będzie miała mniej akademicki, a bardziej praktyczny/scenowy (w rozumieniu sceny profesjonalistów i hobbystów zajmujących się praktycznym bezpieczeństwem IT). Kilka słów o niej, o tym czym się kierowaliśmy wybierając prelegentów i o nich samych poniżej.

Podstawowe informacje

  • Kiedy: 7-8 listopada 2016
  • Gdzie: Warszawa, Klub ARCO, ul. Bitwy Warszawskiej 1920 r. 19
  • Ile: ~1111 PLN, a z magicznym kodem (Gyn20PWNing) ~888 PLN
  • Język: Polski, z wyjątkiem jednej prelekcji (James Forshaw)
  • Strona konferencji: click


Czytaj dalej...
Ostatnio mam trochę więcej innych zajęć niż zwykle, więc jeszcze nie jestem w stanie podać dat kolejnych livestreamów (choć po cichu liczę, że uda się coś w ciągu tygodnia zrobić). W związku z tym niniejsza "garść" newsów sprowadzi się w zasadzie jedynie do informacji o nowym, niejako jubileuszowym (50), numerze magazynu Programista, w którym jest kilka niezłych perełek, jak i również j00ru i mój artykuł o współczesnym fuzzingu.

Czytaj dalej...
Jak wspominałem już na blogu/streamie, 30 sierpnia (czyli za dwa dni) robimy z xa//vx (czyli autorem książki "HTML5 komponenty", a jednocześnie nadwornym grafikiem vexillium) podwójny 16-godzinny stream, podczas którego spróbujemy zrobić grę multiplayer. Konkretniej, spróbujemy zrobić widzianą z boku grę akcji w stylu takich klasyków jak Liero czy Soldat, przy czym głównym motywem będzie jetpack. W zasadzie od kiedy pamiętam braliśmy z xa udział w tego typu ograniczonych czasowo zabawach, zarówno we dwójkę (click 1, click 2, click 3), jak i drużynowo (click 1, click 2, click 3, click 4, click 5). Czasem wychodziło lepiej (top1-3 na danym compo/konkursie), czasem gorzej (gry nie udało się dokończyć, albo nie zadziałała podczas prezentacji), ale zawsze bawiliśmy się nieźle - stąd też pomysł, żeby ćwiczenie powtórzyć, tyle, że tym razem na streamie.

Przy okazji złożyło się o tyle fajnie, że odezwał się do mnie ebookpoint.pl (czyli internetowa księgarnia z grupy Helion) z propozycją zorganizowania promocji mojej książki na ich fanpage'u na FB (tak, dobrze pamiętacie, moją książkę wydał PWN; natomiast również można ją kupić w e-bookowej księgarni Helionu), więc postanowiliśmy połączyć obie aktywności w jedną. Co więcej, podczas streama będzie sporo zniżek w ebookpoint.pl (z informacji które dostałem mają być zniżki na około 500 tytułów), a także będą promocje na drukowane wydanie naszych (tj. xa i mojej) książek w księgarni PWN (trochę więcej szczegółów pojawi się podobno w przeddzień streamów / w dniu samego streama). Konkretny plan na dzień znajduje się poniżej (w treści posta).


Czytaj dalej...
2016-08-20:

Konkurs - gra w 1234 bajtach

konkurs
Przez następny tydzień będę trochę zajęty niestety, więc streamu się raczej nie uda zrobić (kolejny stream będzie więc 30 sierpnia, od 8 rano do północy, 16h - więcej szczegółów bardzo niedługo), więc, żeby zbyt nudno nie było, zróbmy sobie kolejne compo. TL;DR: tym razem tematem będzie gra w 1234 bajtach; nagroda jak ostatnio - amazon.co.uk gift card na 100 GBP. Szczegóły w treści posta.


Czytaj dalej...
Pamiętacie mój crypto-challenge "Pocztówka z Doliny Krzemowej" (#1, #2)? Przyszła kolej i na mnie - dzisiaj w poranno-popołudniowej poczcie znalazłem pocztówkę od KrzaQ, która zdecydowanie wymagała rozszyfrowania przed przeczytaniem. Poniżej zdjęcie samej pocztówki, jak i rozwiązanie zagadki w kilku krokach.

Czytaj dalej...
Jezioro Bodeńskie na granicy Szwajcarii z Niemcami.Wróciłem do Konfederacji, więc czas i wrócić do livestreamów. Planuje dwa na najbliższy tydzień:
  • 12.07 19:00 na gynvael.coldwind.pl/live - wstęp do fuzzingu, w ramach kilkuodcinkowej przerwy od OSDev.
  • 15.07 19:00 na gynvael.coldwind.pl/live-en - pierwszy stream po angielsku, na którym pokaże rozwiązanie bliżej nieokreślonego zadania z zeszłych CTFów (ponieważ to będzie pierwszy odcinek w tym języku, to pewnie zacznę od czegoś mi znanego, tj. albo zadania, które sam zrobiłem, albo takiego, które już kiedyś rozwiązywałem). Link do /live-en w tej chwili nie jest jeszcze aktywny, natomiast prawdopodobnie będzie prowadził na livecoding (w ramach drugiej szansy dla tej platformy).
Z innych tematów, skończył się konkurs wiecha, który organizował na naszym kanale IRCowym (#gynvaelstream @ freenode). Wyniki, prace oraz ich analizę można znaleźć na blogu wiecha. Zachęcam do rzucenia okiem - samo zadanie konkursowe było proste, ale podejścia do jego rozwiązania bardzo różne. Ostatecznie nagrodę (w postaci książek) otrzymali mrx1 oraz google13 - gratulacje! Równocześnie podziękowania dla wiecha za organizacje kolejnego konkursu, jak i zasponsorowanie nagród!

I tyle - do zobaczenia jutro na streamie.


Czytaj dalej...
2016-06-18:

Streamowe konkursy - wyniki

livestream
Najpierw wyniki losowania trzech egzemplarzy książki „HTML5 Komponenty” autorstwa Sebastiana "xa" Rosika. Książka została wydana przez wydawnictwo PWN, które jest jednocześnie fundatorem nagród - dzięki! Magiczny skrypt we współpracy z /dev/urandom wylosował następujące trzy osoby: emzet, Lonek Wolf, pajadam - gratulacje! Mejle z prośbą o adres już do Was wysłałem (no, nawet dostałem już część odpowiedzi).


Czytaj dalej...
Kilka notatek po ostatnim streamie + data kolejnego:
  • W środę/czwartek odbył się w Belluminar - CTF rozgrywany w Pekinie (przy czym dodatkowi gracze mogli grać również online), który był dość eksperymentalny jeśli chodzi o... wszystko. Przede wszystkim udział wziąć mogły jedynie zaproszone drużyny; zgodnie z opisem zostało zaproszone 10 najsilniejszych drużyn na świecie, w tym 5 według rankingu CTFTime.org (w którym nasza drużyna trzyma się w okolicach top1-3 od kilku lat), a 5 kolejnych spośród azjatyckich drużyn (ostatecznie znalazły się tam topowe drużyny z Chin, Taiwanu i Korei). Co więcej, zadania były przygotowywane również przez same drużyny (a nie przez organizatorów) - każda drużyna przygotowywała dwa zadania, z czego jedno musiało być związane z Windowsem; swoje zadania należało również zaprezentować po samym CTFie, za co otrzymywało się dodatkowe punkty (i to całkiem sporo). Interesująca była również pula nagród - top1 otrzymywał 50 tyś. USD, top2 30 tyś., a top3 20 tyś. Dragon Sector wywalczył czwarte miejsce, więc niestety musieliśmy obejść się smakiem (so close!). Dodam, że w skład reprezentacji Dragon Sector do Pekinu polecieli: valis, Redford, mak, jagger oraz Lympho - kudos! Ostatecznie wygrał zespół KeyResolve, który de facto składał się z członków koreańskiego DEFKOR (jest to zespół który wygrał ostatni DEF CON CTF w Vegas) oraz amerykańskiego PPP (którego chyba nie trzeba przedstawiać).
  • Następny stream: piątek 10.6 19:00 na gynvael.coldwind.pl/live. Jak wspominałem, będzie to powtórzenie mojej prelekcji z KrakWhiteHat pt. "Wstęp do RE". Na jeszcze kolejnym streamie wrócimy do OSDev, dodamy A20 i spróbujemy uruchomić to co mamy na prawdziwym komputerze.
  • Wczorajszy stream można znaleźć na YT - o dziwo tym razem wszystko zadziałało (no, może nie za pierwszym razem, ale ostatecznie zadziałało) i udało się skończyć o czasie. Kod można znaleźć na moim githubie. Kilka dodatkowych notatek z czatu (które wychwyciłem dopiero po streamie) znajduje się pod tymi newsami. Na streamie ogłosiłem również konkurs:
    KONKURS (tym razem skillowy)
    DO: 12.06 23:59
    Napisz efekt graficzny:
    - działający w trybie tekstowym
    - działający jako bootloader
    - zajmujący max 512 bajtów (stage1 ;>)
    - działający minimum pod Bochs
    Nagroda: gift card 100 GBP na amazon.co.uk
    Kod źródłowy oraz wersję skompilowaną (i najlepiej również bochsrc) należy podesłać na mojego mejla do następnej niedzieli do godziny 23:59; po wysłaniu mejla plz dajcie mi również znać w komentarzach/na ircu/gdziekolwiek, że wysłaliście, tak abym mógł potwierdzić, że praca doszła. Good luck!



Czytaj dalej...
(Post gościnny by reenz0h)
Na ostatnim streamie OSDev#3 Gynvael kontynuował rozwijanie bootloader'a, aby ostatecznie wejść w tryb long mode. Ustawił odpowiednie parametry procesora (GDT, PAE, EFER MSR, etc.), ale próba wejścia w stronicowanie przy użyciu 1GB stron nie powiodła się. Emulator Bochs przerywał działanie z błędem "physical address not available":

<bochs:1> c
(0).[166562263] ??? (physical address not available)
Next at t=166562264
(0) [0x00000000fffffff0] f000:fff0 (unk. ctxt): jmp far f000:e05b         ; ea5be000f0

Postanowiłem znaleźć trochę wolnego czasu i spróbować uruchomić ten kod u siebie.


Czytaj dalej...
Wczoraj podczas livestreamu m.in. pokazywałem jak rozwiązywało się zadanie plaiddrive (WEB450) z PlaidCTF 2016, i jak to zwykle bywa podczas demo ciekawszych rzeczy, coś nie zadziałało. Konkretniej, w kluczowym momencie chciałem pokazać, że można przejść po ramkach obiektu window niezależnie od originu przebywanych ramek, aż do ramki z tym samym originem; a następnie dostać się do jej treści - i zamiast dostępu do location/document dostałem widoczny wyżej wyjątek, że originy się nie zgadzają. Stwierdziłem wtedy, że pewnie robię jakiś głupi błąd - i w rzeczywistości tak było ;)


Czytaj dalej...
Trzy newsy (w kolejności chronologicznej):
  • Livestream
    Kiedy: 13.04 (środa) od 19:00
    Temat: 15 minut losowych rzeczy, a potem OSDev #1
    Gdzie: mój kanał YT (link do streama pojawi się tutajEDIT click /EDIT oraz w sekcji „Live now” na YT).

  • CONFidence CTF 2016 Teaser
    Co to: organizowany przez nas (Dragon Sector) teaser CTF.
    CTF format: jeopardy, team, online, teaser (6-12 zadań), 24h
    Gdzie: https://ctf.dragonsector.pl/ - rejestracja jest otwarta
    Nagrody: związane z głównym CTFem, który odbędzie się podczas konferencji CONFidence 19-20 maja w Krakowie (wejściówki, pokrycie kosztów przejazdu, noclegi - szczegóły na stronie CTFa)
    CTFTime: click; CTF jest liczony do klasyfikacji generalnej

  • KrakYourNet
    Co to: 5-dniowa konferencja ze szkoleniami i CTFem; na miejscu w Krakowie;
    Kiedy: 19-23 kwietnia
    Gdzie: AGH
    Ile: bezpłatnie (łącznie z warsztatami; przy czym trzeba się zapisać)
    Temat: bezpieczeństwo sieciowe, IoT, aplikacje mobilne
    CTF: Jest - Capture the FlAGH (rejestracja na stronie konferencji - trzeba myszką najechać na czerwony kwadrat z napisem "Capture The Flag" w sekcji Warsztaty)
    CTF format: jeopardy, team (limit: 3 osoby), offline, tylko dla studentów poniżej 26 roku życia, 3 dni
    CTF nagrody: staż w EY, kindle, słuchawki, powerbanki, inne
    CTFTime: CTF nie jest liczony do klasyfikacji generalnej
    WWW: http://krakyournet.pl/
I tyle póki co.


Czytaj dalej...
Mój wydawca podrzucił mi informacje, że wypuszcza książkę o Minecraft. Przyznaję, że w Minecraft nigdy nie grałem i kojarzy mi się z dziwnymi zadaniami na CTFach, grafikami z miliona klocków czy masą książeczek/kubków/podkładek/etc z motywami z Minecrafta, które można znaleźć w lokalnych księgarniach (serio, mają całe póki tego). W każdym razie, odpisałem coś w stylu "to nie wygląda jak coś co zainteresuje moich czytelników" (dla nowych czytelników: na moim blogu nie można wykupić reklamy, ani kupić zamówionego/sponsorowanego posta - jeśli uważam, że coś nie zainteresuje programistów którzy czytają mojego bloga albo mnie, to tego po prostu nie wrzucam), na co Łukasz (mój wydawca) dopowiedział "skryptuje się to w Pythonie" - i przyznaje, że tu mnie miał, z dwóch powodów. Po pierwsze, jak wiecie, lubię Pythona. Po drugie, lata temu miałem okazję pobawić się trochę w skryptowanie innej gry (przy czym w escript, a nie w Pythonie - być może część z Was nawet pamięta jakieś moje tutoriale, choć tylko kilka ich wyszło) i się świetnie przy tym bawiłem. W każdym razie doszedłem do wniosku, że być może kogoś (szczególnie młodszego, bo książka jest o podstawach programowania pisana dla młodszych odbiorców) zainteresuje, szczególnie, że wiem też, że część czytelników ma już potomków - stąd ten mini-post.

W każdym razie, o książce można poczytać na stronie wydawcy:
http://ksiegarnia.pwn.pl/Nauka-programowania-z-Minecraftem,331284557,p.html

Z tego co widzę teraz jest faza preorderu, a sama książka wychodzi 25 kwietnia. Książka jest z tej samej serii co dwie inne o których pisałem wcześniej na blogu - o Pythonie (ale bez Minecrafta) i o JS. Dodam jeszcze na koniec, że wygląda na to, że będę miał 3 egzemplarze do rozdania na livestreamie (domyślam się, że Was raczej nie zainteresuje, ale każdy ma jakąś rodzinę/znajomych/dzieci/etc, tj. kogoś, kto mógłby się ucieszyć z prezentu tego typu).


Czytaj dalej...
Rysowanie własnego modułu.Czas na Secunda Aprilis (no OK, bardziej Quarta Aprilis), czyli wytłumaczenie/sprostowanie Prima Aprilisowego postu. W dużym skrócie, w tym roku na pierwszego kwietnia opublikowałem "pierwszą część wideo-tutoriala języka Python", w której pokazałem jak "w prosty sposób" stworzyć funkcje literującą podany napis, a następnie jak narysować (sic) moduł Pythona z ową funkcją w programie Microsoft Paint. Oba podane przykłady były pokazane w bardzo bardzo krzywym zwierciadle, niemniej jednak oba były w pełni działające - stąd też postanowiłem poświęcić trochę miejsca, żeby dokładnie(j) wytłumaczyć co tam się w zasadzie działo. Dodam, że żart wyszedł mi lepiej niż się spodziewałem, co wnioskuje po tym, że kilka osób zorientowało się, że "coś jest nie tak" dopiero jak odpaliłem Painta :)


Czytaj dalej...
2016-04-02:

Livestream: wyniki konkursu

livestream
Screen z pracy pajadam'aO konkursie na dokończenie xoxoxo pisałem już wcześniej na blogu, jak i mówiłem podczas livestreamów. W skrócie, chodziło o to by trochę "uładnić" grę - dodać jakieś ASCII-arty, kolory, itp., a do wygrania była prenumerata Programisty (w tym miejscu wielkie podziękowania dla redakcji za dorzucenie drugiej prenumeraty do puli nagród!). Ostatecznie wyszło dość kameralnie - tj. zostały zgłoszone dwie pracę, a komisja w N-osobowym składzie: KrzaQ, KrzaQ oraz KrzaQ, zdecydowała o przyznaniu miejsc w następującej kolejności:

1. pajadam
2. masakra

Gratulacje!

Czytaj dalej...
Rysowanie własnego modułu.Tak jak wspominałem na poprzednim streamie, zacząłem nagrywać video-kurs języka Python. Pierwszy odcinek już jest na YouTube - pokazuje w nim jak napisać proste Hello World, oraz jak tworzyć własne funkcje oraz rysować własne moduły. Kod stworzony podczas odcinka znajduje się oczywiście na githubie - dodam, że testowałem go jedynie pod Windows 10 na Python 2.7.3 64-bit. Miłego oglądania!


Czytaj dalej...
2016-03-28:

Zagadka zmniejszającej się konsoli

winapi:windows:re
ExpressCard z Firewire używany do debuggowania Windows 10Podczas jednego ze streamów bawiłem się wczytywaniem rozpakowanych plików .xp (REXPaint), czyli ASCII-artów, w których zarówno kolory czcionek, jak i kolory teł mogły być dowolnie zdefiniowane (w rozumieniu RGB). Ich wyświetlenie wymagało zmiany domyślnej palety kolorów w Windowsowej konsoli, co jest jak najbardziej możliwe. Nieprzewidzianym efektem ubocznym zmiany palety kolorów była zmniejszająca się konsola - każde wywołanie pary GetConsoleScreenBufferInfoEx + SetConsoleScreenBufferInfoEx powodowało utratę jednego wiersza i jednej kolumny (ew. czasem, w zależności od ustawień, jedynie jednego wiersza). Z efektem tym zresztą spotkałem się zresztą kilka dni wcześniej, podczas gdy siedzieliśmy z masakrą (znanym Wam pewnie jako moderator na livestreamie) nad Pythono'wym ctypes i wywoływaniem wspomnianych wcześniej funkcji, jednak ani wtedy, ani podczas streamu nie zagłębiłem się w temat na tyle, żeby dojść co jest problemem. Wczoraj jednak znalazłem trochę czasu.


Czytaj dalej...
Okładka sekurak offline #2.Serwis sekurak opublikował przed kilkoma godzinami drugi numer e-zina sekurak offline - jest dostępny w PDF, Mobi i EPUB, i ma 65 stron (w PDFie). Autorami artów w tym numerze są: Michał Bentkowski (aż cztery artykuły), Rafał "bl4de" Janicki, Adrian "Vizzdoom" Michalczyk (dwa artykuły), Marcin Bury i Bartosz Jerzman. Dodam, że numer jest poświęcony przede wszystkim websecurity, choć i o crypto coś się znajdzie.

Czytaj dalej...
Od jednego z czytelników (pozdrowienia dla Jakuba) dostałem pytanie odnośnie samego początku rozdziału „Synchronizacja” (rozdział 9 mojej książki), gdzie to podałem przykładowy kod w Pythonie, który sprawdza czy plik istnieje, a jeśli nie, to go tworzy. W książce był to w zasadzie „anty-przykład” - kod ten jest dość oczywiście podatny na race-condition (sytuację wyścigu), ponieważ sprawdzenie czy plik istnieje i jego utworzenie w tym wypadku to dwie oddzielne operacje, a więc taki plik mógłby w tzw. międzyczasie powstać (tj. istnieje pewne okno czasu, w którym możliwe jest utworzenie pliku). W zależności od przypadku może to być zupełnie nieistotne sytuacja lub poważny błąd bezpieczeństwa pozwalający na podniesienie uprawnień. Czytelnik wskazał jednak, że nigdzie (w okolicy) nie napisałem jak to powinno być poprawnie zrobione - stąd ten post.


Czytaj dalej...
Taki krótki news: na stronę serwisu książki wrzuciłem pierwszą część erraty, a na GitHub kody źródłowe, które trafiły do książki. Oprócz tego, również na GitHubie, założyłem repozytorium na rozwiązania ćwiczeń z książki, jeśli ktoś tako chce podesłać - pull requesty mile widziane (pierwsze trzy rozwiązania już są opublikowane).


Czytaj dalej...
Dwie sprawy, o których już pisałem na FB:

1. Udostępniłem wszystkie ilustracje z książki w trochę lepszej jakości (długi bok ustawiony na 1600 px).
2. W podpowiedzi we fladze Juliet jest drobny błąd, w związku z czym wrzuciłem pewną podpowiedź na stronę z flagami.

Póki co tyle ;>


Czytaj dalej...
P4CTF 2015 odbył się z miniony weekend i organizowany był przez polski zespół CTFowy p4, związany poniekąd z serwisem 4programmers.net (i który niedawno połączył się z innym polskim teamem - Amber Chamber). CTF ten można scharakteryzować tagami: single player, jeopardy, entry-level, online. W każdym razie po tym CTFie jest wysyp materiałów, zarówno od strony write-upów jak i informacji zza kulis. Linki poniżej - miłej lektury!

Statystyki i trochę kulis ← bardzo polecam w szczególności to
Write-upy i rozwiązania
Scoreboard + zadania (czyli strona CTF)

Gratulacje dla akrasuski1 za top1, a także dla wszystkich, którzy wzięli udział i dzielnie walczyli!
p4 - świetna robota z CTFem - do zobaczenia na CTFie Chaos Communication Congress za kilka dni!


Czytaj dalej...
Okładka magazynu Programista, nr 42Krótki news: wyszedł nowy numer magazynu Programista (42) - można go znaleźć w Empiku / w prenumeracie / pisząc mejla do redakcji. Czytałem wcześniej (zaleta bycia recenzentem) dwa artykuły, które trafiły do tego numeru i które sądzę, że zainteresują czytelników mojego bloga: „Piszemy własny RTOS!” (Radosław Biernacki) oraz „HITCON CTF 2015 – Rsabin” (Jarosław Jedynak i Stanisław Podgórski z teamu p4). Ten pierwszy jest jednym z ciekawszych artykułów które czytałem w Programiście i traktuje o (jak nazwa wskazuje) pisaniu własnego systemu czasu rzeczywistego (w tym przypadku w kontekście platformy AVR, ale większość kodu jest uniwersalna / kompatybilna z x86). Ten drugi jest natomiast solidnym write-upem o wysoko punktowanym zadaniu z kategorii crypto z HITCON CTF 2015 - zdecydowanie polecam.

Czytaj dalej...
Bardzo krótki news: wrzuciłem wersję bardzo-alpha serwisu książki; póki co można tworzyć konta i wrzucać flagi. Zachęcam do testów - https://zrozumiecprogramowanie.pl/ (HTTPS only). W następnym tygodniu postaram się podpiąć kolejną część serwisu (erraty). I tyle.


Czytaj dalej...
Nadal w temacie książki - trzy newsy (a w zasadzie dwa i brak newsa): e-book (Mobi, EPUB) "Zrozumieć Programowanie" jest "już" dostępny (nie jest źle, tylko tydzień opóźnienia) - szybki link do ibuk.pl (gdzie obecnie jest najtaniej wg moich informacji - o tym "dlaczego" napiszę więcej w treści posta); wydawca udostępnił również jeden pełen rozdział książki ("Procesy") do pobrania w formie Mobi/EPUB/PDF (trzeba podać maila) - szybki link do it.pwn.pl; a serwisu jak nie było, tak nie ma - TL;DR: niestety tylko w weekendy obecnie mam czas, żeby przy nim siedzieć; liczyłem, że w zeszły weekend uda się coś już wrzucić, ale wygląda na to, że dopiero w nadchodzący uda się to faktycznie zrobić. A teraz jeszcze raz to samo...


Czytaj dalej...
Oficjalnie premiera książki była we wtorek, tj. od wtorku powinny do Was docierać zamówione egzemplarze (i z tego co mi wiadomo, po licznych fotkach wrzucanych na fb/mikroblogach/twitterze/etc, faktycznie docierają mniej lub bardziej sprawnie, a pierwsze literówki już zostały odnalezione). W związku z tym stwierdziłem, że napisze jakiś nowy post z kilkoma informacjami różnymi związanymi z książką, jej dystrybucją, spotkaniami autorskimi, serwisem książki itp. O części z nich już pisałem tu i tam, ale uznałem, że dobrze będzie je zebrać z wpisów/komentarzy/fb/etc w jedno miejsce.


Czytaj dalej...
Zgodnie z przewidywaniami, o których pisałem na FB kilka dni temu, pierwotny (już raz rozszerzony) nakład mojej książki rozszedł się w całości (na marginesie: WOW - dzięki za zaufanie!). Mój wydawca od razu umówił dodruk w drukarni, natomiast chwilę to potrwa i kolejny nakład będzie gotowy dopiero w drugiej połowie listopada. A więc wysyłka egzemplarzy zamówionych od mniej więcej dnia wczorajszego nastąpi dopiero po ich wydrukowaniu - za opóźnienia bardzo przepraszamy. Z uwagi na to książka będzie niedostępna w przedsprzedaży od dzisiaj do poniedziałku. W poniedziałek sprzedaż (w tym ostatni dzień przedsprzedaży - w końcu we wtorek premiera ;>) ruszy ponownie, właśnie tych egzemplarzy, które będą drukowane w listopadzie. Raz jeszcze przepraszam za problem (choć od strony autora - it's a good problem to have).


Czytaj dalej...
Dzisiaj w okolicach południa rozpoczęła się przedsprzedaż mojej książki - „Zrozumieć Programowanie” (W końcu! Magiczne ilości czasu zeszły na jej napisanie / doszlifowanie ;>). Na stronie przedsprzedaży w zakładce "Zobacz więcej" można znaleźć kilka pierwszych stron książki, jak również wstęp (mój) i przedmowę (j00ru), a także (w sąsiedniej zakładce) oficjalny spis treści. Co nieco więcej o książce pisałem już przy okazji jednego z poprzednich postów; w tym poście napiszę tylko co się zmieniło od tamtego czasu.

Czytaj dalej...
Nieczęsto wrzucam na bloga informacje o wychodzących książkach, z którymi nie mam nic wspolnego (przychodzą mi na myśl tylko dwie okazje: analiza merytoryczna pewnej książki oraz mini e-książka Xa), niemniej jednak mój wydawca podrzucił mi ostatnio dwie pozycje, które uderzyły w nostalgiczną nutę i o których postanowiłem przynajmniej wspomnieć w formie krótkiej notki. Co ciekawe, nie jestem targetem tych książek. Ba, nie sądzę, żeby większość czytelników była bezpośrednio grupą docelową - otóż książki są przeznaczone dla najmłodszych. Mowa o "JavaScript dla dzieci. Programowanie na wesoło" (premiera była w poniedziałek) oraz "Python dla dzieci" (premiera w piątek). Tak więc post ten zainteresuje raczej starszych czytelników, będących w posiadaniu przedstawicieli grupy docelowej ;)


Czytaj dalej...
okładka Programisty 39W poprzednim poście wspominałem, że fragmenty mojej książki przedpremierowo będzie można przeczytać m.in. w nadchodzącym numerze magazynu Programista - numer ten powinien pojawić się dzisiaj w Empikach i powoli docierać do prenumeratorów.

Czytaj dalej...
fragment okładki książkiJak wspomniałem już na mikroblogu na 4programmers.net, kilka dni temu moja książka („Zrozumieć Programowanie”) trafiła do pierwotnego składu - to znaczy, że jest już napisana i po edycji. Została ostatnia korekta i, już niedługo, druk. W tym poście chciałem napisać coś o książce, jak i również o podcastach do których chce wrócić.

Czytaj dalej...
Michał Sajdak dał mi znać, że przed chwilą został opublikowany pierwszy numer Sekurak/Offline - e-zinu (PDF/EPUB/MOBI) o bezpieczeństwie. Pierwszy numer w całości poświęcony jest bezpieczeństwu web-aplikacji i jest tam opisane przede wszystkim sporo podstaw (może warto podrzucić numer programistom webowym w swojej firmie?).


Czytaj dalej...
Drodzy czytelnicy mojego bloga - jak w temacie posta: Preferujecie książki techniczne (550 stron) w twardej oprawie czy w miękkiej oprawie? Odpowiedzi prosiłbym wrzucać w komentarzach.


Czytaj dalej...
Wracając do tematu książki i tłumaczenia angielskich technicznych terminów na język polski, zebrała mi się kolejna seria słówek, z których tłumaczeniem mam pewien problem. Co więcej, na co dzień często używa się angielskich wersji tych słów, co nie ułatwia sprawy. Stąd też chętnie przedyskutuje z Wami (czytelnikami mojego bloga) potencjalne tłumaczenia słów. Chętnie też zapoznam się z alternatywnymi tłumaczeniami.


Czytaj dalej...
Jednej rzeczy, której mi brakowało na polskiej scenie CTF był jakiś sajt na którym zainteresowani mogą się spotkać i dobrać w teamy. Hintowałem raz czy dwa, że coś takiego by się przydało, no i ostatecznie wynająłem pewną firmę, żeby na szybko coś takiego zrobiła: http://ctfteam.pl.


Czytaj dalej...
W komentarzach do ostatniego postu została mi zwrócona uwaga (całkiem słusznie zresztą), że ostatnio nie wrzucam nic technicznego - w zasadzie same ogłoszenia o DS/Programiście/książce/książce Xa/CTFach/etc. Więc, zgodnie z życzeniem czytelników, będzie to post częściowo techniczny. A częściowo rant, na to, że najwyraźniej trzeba być osobą techniczną, żeby można sobie spokojnie pograć w gry komputerowe (i to nie z winy gier)...


Czytaj dalej...
TL;DR: PWN daje dostęp do 1500 ebooków (via wirtualna czytelnia, na 7 dni) za wypełnienie ankiety; wyszedł nowy Programista, jest i nowa promocja. Szczegóły poniżej.


Czytaj dalej...
Rok temu z przyjemnością pisałem, że nasz (powstający jeszcze wtedy) team CTFowy zakończył sezon 2013 na trzecim miejscu w klasyfikacji generalnej prowadzonej przez CTFTime.org. Cel w sezonie 2014 był jasny - zakończyć sezon na pierwszym miejscu. Miło jest mi napisać, że plan udało się zrealizować :) (P.S. w czwartek od 12:00 odbędzie się nasze AMA o CTFach/etc na wykop.pl).


Czytaj dalej...
Jak już wspomniałem na FB, jutro wieczorem zaczyna się ostatni CTF w sezonie 2014 - 31C3 na konferencji Chaos Communication Congres w Hamburgu. Jego waga w klasyfikacji generalnej (CTFTime.org) wynosi 70, a więc zwycięski zespół dostanie 140 pkt do rankingu.


Czytaj dalej...
Przez "ebook" rozumiem krótką książeczkę (50 stron) dostępną w PDFie, taką jak to co poprzednio z j00ru wypuściliśmy. Wydał ją (jak i w naszym przypadku) PWN i można ją znaleźć na IT.PWN.PL (dokładny link poniżej).


Czytaj dalej...
Szybkie info: wyszedł (tj. powinien być już w Empikach) nowy numer Programisty. Spis treści można znaleźć tu, a podgląd numeru na YT tam (huh, tego jeszcze nie widziałem, fajny pomysł). Jest w nim oczywiście kolejne "Zdobyć flagę..." w Strefie CTF, tym razem autorstwa Michała "Redforda" Kowalczyka z Dragon Sector, który pisze o zadaniu "Get your gatling at Garrettling!" z Hack.lu 2014 CTF (który to CTF zresztą wygraliśmy). Dodam jeszcze, że numer ma delikatnie ponad 100 stron (czyli więcej niż zwykle) a wraz z nim jest pewna promocja - jeśli kupi się Programistę w Empiku, to można od redakcji dostać 3 dowolne numery w wersji elektronicznej (wystarczy wysłać im fotkę/skan paragonu z widocznym aktualnym numerem na adres redakcji - redakcja@programistamag.pl - wraz z info które numery by się chciało).


Czytaj dalej...
Jak już wspominałem, wygląda na to, że piszę książkę. W komentarzach pod poprzednim, a zarazem pierwszym, postem o niej sporo miejsca poświęciliście na tłumaczenie polskich terminów - i słusznie. Jak wiecie, w polskojęzycznej literaturze i pracach naukowych czasami spotyka się dość dziwne tłumaczenia (kilka przykładów poniżej), których de facto nie używa się w codziennych dyskusjach z kolegami w zespole, znajomymi ze środowiska, czy w dyskusjach widywanych na szeroko pojętej scenie informatycznej. Stąd też zasugerowałem w komentarzach, że będę spisywał co poniektóre terminy i wrzucał na bloga celem przedyskutowania z Wami której wersji tłumaczenia/spolszczenia najlepiej użyć. Niniejszy post jest pierwszym z tej serii - generalnie wszelkie sugestie i uwagi mile widziane :)


Czytaj dalej...
Krótki news: dostałem informacje, że w piątek o 20:00 zaczyna się online CTF, indywidualny (single-player), w stylu jeopardy (zadania do rozwiązania), organizowany przez wrocławską firmę PGS Software. Zadanka mają być w większości entry-level, więc jest to zdecydowanie dobra okazja również dla osób, które nigdy wcześniej nie grały, a chciałyby spróbować. Z tego co widzę na stronie, to za top1-3 będą również nagrody.


Czytaj dalej...
Co prawda nieśmiało wspominałem już w kilku miejscach o tym, że piszę książkę, ale do tej pory nigdzie na moim blogu nie wrzuciłem o tym żadnej oficjalnej informacji. Przyszedł czas by to nadrobić. W dużym skrócie: książka będzie nosić tytuł "Zrozumieć programowanie" i kieruje ją głównie do osób początkujących oraz średnio zaawansowanych zainteresowanych programowaniem (chociaż mam nadzieje, że osoby zainteresowane RE i bughuntem też dowiedzą się z książki czegoś co ich ciekawi, a przynajmniej zyskają wiedzę o oprogramowaniu, która jest potrzebna w tych dwóch działkach). Głównym moim celem jest aby po aktywnym (tj. z wykonaniem sugerowanych ćwiczeń/zadań) przeczytaniu książki czytelnik nabrał samodzielności w rozwiązywaniu problemów związanych z tworzeniem oprogramowania, potrafił poruszać się i analizować nieznany sobie kod bardzo dużych projektów, a także zyskał sporo praktycznej i szczegółowej wiedzy na tematy związane z różnymi składowymi programowania. Generalnie będzie technicznie, praktycznie, szczegółowo i niskopoziomowo - czyli dokładnie tak jak lubię i do czego (jak sądzę) przyzwyczaiłem czytelników mojego bloga.

Czytaj dalej...
W sumie krótki news: przed chwilą zaczął się SECURE 2014/CTF - entry-level, 5 zadań, 45h. Zachęcam do zabawy (są też nagrody) - http://ctf.secure.edu.pl/.


Czytaj dalej...
[TL;DR: PDF/EPUB] W poprzednim poście wspominałem o moim opisie rozwiązania zadania Remote KG z Pwnium CTF 2014, który został opublikowany w Strefie CTF magazynu Programista. Wspominałem też, że było to jedno z najbardziej oryginalnych zadań z jakimi miałem okazję się spotkać. Redakcja Programisty zdecydowała się dzisiaj udostępnienie za darmo wspomnianego write-upu :)


Czytaj dalej...
Jak zwykle latem panuje CTFowa susza (co zmieni się pod koniec roku) i CTFy ograniczają się w zasadzie do finałów offline. Ostatnio były dwa w których braliśmy udział - Nuit du Hack CTF Finals 2014 w Paryżu oraz DEF CON CTF 2014 w Las Vegas, NV. Oba CTFy były w formacie Attack-Defense (w którym mamy sporo mniej doświadczenia niż w Jeopardy w które zazwyczaj gramy), ale udało nam się wywalczyć, kolejno, czwarte oraz trzecie miejsce. Niniejszy update poświęcony jest wyłącznie DEF CON CTF.

Czytaj dalej...
Jak zapewne niektórzy czytelnicy pamiętają, "Diabeł tkwi w szczegółach" to m.in. tytuł mojej serii artykułów z pogranicza programowania i bezpieczeństwa publikowanych w magazynie Programista. Dwie pierwsze części (poświęcone C/C++) udostępniłem do pobrania już wcześniej (C/C++, cz.1, C/C++, cz.2), czas więc i na część trzecią. Jest ona dla odmiany poświęcona problemowi przechowywania i udostępniania plików otrzymanych od użytkownika (atakującego) przez aplikacje webowe. A tak na marginesie, jeśli myślicie o wykupieniu prenumeraty Programisty, to do jutrzejszego wieczoru do prenumeraty redakcja dorzuca ebook jednej z dwóch książek ("Android w praktyce. Projektowanie aplikacji" lub "SCRUM i nie tylko. Teoria i praktyka w metodach Agile.").


Czytaj dalej...
Semi-regularny post o tym, co tam słychać w naszym teamie CTFowym. TL;DR: top1 na finałach PHDays w Moskwie; top2 na kwalifikacjach do DEF CON CTF; na CONFidence odbył się nasz CTF, wygrała liub rozwiązując 12 zadań; również na CONFidence z j00ru mówiliśmy o CTFach; sponsorzy nadal mile widziani.


Czytaj dalej...
Wczoraj późnym wieczorem w Krakowie na ósmej edycji Nocy Informatyka odbyła się moja prelekcja pt. "Food for thought. Kilka przemyśleń na temat bezpieczeństwa IT.". Poniżej znajduje się link do slajdów (jeśli ktoś widział moją prelekcję na Wheel Evening w Warszawie w kwietniu, to zaznaczę tylko, że slajdy przeszły bardzo gruntowną przebudowę). Standardowo, feedback mile widziany.

Czytaj dalej...
Okładka z trybikami, połamanymiPod koniec ubiegłego roku odezwało się do nas (tj. do mnie i j00ru) wydawnictwo PWN z propozycją napisania artykułu/raportu o ciekawych błędach popełnianych przez programistów. Jak wiecie, błędami zajmujemy się na co dzień, każdy z nas wygrzebał trochę swoich ulubionych anegdot i klas bugów, i stworzyliśmy coś, co ostatecznie przyjęło formę 40-stronicowego eBooka. Owy artykuł/mini-książkę można pobrać za darmo (registration-walled) na nowo otwartym serwisie IT PWN w dziale Download. Zachęcamy do lektury :)

Czytaj dalej...
Kolejny semi-regularny post o tym, co tam słychać w naszym teamie CTFowym. TL;DR: jutro (sobota 26.04.2014) o 9:00 czasu polskiego rozpoczyna się nasz teaser CTF; ostatnie wyniki: PlaidCTF - TOP2, Nuit Du Hack CTF Quals - TOP1, CODEGATE CTF Finals (Seul, Korea) - TOP3, Volga CTF Quals - TOP1; na naszym blogu pojawiło się trochę write-upów, a także kolejny został opublikowany w Programiście; poza tym nadal szukamy sponsora.


Czytaj dalej...
W ubiegły czwartek udaliśmy się do Genewy na Insomni'hack (wspominałem o nim przy okazji innego wpisu) - offline'owy CTF w stylu jeopardy z drużynami ograniczonymi do maksymalnie ośmiu osób. Nasz Dragon Sector reprezentowali j00ru, valis, Keidii, Redford, q3k, mak, tkd, oraz ja (patrz zdjęcie na dole postu). Podczas prawie dziesięciogodzinnej batalii (od około 18:30 do 4:00 w nocy) udało nam się najpierw wywalczyć przewagę, a następnie utrzymać ją do końca, zajmując ostatecznie pierwsze miejsce! Przy okazji wykorzystam ten post do innych update'ów związanych z DS.



Czytaj dalej...
Stream rozpocznie się o 18:00, a pytania można zadawać na IRCu - szczegóły poniżej:


Czytaj dalej...
2014-03-11:

Duże ilości naraz ogłoszeń

ctf:conference
Trochę się tego uzbierało. TL;DR: Będę mówić na: darmowym webinarze organizowanym przez Garage4Hackers, o RE, za tydzień; CONFidence 2014 w Krakowie, razem z j00ru, o CTFach; area41 w Zurichu, razem z Ange, o schizofrenicznych formatach plików (more to come); A także: niedługo konferencja IGK w Siedlcach (CFP jeszcze otwarte); oraz SEConference w Krakowie (CFP jeszcze otwarte); DS organizuje indywidualny teaser-CTF online (więcej info niedługo) oraz indywidualny offline-CTF na CONFidence; ostatnie wyniki DS: RuCTF quals TOP2, BKP CTF TOP5, Codegate Quals TOP7 (obecnie TOP1 na CTFtime.org); niedługo lecimy na offline CTFy do Genewy (Insomni'hack) oraz Seulu (finały Codegate) - trzymać kciuki plz ;>. Wersja mniej skompresowana poniżej.


Czytaj dalej...
2014-02-12:

Dragon Sector: 2x TOP1

ctf
Od mojego ostatniego wpisu mineło jedynie dziesięc dni, a już odbyły się dwa CTFy w których wzięliśmy udział: szwajcarski Insomni'hack Teaser oraz humorystycznie nazwany rosyjski Olympic CTF Sochi 2014. Oba CTFy wygraliśmy :)




Czytaj dalej...
2014-02-02:

Rok CTFów z Dragon Sector

ctf:hacking:security
Pierwszego lutego ubiegłego roku założyliśmy z Mateuszem Jurczykiem i Adamem Iwaniukiem team CTFowy "Dragon Sector". Wczoraj minął rok naszej regularnej gry i jest to dobry powód by coś o tym napisać.



Czytaj dalej...
Programista 18 (okładka)Nowy numer magazynu Programista - 11/2013 (18) - jest już dostępny, a w nim m.in dwa nasze artykuły ("Bliżej Silikonu #2" oraz "Zdobyć flagę..."). A tak poza tym jest to wydanie rozszerzone (144 strony), z masą ciekawych tematów.

Czytaj dalej...
Wczoraj wieczorem, zainspirowany pewną dyskusją na IRCu, spróbowałem zrobić funkcję do konwersji 8-bitowej liczby (unsigned char) na string będący reprezentacją bitową tej liczby (i.e. 0xF3 → "11110011"). Oczywiście to bardzo prosta sprawa - w zasadzie jest to jedno z podstawowych ćwiczeń, z którymi sobie radzą nawet bardzo początkujący programiści. Więc... czemu by sobie nie utrudnić zabawy? Dorzuciłem więc założenia: nie może być pętli (nawet rozwiniętej), musi wyglądać matematycznie, oraz w miarę strasznie/nieczytelnie (funkcja pisana w okolicy halloween ;>). I nawet się udało.


Czytaj dalej...
Kilka mniejszych spraw się uzbierało, więc postanowiłem je ubrać w posta i wrzucić tutaj. Po pierwsze, przegapiłem dwa ostatnie numery Programisty, a jest tam kilka fajnych rzeczy o których chciałem wspomnieć. A po drugie, po ponad pół roku istnienia chciałem coś więcej wspomnieć o naszym teamie CTFowym - Dragon Sector (w tym o blogu na który wrzucamy write-upy).


Czytaj dalej...
Zgodnie z obietnicą wczoraj po południu wrzuciłem na YouTube nagranie video mojego wystąpienia pierwszego dnia na SEConference w Krakowie, podczas którego mówiłem o "internalsach" formatu ZIP (było też dość sporo dem).


Czytaj dalej...
Przed chwilą wrzuciłem na youtube video z mojej prelekcji z SEConference 2013, z dnia drugiego (o CTF, etc). Prelekcję z dnia pierwszego (o ZIP, etc) wrzucę w przeciągu paru dni. Pozostając przy tej tematyce, parę dni temu na mój kanał wrzuciłem też dwa podcasty o tym jak rozwiązać dwa zadanka z poprzedniego CTF - SIGINT 2013 - konkretniej crash oraz punchcard; linki poniżej.


Czytaj dalej...
Raz jeszcze o nowym wydaniu Programisty - na forum 4programmers.net został udostępniony fragment naszego artykułu - "Bliżej silikonu #1" - o niskopoziomowych sprawach w x86. Do tego dostałem info o kolejnej promocji od redakcji (ważna do dzisiaj), więc i to wrzucę - a nuż ktoś się skusi (full disclosure: nie, nie dostaje procentu od nagonionych klientów hehehe). Ah, no i jeszcze drobna errata poniżej (spotted by vpiotr - thx!).


Czytaj dalej...
Parę miesięcy temu wspólnie z redakcją Programisty udostępniliśmy pierwszą część artykułu "Diabeł tkwi w szczegółach: C/C++"; czas więc na część drugą!

Czytaj dalej...
2013-06-28:

Video: Multithreading #2

video
Przed chwilą wrzuciłem na YouTube drugą część videotutoriali o wielowątkowości. Odcinek trwa niespełna 40 minut i powinien zainteresować zarówno osoby początkujące, jak i zaawansowane - dość głęboko wgryzam się w nim w internalsy (pozostając jednak w usermode), szczególnie dotyczące różnic między CreateThread a _beginthreadex. Tak więc zachęcam do rzucenia okiem.

Czytaj dalej...
Okładka Programista 6/2013Heads up! Dzisiaj (w wersji elektronicznej, a w piątekweekend w Empikach) wychodzi nowy numer magazynu "Programista", w jubileuszowej, 140-stronicowej formie. Numer ten jest dla mnie szczególny również z innego powodu - pojawi się w nim artykuł "Bliżej silikonu #1", czyli pierwsza część naszej (tj. mojej oraz Mateusza "j00ru" Jurczyka) niskopoziomowej serii z pogranicza osdev/assemblera/low-level internals (o której już wspominałem).

Czytaj dalej...
Wczoraj wczesnym wieczorem skończyła się w Krakowie konferencja SEConference, o której już wspominałem. Było 10 prelekcji (w tym dwie moje - linki do slajdów są niżej) + lightning talk * 2 + nieprzewidziany kolokwio-konkurs który pomagałem przygotować/prowadzić z nagrodą w postaci wejściówki na CONFidence (bardzo miły gest ze strony organizatorów CONFidence!). Ogólnie konferencja, jak na niewielką kameralną imprezę, wypadła bardzo przyjemnie.


Czytaj dalej...
2013-05-05:

IGK 2013 Compo - o naszej grze

igk:compo
(collaborative post by Gynvael, oshogbo & xa)
W Siedlcach odbyła się co roczna konferencja Inżynierii Gier Komputerowych (IGK) - tym razem była to jubileuszowa, 10siąta, edycja. I jak co roku było teamowe compo - 6.5h (ostatecznie przedłużone o jeszcze godzinę) na zrobienie gry na zadany temat w maksymalnie 4 osoby. Tematem było "Artillery Game" (więcej poniżej), a alians Vexillium + Dragon Sector (reprezentowany przez 6 osób na IGK) wystawił dwa teamy po 3 osoby (pod nazwami "Bad Sectors" oraz "Dragons"). Ostatecznie obu naszym teamom udało się stworzyć w pełni działające i ukończone gry (bugi przemilczmy ;p), i zając pierwsze oraz piąte miejsce na 12 drużyn. W niniejszym poście chcieliśmy coś napisać o grze naszego teamu z pierwszego miejsca (w składzie: code: gynvael+oshogbo, gfx: xa), a także udostępnić grę w wersji post-compo (razem ze źródłami na MIT i grafiką na CC) oraz port gry na HTML5 który zrobił Xa w ciągu ostatnich paru wieczorów. Miłej lektury (tak, są obrazki) :)


Czytaj dalej...


Być może niektórzy moi czytelnicy pamiętają zabawę "Pocztówka z Doliny Krzemowej" o której pisałem mniej więcej rok temu. Będąc w październiku ubiegłego roku ponownie w Kalifornii wysłałem kolejną porcję pocztówek dla zainteresowanych osób. Pół roku minęło i jedynie 3 z 10 pocztówek udało się rozszyfrować. Być może ktoś spośród moich czytelników będzie zainteresowany podjęciem wyzwania i spróbowania swoich sił z pozostałymi pocztówkami :)


Czytaj dalej...
2013-03-03:

To gdzie są ci słynni polscy hakerzy?

hacking:bike shed:ctf
Tak przeglądam ranking ogólny CTFów prowadzony przez serwis CTFtime.org i zwróciłem uwagę na jedną rzecz (a raczej jej brak) - w setce pierwszych teamów w rankingu 2012 nie ma żadnego polskiego teamu, a w br. jest jeden (słownie: jeden). Wydało mi się to dość dziwne - jest kilka polskich sajtów z newsami o security (szczególnie ostatnio wyrastają jak grzyby po deszczu), kilka(naście?) forów internetowych (czasem mam wrażenie, że po każdej emisji Hackerów w TV powstają dwa nowe), są też konferencje security (przynajmniej kilka w roku), sporo niezłych blogów, czasem jakieś konkursy/hackme/crackme/etc i ogólnie sporo udzielających się osób "na scenie" - więc skąd taka marna reprezentacja w rankingu CTFów? Odpowiedzi może być oczywiście kilka. Jedną z nich (całkiem możliwą zresztą) jest: jakoś tak nikt nigdy nie napisał o tym, że średnio co dwa tygodnie jest jakiś CTF i że w ogóle jest jakiś "ogólny ranking".


Czytaj dalej...
Mój artykuł zaczynał się od następujących słów: "Programując w językach C lub C++, bardzo łatwo jest popełnić błąd." - jak można się domyślić po tytule postu, słowa okazały się prorocze i faktycznie kod jednego z listingów w artykule jest błędny. Kudos za wypatrzenie błędu dla KrzaQ!


Czytaj dalej...
Jak niektórzy moi czytelnicy zapewne pamiętają, w sierpniu ubiegłego roku w magazynie Programista ukazał się mój artykuł pt. "Diabeł tkwi w szczegółach: C/C++ (część 1)". Dzisiaj zdecydowaliśmy się, wspólnie z redakcją, udostępnić go za darmo w formie PDF (link poniżej). Dodatkowo, redakcja Programisty przygotowała pewien bonus gdyby ktoś z moich czytelników skusił się na prenumeratę.


Czytaj dalej...
Mając wolną chwilę, np. w drodzę do/z pracy, zazwyczaj przeglądam RSSa i wysyłam sobie co ciekawsze linki na maila, w celu obejrzenia (przeczytania) danego znaleziska dokładniej przy okazji kolejnej, dłuższej, wolnej chwili. Od listopada zeszłego roku, dla wygody (łatwiej filtry ustawić), zamiast na swój prywatny mail wysyłam je na grupę dyskusyjną (mailingową) ciekawe-papierki@googlegroups.com, którą specjalnie do tego celu stworzyłem. I w zasadzie nie ma żadnego powodu dla którego ta grupa miała by nie być publiczna - a nuż ktoś jeszcze znajdzie w tych linkach coś dla siebie.


Czytaj dalej...
Na stronie kodzimy.net znalazłem bardzo fajny artykuł o szybkości działania i++ i ++i. Wniosek z artykułu brzmi: nie ma różnicy dla podstawowych typów w nowoczesnych kompilatorach. Jako, że temat jest mi bliski, to dorzucę dwie ciekawostki :)


Czytaj dalej...
2013-02-10:

Magazyn Programista, kilka spraw

programista
Zacznę od tego, że w obecnym numerze Programisty, czyli 1/2013 (08), ukazał się mój kolejny artykuł z serii "Diabeł tkwi w szczegółach" o tytule "hosting plików" (strona 34). Tekst leży na granicy między projektowaniem serwisów internetowych a IT security i traktuje o tym jak bezpiecznie odebrać plik od użytkownika (w szczególności: plik graficzny), a następnie serwować via HTTP. Artykuł jest w zasadzie przedyskutowaniem różnych stosowanych, nie zawsze dobrych, metod, oraz wskazaniem kilku, które faktycznie mają pewien sens. Reszta niniejszego postu będzie bardzo krótko o obecnym numerze programisty, oraz o nadchodzącej serii artykułów o programowaniu/IT niskopoziomowym, która będzie współtworzona przeze mnie oraz Mateusza "j00ru" Jurczyka.


Czytaj dalej...
2012-10-21:

Notatki i dashboard

blog
W RSSie mojego bloga ostatnio pusto, szczególnie po polskiej stronie lustra, niemniej jednak trochę zmian ostatnio wprowadziłem. W skrócie: pojawił się dashboard (widoczny po wejściu na http://gynvael.coldwind.pl/), oraz wprowdziłem "notatki" (głównie techniczne), których przybywa, a które to nie pojawiają się w RSS. Więcej o tym co jest co w dalszej części tego posta.


Czytaj dalej...
Dwa krótkie ogłoszenia. Po pierwsze, wyszedł nowy numer magazynu Programista z moim artykułem. A po drugie, wygląda na to, że Helion przygotowuje polskie wydanie "The Tangled Web" Michała Zalewskiego. Więcej w treści postu...


Czytaj dalej...
(Collaborative post by Mateusz “j00ru” Jurczyk and Gynvael Coldwind)

Several months ago, we started an internal Google Security Team effort to improve the general security posture of the Chrome embedded PDF reader, in an approach similar to the Flash fuzzing performed several months ago by Tavis Ormandy. During the course of a few weeks, we built a solid corpus of PDF documents that we feel gets significant coverage of the Chrome PDF Reader’s code base and used it to shake out more than 50 low-to-high severity bugs. All of the high and critical severity bugs we discovered have been fixed in the stable channel [1] [2] [3] as of this posting; see examples: ...


Czytaj dalej...
Video views na moim kanale z podcastami na YT wskazuje ponad 100000 - yay!


Czytaj dalej...
Mniej więcej miesiąc temu wrzuciłem na bloga recenzję nowego drukowanego czasopisma Programista, a tu już nowy numer. Póki co wrzucam spis treści, a ewentualną recenzję wrzucę jak dojdzie do mnie papierowa wersje i ją przestudiuje :)

Czytaj dalej...
Czasem przyjemnie jest zapomnieć o Undefined Behavior w C i po prostu napisać coś co działa tu i teraz, a niekoniecznie będzie działać jutro (przy nowej wersji kompilatora; innych opcjach kompilacji) lub w innym miejscu (innej platformie). Kilka tygodni temu nadarzyła się ku temu okazja za sprawą tematu na pewnym forum zatytułowanym "Hello world bez bibliotek i asm" (stąd nazwa niniejszego postu) - autor pytał czy możliwym jest napisać w C "Hello World" bez użycia bibliotek (w tym include'ów) ani wstawek assembly (w dowolnej formie). O ile na początku topic był powiązany jeszcze z poprawnym językiem C, to dość szybko przeszło na kod bardzo niskopoziomowy (zapisany nadal w C), zależny od danego systemu, architektury CPU czy nawet sposobu kompilacji użytego przez kompilator. Poniżej zamieszczam mój pomysł na wypisanie "Hello World" na konsoli GNU/Linux, natomiast zachęcam również do rzucenia okiem na sam topic (link powyżej).


Czytaj dalej...
Gdy zaczynałem programować (a było to około roku 1990) głównymi materiałami do nauki były nieliczne ksiażki oraz kilka czasopism traktujących głównie lub m.in. o programowaniu. Jeśli chodzi o te ostatnie, to było ich zaskakująco dużo (szczególnie porównując z obecną sytuacją). Wymienić mogę kilka:

Czytaj dalej...
DLL shared sections have long been infamous for introducing security problems. A few months ago I decided to take a look if one can still find applications that use PE modules with shared sections in an insecure way (or using them at all). Today I'm releasing research notes, some tools and a demo of a Cygwin local privilege escalation (it's already fixed).


Czytaj dalej...
IGK is an annual game development conference in Poland and quite a fun one at that (not that I've been at many gamedev conferences). This year it started 29 of March and ended 1 of April in the evening (if counting the unofficial annual afterparty that is). The conference consists of a series of talks in the first two days and a 7 hours team gamedev compo. This year, as last year, I both had the opportunity to give a talk and to start in the compo, with quite decent results (for someone not really involved in game dev anymore).


Czytaj dalej...
2012-04-12:

HITB Magazine #8

HITB Magazine
Wyszedł nowy numer HITB Magazine, z magicznym numerkiem #8 i opisem jeszcze bardziej magicznego błędu by j00ru!


Czytaj dalej...
2012-03-18:

CPC464 1-to-2 joystick port splitter (EN only)

DIY:cpc464:electronics
Some time ago I've learned that you could connect two joysticks to the one-joystick-port CPC464 (you know, the old 8-bit computer I've already mentioned in few posts). So, I decided to practice my electronic skill, dig into the topic and make myself whatever piece of hardware is required to actually make two-joystick connection possible. Today I've finished the "1-to-2 joystick port splitter" and decided to document both the project, as well as the problems, the solutions, and the failures.


Czytaj dalej...
O tegorocznej edycji konferencji już pisałem, natomiast nie pisałem jeszcze, że zgłosiłem prelekcję pod tytułem "Ewolucja układów graficznych".


Czytaj dalej...
szyfrogram na pocztówceBędąc w styczniu w Mountain View wysłałem do kilku znajomych (jak i mniej znajomych) pocztówki. Z wrodzonej przekory niektóre wiadomości umieszczone na pocztówkach zaszyfrowałem - część przy pomocy kartki i długopisu, a część przy pomocy trochę bardziej skomplikowanych narzędzi. W każdym razie dzięki uprzejmości odbiorców pocztówek na sieć trafiły skany większości z nich - zachęcam więc do spróbowania swoich sił i połamania szyfrogramów w "pocztówkowym wyzwaniu Gyna" ;>

Czytaj dalej...
Krzemowa Dolina to naprawdę dolina ;oJak pisałem wcześniej w poście "Krótki news dot. podcastów", pierwszy miesiąc tego roku spędziłem w USA, a konkretniej w Krzemowej Dolinie. Niniejszy post jest odpowiedzią na pojawiające się prośby o "jakąś relację" ;>

Czytaj dalej...
Wrzuciłem na sieć nowy podcast (videocast?) o Maszynach Wirtualnych. Trochę technicznie, trochę popularno-naukowo, i trochę praktycznie - ostatnie 30 minut to pisanie prostej VMki (dodam, że podcast wyszedł długi i ma półtorej godziny).


Czytaj dalej...
2011-12-30:

Analiza / Recenzja

recenzja
Z uwagi na wydarzenia bliskie losowym dostałem do recenzji (a w zasadzie do analizy merytoryczno-techniczno-różnej) video tutoriale + książkę "Bezpieczeństwo Aplikacji Windows" wydawnictwa CSH znanego z [nie]sławnej serii "Szkoła Hakerów". Recenzję stworzyłem (zeszło na to około 30 godzin pracy) i dzisiaj ją publikuje.


Czytaj dalej...
TL;DR: Po pierwsze: config do gVim'a o który trochę osób pyta jest tutaj: http://gynvael.vexillium.org/dump/_vimrc (pod *nixami trzeba zmienić czcionkę, etc). Po drugie: publikacja epsa o Magus Ex Machina odsunie się o jakieś dwa miesiące (problemy techniczne). Więcej poniżej...


Czytaj dalej...
Pojęcia "przepełnienie stosu" oraz "przepełnienie buforu na stosie" są dość często używane zamiennie. Niestety, jest to nieprawidłowe - są to dwie zupełnie różne klasy bugów, których nie należy ze sobą mylić. Niniejszy post ma na celu wykazanie różnicy, a także luźne rozważania na temat genezy błędu.


Czytaj dalej...
W skrócie: 1. Wrzuciłem mniej więcej uporządkowaną listę serii/odcinków podcastów (link w menu po prawej). 2. Od początku stycznia do połowy lutego 2012 nie będę niestety w stanie nagrać żadnego podcastu - publikacje wznowie w drugiej połowie lutego.


Czytaj dalej...
2011-11-20:

Magus Ex Machina – a product of a 48h codejam (+pytanie)

gamejam:magus ex machina:compo
W zasadzie ten post jest po angielsku, ale po polskiej stronie lustra chciałem zapytać osoby zainteresowane moimi video tutorialami z serii Gamedev:
Czy chcielibyście posłuchać coś więcej o budowie/tworzeniu Magus Ex Machina (w postaci videocastu z serii Gamedev)?

Czytaj dalej...
Kilka godzin temu premierę miała nowa książka Michała Zalewskiego (znanego bardziej jako lcamtuf) - "The Tangled Web". Miałem to szczęście, że mogłem książce przyjrzeć się jeszcze przed premierą, więc korzystając z premiery w końcu coś o niej krótkiego napiszę.

Czytaj dalej...
Krótki wpis z dwoma "newsami". Po pierwsze: link do mojego profilu na Google+ (czasem wrzucam tam coś merytorycznego, co nie trafia na bloga). A po drugie: wrzuciłem 6 nowych videotutoriali na YT (o gamedevie, czyli programowaniu gier).


Czytaj dalej...
"Nie ma to jak dobry bike shed, żeby rozruszać bloga" - to stwierdzenie uknułem (razem z j00ru) jakiś czas temu, po zapoznaniu się z tytułowym prawem trywialności parkinsona i naniesieniu go na ilość komentarzy na moim blogu vs tematyka danego postu. Moim zdaniem jest to jedno z ciekawszych praw jeśli chodzi o prowadzenie bloga i może zainteresować szczególnie osoby prowadzące (lub chcące prowadzić) bloga/blogi w celach zarobkowych.


Czytaj dalej...
2011-10-31:

32 kolory

perihelion:gfx:code for fun
Przez przypadek wpadła mi w ręce ostatnio recenzja gry Perihelion - jest to wydana w roku 1993 gra RPG na Amigę. Z uwagi na ówczesne ograniczenia, autorzy gry dysponowali jedynie paletą 32 kolorów i muszę przyznać, że sposób w jakie wykorzystali te 32 kolory mi zaimponował. Konkretniej: złożyli paletę z dwóch "gradientów": szarego i pomarańczowego, co dało kapitalny efekt (screeny poniżej). Anyway, efekt spodobał mi się na tyle, że stworzyłem krótki programik, który konwertuje dany obrazek własnie do takiej palety 32 kolorów.


Czytaj dalej...
Kilka razy obiło mi się o uszy stwierdzenie typu "żeby być dobrym z programistą/informatykiem trzeba być dobrym z matematyki", jak i również nie raz trafiały do mnie pytania w stylu "czy jak z matematyki mam [ocena poniżej 5] to mam szansę zostać informatykiem/programistą?" (czasem w formie zawstydzonego-przyznania-się-do-winy typu "ale wiesz, ja z matmy mam [ocena poniżej 5]"). Ponieważ o temacie przypomniał mi komentarz noname pod ostatnim postem ("czy matematyka jest obecna ( a jeśli tak, to w jakim stopniu?) w Twojej codziennej pracy?"), postanowiłem przedstawić mój punkt widzenia.


Czytaj dalej...
(Ostatnia aktualizacja posta: 2018-10-05)


Czytaj dalej...
NetSock to lib/wrapper ułatwiający obsługę socketów w C++, który stworzyłem 4 lata temu (albo 5, przyznaję, że nie pamiętam dokładnie) i update'uje od czasu do czasu. W sumie można było go ściągnąć z innymi moimi projektami (np. ostatnio opublikowanym PiXiEServ), ale nigdy nie miał swojej własnej oficjalnej premiery.


Czytaj dalej...
Wygląda na to, że transport Jabber<->GG z którego korzystałem (gg.jabber.wroc.pl) zostanie permanentnie wyłączony w nadchodzący weekend. W związku z powyższym, nie będę już niestety osiągalny via gg.


Czytaj dalej...
PiXiEServ screen shotA few years back, we've been (i.e. j00ru and Gynvael) working on a bootkit-related project (some polish SecDay'09 presentation slides can be found here: Bootkit vs Windows.pdf). One of its basic requirements was the ability to load custom boot-"sectors" from an external host in the local network. Since the publicly available solutions required too much time to be spent on configuration and we didn't need most of the offered functionality anyway, we decided to create an extremely simplified Preboot Execution Environment (PXE) server on our own, and so PiXiEServ came to be. Actually, a great majority of the source code was written by Gynvael, with only few modifications applied by me (i.e. j00ru).


Czytaj dalej...
2011-09-20:

Podcast background no1

podcast
Wrzuciłem na YT muzykę którą prawdopodobnie dodam w tło podcastów w pewnym momencie (do posłuchania również poniżej).


Czytaj dalej...
The interesting difference between ASCII and Unicode is that the first had only one group of digits defined (30h to 39h), and the latter defines 42 decimal digit groups (I think it actually defines more, but nvm). A common programming language operation is to convert a sequence of digit-characters (yes, a number) to a machine-understandable integer. Does any default in-language string-to-integer support Unicode digits? Does any is-digit function return true on Unicode digits? Well, I did some checking and created a table (programming language/version/library vs digit group) that addresses these questions.


Czytaj dalej...
In march I've published some research related to Just another PHP LFI exploitation method that used the fact that the PHP engine stores (on disk) uploaded files (rfc1867) for a short period of time, even if scripts don't really expect them. The bottom line was that it's easy to exploit it on Windows, but on *nix it wasn't really possible unless some php script leaks certain information (temporary file name). Well, Brett Moore in his paper "LFI with phpinfo() assistance" pointed out that phpinfo() is the thing you want to look for on *nix.


Czytaj dalej...
Niecałe trzy lata temu opublikowałem post pod tytułem "Wolność dla wszystkiego, czyli kompletne anihilowanie pamięci procesu", który był opisem próby uwolnienia wszystkich regionów pamięci należących do danej Windowsowej aplikacji, z poziomu tejże aplikacji. Wczoraj dostałem maila od raphael<AT>gfreedom<DOT>org z opisem (udanej) próby wykonania podobnego eksperymentu pod systemem opartym o jądro Linux. Dostałem również zgodę na opublikowanie jego maila w formie postu gościnnego, co niniejszym czynie.


Czytaj dalej...
2011-08-07:

Security in HTML 5 and HTTP (EN only)

data dump:html 5
For various reasons I've decided to take a deeper look at the evolving HTML 5 standard and related new HTTP extensions (or proposals of extensions). To tell you the truth, I was extremely surprised about the number of HTML tags that I didn't even hear of (like <ruby>, <kbd>, <meter>, <progress>, etc). Another thing that surprised me were a few security features I was not familiar with... so I decided to write down what I found interesting (so yes, this is a 'data dump' only).


Czytaj dalej...
2011-08-01:

Random thoughts #4 (EN only)

data dump:random thoughts
Since I don't have any material for a bigger post, I decided to make another 'random thoughts' one, with a couple of smaller things discussed...


Czytaj dalej...
Zupełnie out-of-order nagrałem dodatkową miniserię podcastów (a w zasadzie videocastów) o pointerach (wskaźnikach) w C/C++. Seria trwa łącznie ponad 4 godziny i jest rozbita na 8 odcinków, w których staram się pokazać/wytłumaczyć czym jest pointer (adres+metadane), jakie narzędzia na poziomie składni udostępnia język do operowania na pointerach, jak i po co castować pointery (jest i krótka dygresja o strict aliasing rule), po co ich używać, a także jak napisać programik który wylistuje regiony pamięci używane przez aplikację.


Czytaj dalej...
I never given too much thought to the problem of initialization of a in-function static variable in C/C++ (mostly C++ though). I just blindly assumed that the static variable works identically to a global variable, but is directly accessible (using language provided means) only in the block of code (and its child blocks) in which it was declared/defined. This is partly true of course - the big difference is that the global variable is initialized either at compilation time (constant) or before the entry point, and the static variable is initialized either at compilation time (constant) or at the first entry to the block of code where it's declared/defined. The interesting parts here are "how does the variable know if it has been initialized" and "what about concurrent multi-threading?" (the latter has some minor stability/security consequences). Let's take a look at GCC and Microsoft Visual C++ and how do they handle these issues...


Czytaj dalej...
Minęło 10 miesięcy od kiedy przeprowadziłem się do Konfederacji Szwajcarskiej i uznałem ten fakt za dobrą wymówkę żeby wrzucić kilka fotek, i kilka przemyśleń, na temat mieszkania w Szwajcarii.


Czytaj dalej...
Some time ago I had a crazy/funny idea for a local privilege escalation: run a privilege granting operation in an infinite loop and wait for a random bit flip in CPU/RAM that would make a 'can this user do this' check return 'true' instead of 'false'. Is this theoretically possible? Yes. And practically? Almost impossible, due to the unlikeliness of a bit flip and even more, the unlikeliness of a bit flip in the just right place. Nevertheless, I thought this idea was quite interesting and decided to dig into the topic. This post will summarize what I've found out and mention a few papers/posts might be worth reading.


Czytaj dalej...
2011-06-13:

JTLYK, HITB Magazine #6 is out

hitb:ezin
The important stuff: download (http://magazine.hackinthebox.org/issues/HITB-Ezine-Issue-006.pdf) & some more info about the issue at j00ru's blog (http://j00ru.vexillium.org/?p=817).


Czytaj dalej...
2011-06-12:

Why NULL points to 0?

c:hacking:security
A few years ago I would answer the above question with "because NULL is defined as a void pointer to 0", which is only half correct (and close to being wrong). The answer to this question is much more complicated and thus much more interesting.


Czytaj dalej...
2011-06-09:

Podcasty update kolejny

podcast:videocast
Niecały miesiąc minął i kilka nowych podcastów na sieć wrzuciłem. Póki co idzie całkiem nieźle...


Czytaj dalej...
[Collaborative post by Mateusz 'j00ru' Jurczyk & Gynvael Coldwind]

Early Sunday morning discussion has resulted in j00ru coming up with an idea to mitigate some variants of kernel exploitation techniques by introducing a CPU feature that would disallow execution control transfers in kernel-mode to code residing in user memory area pages (e.g. addresses < 0x80000000 on a 32-bit Windows with default settings). The idea was that the system would mark every page as either being allowed to execute code in ring-0 or not. And hey, guess what... Intel has already proposed such a feature a month ago! Furthermore, it seems that this exact idea was already described in 2008 by Joanna Rutkowska, and two days ago she has published a follow up post on her blog.


Czytaj dalej...
Od początku istnienia tego bloga staram się (tj. nie zawsze to wychodzi) wszystkie posty wrzucać dwóch językach - polskim, oraz angielskim. Niestety, z powodów czasowych, muszę trochę zredukować ten zakres. W związku z czym, od teraz tylko część postów będę publikował w obu językach. Pozostała część będzie publikowana albo tylko po polsku (posty edukacyjne) albo tylko po angielsku (posty techniczne/związane z moimi badaniami).


Czytaj dalej...
2011-05-29:

Digital pen

pen:toys
O ile nie uważam siebie za gadżeciarza, to co jakiś czas jakiś nowy "kawałek elektroniki" wpada w moje ręce. Tym razem było to tzw. pióro cyfrowe (digital pen; w skrócie: długopis który zapamiętuje to co piszesz i pozwala "wrzucić to na kompa") firmy I.R.I.S. (a przynajmniej taka firma była podana na pudełku). Co ciekawe, udało mi się dorwać SDK do tego urządzonka, więc post będzie również spojrzeniem na digital pen od strony programistycznej (bez przesadnych technikaliów).


Czytaj dalej...
2011-05-17:

Videocasty - mały update

videocast
Dokładnie 10 dni temu napisałem, że zaczynam publikować na YT nowe serię videocastów (videotutoriali). Przez te 10 dni wrzuciłem trochę nowych epsów (około piętnaście) i w zasadzie zaczęło się klarować co i jak będę nagrywać.


Czytaj dalej...
Dwa tygodnie temu pisałem o konkursie zorganizowanym przez serwis Security News (https://www.secnews.pl), a w którym do wygrania była wejściówka na konferencję CONFidence 2011. Konkurs polegał na stworzeniu ciekawego CrackMe, które następnie oceniane były pod względem trudności (ale musiały być rozwiązywalne), pomysłowości, innowacyjności oraz walorów wizualnych. Wczoraj późnym wieczorem zostały ogłoszone wyniki i wygląda na to, że wygrał team w składzie j00ru+ja. Yaay! :)


Czytaj dalej...
Pod koniec kwietnia odwiedziliśmy z żoną Polskę. Jedną z atrakcji w tym nadwiślańskim kraju okazał się bankomat Euronetu, który po otrzymaniu szwajcarskiej karty zaproponował mi "Gwarantowany Kurs Wymiany Walut". W skrócie: coś czuje, że ktoś kogoś chce zrobić "w lewo" (konkretniej: Euronet mnie w tym wypadku)...


Czytaj dalej...
2011-05-07:

ReverseCraft EOF i nowe videocasty

recraft:videocast
ReverseCraft zawisł już jakiś czas temu w niepewności. Z jednej strony chciałem go kontynuować, z drugiej strony wiedziałem, że po prostu nie mam na to czasu (przygotowanie 45-minutowego epsa trwało od 5 do 10 godzin). Postanowiłem więc oficjalnie zakończyć serię ReverseCraft, ale jednocześnie rozpocząć nową serię videocastów.


Czytaj dalej...
2011-05-06:

Simplified Assembly Loader

asm:x86
Simplified Assembly Loader to prościutki programik (napisany zresztą "na kolanie" w niecałą godzinę) którego zadaniem jest ułatwienie rozpoczęcia nauki assembly x86 pod win32 i "linuxami". Będę z niego korzystał w kursie assembly który planuje wrzucać na youtube). Jak każdy mój tool, asmloader jest open source (tym razem licencja MIT, dla odmiany).


Czytaj dalej...
2011-05-02:

Szwajcarski scyzoryk x86 SSE 4.2: PCMPxSTRy

assembly:asm:x86:sse 4.2:pcmpxstry
Zazwyczaj instrukcje assembly są bardzo niskopoziomowe, tj. pozwalają wykonywać pojedyncze operacje arytmetyczne, logiczne, kopiowanie pojedynczych bajtów/wordów/etc i nic więcej - tak więc pierwszą rzeczą z którą muszą się oswoić osoby wchodzące w assembly, jest fakt, że to co można było zapisać w jednej linii np. w C, w assembly zajmie kilka-kilkanaście. I z jakiegoś dziwnego powodu do tego prostego świata assembly x86 zawędrował zestaw instrukcji PCMPxSTRy (SSE 4.2, dostępny m.in. na Intel Core i5/i7/etc), który jest bardziej wysokopoziomowy niż niejedna funkcja w standardowej bibliotece C.


Czytaj dalej...
Pewnie kojarzycie moją ulubioną konferencje security w .pl - CONFidence? Wygląda na to, że znajomy na swoim serwisie zorganizował bardzo ciekawy konkurs (trzeba stworzyć fajne CrackMe) w którym można wygrać wejściówkę na wcześniej wspomnianą konferencję.


Czytaj dalej...
2011-04-10:

Przemyślenia: int'y w programowaniu

int:x86:c:c++:code
Ostatnio trochę zajmowałem się trochę różnymi podejściami do problemu kodowania i operowaniu na liczbach całkowitych i naturalnych w programowaniu. Niniejszy post stanowi podsumowanie tego czego się dowiedziałem oraz dodatkowo, drobny rancik na temat C/C++ (innym językom dostanie się, być może, rykoszetem).


Czytaj dalej...
[Post gościnny by mulander] 12 listopada 2009 roku Gynvael napisał o swoich pierwszych wrażeniach dotyczących języka Go. Po upływie ponad roku napomknąłem autorowi, iż ciekawym tematem byłby analogiczny post na temat języków Digital Mars D oraz Mozilla Rust. Cała ta sytuacja przypomniała mi o pierwotnym poście i nakłoniła do odświeżenia lektury. Natknąwszy się na zdanie "Po za tym szkoda trochę, że język jest jeszcze niedostępny na platformę Windows." stwierdziłem, że warto sprawdzić jak sprawy się obecnie mają.

Czytaj dalej...
2011-04-07:

Recon 2010 - video

recon:lecture:syndicate wars:swars
Wczoraj zostało opublikowane nagranie z mojej i Unavowed'a prelekcji o portowaniu Syndicate Wars na współczesne systemy. Zachęcam do rzucenia okiem :)


Czytaj dalej...
2011-04-02:

Secunda Aprilis 2011

25-lat
Rok temu na prima aprilis zdeface'owałem sobie bloga, w tym roku zaś easter eggiem oczywiście było 25-lecie działalności w sieci...


Czytaj dalej...
Dokładnie 25 lat temu (31 marca 1986) na "sieć" (mowa ofc o BBS) trafiła pierwsza wersja niniejszego bloga. Niniejszy post ma na celu podsumowanie tychże 25 lat mojej blogowej działalności - zachęcam do lektury!


Czytaj dalej...
2011-03-22:

PHP security, klika linków

php:security
Króciutki post z kilkoma linkami związanymi z PHP i security/hackingiem.


Czytaj dalej...
2011-03-18:

Just another PHP LFI exploitation method

php:lfi:temporary files
Parę dni temu, podczas dyskusji ze znajomym (hi Felix ;>) o metodach exploitacji Local File Inclusion w PHP, wpadł mi do głowy pomysł, żeby użyć w tym celu tymczasowych plików tworzonych przez engine PHP podczas uploadu plików (to nie jest tożsame z include'owaniem uploadowanych plików ofc). Przerzuciłem pomysł na papier (w postaci artykułu), po czym okazało się, że w zasadzie ta metoda jest znana w niektórych kręgach. Niemniej jednak, ponieważ nie jest to "common knowledge" (w przeciwieństwie do np. include'owania logów apache czy /proc/self/environ), zdecydowałem się i tak opublikować owy art.


Czytaj dalej...
2011-03-11:

Zmienne i stałe: wartość, kodowanie, reprezentacja

c:c++:code:easy:variables
Post jest przeznaczony dla początkujących programistów (część o kodowaniu może zainteresować również bardziej doświadczone osoby). Planowałem go napisać już jakiś czas temu, przy okazji kolejnego pytania kolejnej osoby, które brało się z niepełnego zrozumienia czym jest zmienna/stała, a konkretniej np. nierozróżnienia wartości zmiennej od reprezentacji wartości, a także od kodowania i zapisu zmiennej w pamięci. Niniejszy post ma na celu wyjaśnienie wspomnianych różnic.


Czytaj dalej...
2011-01-11:

Windows, drivery, GS cookies i 1 bit entropi

windows:hacking:medium:gs cookies
W listopadzie na Code Project pewien chiński hacker opublikował "exploit omijający UAC", który, jak się okazało, z UAC nie miał dużo wspólnego - był to 0day na win32k.sys (czyli część kernela Windows odpowiedzialna za grafikę/okienka/etc). O sprawie napisano na Niebezpieczniku, zaznaczając, że błąd jest exploitowalny pod Windows 7, Vista oraz Windows XP. Umieszczenie w newsie XPka spowodowało wywiązanie się w komentarzach dyskusji (chociaż waham się przy użyciu tego słowa) w której kilku czytelników zwróciło uwagę, że błąd nie jest exploitowalny pod XP, a więc autor newsa wprowadza czytelników w błąd. Problemem pod XP okazały się, nieobecne na Vista i 7, stack cookies (a konkretniej /GS cookies), które powinny skutecznie uniemożliwić exploitacje. Postanowiliśmy z j00ru wgłębić się w temat, czego efektem jest prawie 40-stronnicowy artykuł zlinkowany poniżej.


Czytaj dalej...
Tytułową zagadkę dostałem od furia i uznałem na tyle ciekawą, że przez kilka kolejnych dni rozdawałem ją na prawo i lewo. Zagadka jest o tyle ciekawa, że są tam dwa Undefined Behaviour w jednej krótkiej linii. Obecność UB powoduje oczywiście, że nie ma jednej dobrej odpowiedzi; odpowiedzi tak naprawdę są trzy: 11, 12 lub 13.


Czytaj dalej...
Prośba do osób posiadających Windowsa (choćby na VM): http://j00ru.vexillium.org/ticks/


Czytaj dalej...
2010-12-13:

Hacking

easy:hacking:security
Osoby zajmujące się zawodowo hackingiem (w szczególności pentesterzy czy security researcherzy) mogą pominąć niniejszy post (chyba, że chcą dodać sugestię od siebie, takowe są baardzo mile widziane) - nie sądzę by znalazło się tu dla was coś nowego bądź zaskakującego. Post skierowany jest przede wszystkim do osób zainteresowanych hackingiem, ale nie związanych z nim w sposób formalny.


Czytaj dalej...
2010-11-20:

Saturacja w scanf/atoi/strtol

c++:c:windows:linux
Dyskutując wczoraj m.in. z apsem o pewnym kawałku kodu natrafiliśmy na ciekawą (moim zdaniem) różnicę w implementacjach funkcji atoi, [sf]canf %i oraz strtol (z której btw w niektórych implementacjach korzystają [sf]scanf oraz atoi) między msvcrt (Microsoft C-Runtime Library), glibc (GNU C Library), a libc używanym na OSX.


Czytaj dalej...
2010-10-23:

Ciekawostki #4

press
Wraz z rozpoczęciem cyklu ciekawostek założyłem sobie "notatnik" (ofc w formie elektronicznej) w którym zapisuje rzeczy które mnie zaciekawiły. Notatek zrobiło się tam całkiem sporo, więc chyba czas na kolejny post z tego cyklu.


Czytaj dalej...
2010-10-20:

PHP preg_match i UTF-8

php:easy:utf-8
Kilka dni temu dostałem kawałek kodu napisanego w PHP 5 oraz pytanie "czy to jest OK?". Kod zajmował się walidacją pól formularza (tj. tzw user input), a konkretniej, sprawdzał czy user input składa się tylko z liter, łacińskich (A-Z) oraz polskich liter diakrytyzowanych (czyli Ą Ż Ś Ź Ę Ć Ń Ó Ł oraz małych wersji tychże liter: ą ż ś ź ę ć ń ó ł). Dodatkowo, weryfikacji podlegała ilość wprowadzonych liter - limit był stosunkowo niewielki. Jak zapewne się już domyśliliście, kod był "nie OK", a błąd był na tyle ciekawy, iż zdecydowałem się go opisać.


Czytaj dalej...
2010-10-18:

HITB eZine 004

hitb:hack in the box:zin:ezin:hacking
Kilka dni temu, przy okazji konferencji Hack In The Box w KL, wyszedł czwarty numer Hack In The Box Magazine! Jest tam kilka ciekawych nowych artykułów, a także kilka "przedruków" z poprzednich numerów (aka Readers Choice).


Czytaj dalej...
2010-10-17:

Rozwinięcie makra w C/C++

easy:g++:c++:c
Ostatnio pracuje nad pewnym kodem w C++ w którym (nad)używam sporo różnych ficzerów języka. A jeśli chce się, żeby tego typu kod na pewno działał, trzeba być pewnym tego jak zachowa się kompilator, co sprowadza się do poszukania czy dane zachowanie jest wynikiem zgodności ze standardem (tj. czy standard mówi, że dana rzecz dokładnie tak ma się zachować), zdefiniowanym zachowaniem kompilatora (tj. w dokumentacji kompilatora (w moim przypadku jest to GCC) jest zapisane, że dana rzecz dokładnie tak się zachowa, ale niekoniecznie jest to zdefiniowane w standardzie języka), czy też jest totalnym UB (czyli w żadnej oficjalnej dokumentacji nie jest dane zachowanie udokumentowane, czyli jedyne czego możemy być pewni, to to że dana wersja danego kompilatora w takim konkretnym miejscu się prawdopodobnie zachowa się tak jak zaobserwowaliśmy). Tak więc niniejszy post jest w zasadzie zapisem informacji które znalazłem o pewnym ficzerze (rozwijaniu makr przez preprocesor) i prawdopodobnie doświadczeni programiści mogą niniejszy post pominąć.


Czytaj dalej...
2010-10-04:

Ciekawostki #3

press
Kolejna garść wygrzebanych tu i tam ciekawostek.


Czytaj dalej...
2010-09-30:

Ciekawostki #2

press
Kolejna porcja linków...


Czytaj dalej...
Wstępnie miała być to tylko kolejna "Ciekawostka", ale tekst się rozrastał i rozrastał, więc stwierdziłem, że jednak trzeba zrobić pełnego posta. A będzie krótko o kilku drobnych rozszerzeniach GCC których wcześniej nie widziałem, oraz trochę dłużej porantuje czego mi w C/C++ jeszcze brakuje (i nie, nie będą to szablony szablonów ;f).


Czytaj dalej...
2010-09-27:

Ciekawostki #1

press
Odzew na pytanie zadane wczoraj był całkiem niezły, więc oto publikuje pierwszy zestaw linków, ciekawostek, etc. Zachęcam do komentowania ofc.


Czytaj dalej...
Od pewnego czasu chodzi za mną pomysł, żeby publikować co kilka dni linki do artykułów/papierków/wpisów na blogach które ostatnio czytałem i wg. mnie są warte przeczytania lub po prostu fajne/ciekawe. No i pytanie brzmi, czy kogoś by w ogóle był tym zainteresowany. Zachęcam do wyrażania opinii w komentarzach.


Czytaj dalej...
2010-09-09:

Back online

blog
Witam ponownie po krótkiej przerwie, spowodowanej zmianą miejsca zamieszkania, a więc i koniecznością ponownego "załatwienia" dostępu do neta. Czas na garść informacji organizacyjnych...


Czytaj dalej...
2010-08-23:

Jak nie ukrywać swojej twarzy

jpeg:easy
Dostałem dzisiaj od znajomego pewne zdjęcie, w formacie JPEG. Zdjęcie przedstawiało osobę, której twarz została zamalowana czarnym prostokątem. Nie było by w tym nic ciekawego, gdyby nie to, że explorer pokazywał na miniaturce twarz niezamalowaną :)


Czytaj dalej...
2010-08-09:

Kurs programowania?

question:blog
(Krótki i chaotyczny post napisany "w biegu") Natrafiłem na pewien problem. Mianowicie, skąd początkujący powinien się uczyć programować? Sieć jest przepełniona materiałami dot. najrozmaitszych języków programowania. Są kursy C, dokumentacja Pythona, manuale Intela do Assembly x86, książki o PHP, etc. Ale to wszystko jest o językach. I dobrze! Ale co z nauką komponowania programów (z braku lepszej nazwy przychodzącej mi do głowy)?


Czytaj dalej...
2010-07-27:

Co tam mam na warsztacie, czyli HWFramework

hwframework:medium:c++
Po CONFidence stwierdziłem, że fajnie byłoby się pobawić różnymi starymi rozwiązaniami sprzętowo-software'owymi, typu ANTIC i P/M, HAM6, itd. Jak to osiągnąć?


Czytaj dalej...
Poprzedni post, tj. Wybór studiów a szanse na rynku pracy, wywołał całkiem niezłą dyskusję, zarówno na temat, jak i na różne tematy mniej lub bardziej powiązane z głównym wątkiem, np. "studia (nie) są niepotrzebne", "prawdopodobieństwo może przyjmować (nie) tylko wartości od 0 do 1", czy też temat który chciałbym dzisiaj rozwinąć - "jak udokumentować swoją wiedzę". Zachęcam do lektury, a przede wszystkim, do dyskusji!


Czytaj dalej...
Najczęściej ostatnio pojawiającym się pytaniem na moim mejlu/komunikatorach jest "jakie wybrać studia, żeby znaleźć później dobrą pracę". Czas chyba zająć w tej sprawie "oficjalne" stanowisko.


Czytaj dalej...
2010-07-21:

CONFidence 2010 - nagranie z naszej prelekcji o błędach w Windowsie

confidence:lecture:terrible terrible english:windows:hacking:security
Na stronie konferencji CONFidence 2010 pojawiły się nagrania wideo z kilku prelekcji, m.in. z prelekcji mojej i j00ru "Case study of recent Windows vulnerabilities". Nagranie jest w formie do pobrania na dysk (tj. nie ma playera online).


Czytaj dalej...
2010-07-20:

Stare advisory PHP EXIF

security:php:rant
Wczoraj wieczorem opublikowaliśmy (u j00ru na blogu) trochę starych advisory dotyczących PHP (nic poważnego, jakieś tam prawie nieistotne rzeczy, więc to bardziej wyniki badań niż literalnie "advisory"). W sumie nie tyle chodziło nam o znalezienie jakiś bugów w PHP (noo, trochę też, ale nvm ;p) co o przetestowanie nowej (dla nas) metody audytowania kodu.


Czytaj dalej...
2010-07-20:

HiperDrop 0.0.1

hiperdrop:reverse engineering:easy:windows:c++
Przeglądając ostatnio katalogi na dysku znalazłem trochę narzędzi które z jakiegoś powodu ukrywałem i do tej pory nie opublikowałem. Zastanawiam się nad dokończeniem ich podstawowej funkcjonalności i wrzuceniu w końcu na sieć. W każdym bądź razie, jednym z takich narzędzi (które prawie bez zmian nadawało się do publikacji) jest HiperDrop - prosty, konsolowy, tool do zrzucania pamięci procesu, pod Windows.


Czytaj dalej...
2010-07-09:

RECON - prezentacja

recon:swars:syndicate wars
Bardzo krótki news - zgodnie z obietnicą, nasza prezentacja z RECON dot. Syndicate Wars Port:


Czytaj dalej...
Wieczorem 12 grudnia 2006 napisałem na OpenRCE, że poszukuje pracy jako RE/programista. Po kilku godzinach otrzymałem maila od Julio Canto z hiszpańskiej firmy Hispasec z propozycją nawiązania współpracy, którą wkrótce faktycznie nawiązaliśmy. Od tego dnia minęły ponad trzy lata i dość nieoczekiwanie wyszło na to, że 19 sierpnia odchodzę z Hispasec, by 6 września rozpoczać pracę u nowego pracodawcy. Niniejszy post jest niejako podsumowaniem mojej współpracy z Hispasec, oraz podziękowaniem dla wspałniałych ludzi z którymi przyszło mi tam pracować :)


Czytaj dalej...
Sporo gier komputerowych (zresztą nie tylko komputerowych) z elementami RPG stosuje tzw. "skill tree" - czyli drzewko kolejnych umiejętności (zachęcam do wklepania "skill tree" w google images), które dana postać może zdobyć/poznać/posiąść. Drzewko jest zorganizowane w taki sposób, że po poznaniu danej umiejętności odblokowuje się kolejna (lub kolejne) - tak więc aby poznać umiejętność Z, być może trzeba najpierw nabyć umiejętność Y, która wymaga X. Jakieś dwa lata temu wpadłem na pomysł, żeby pomysł ten przenieść do IT (programowania/hackingu/RE) - stworzyłem sobie ogólne drzewko rzeczy które chciałbym poznać (np. architekturę ARM), a potem oddzielne drzewko szczegółowe dla każdej umiejętności z drzewka ogólnego. Co ciekawe, kilku znajomych podłapało pomysł i kilka wieczorów spędziliśmy na projektowaniu takich drzewek i dyskusji jaka kolejność jest dla nauki danej rzeczy najlepsza (lub, jak nam się wydaje która będzie najlepsza ;>).

Ostatnio do pomysłu wróciłem, a to za sprawą kilku osób, które próbowały mnie podpytać czego się uczyć (np. w kontekście C++) i w jakiej kolejności. Pomyślałem, że fajnie byłoby stworzyć trochę takich drzewek i rzucić na sieć, ot tak aby początkujący (z danej tematyki) mieli (prawie) pełen obraz czego powinni się uczyć, i jaka jest proponowana (przez osoby które już przez to przeszły, oraz samych zainteresowanych) kolejność.
Niemniej jednak moja wiedza jest ograniczona, a mój punkt widzenia strikte przyczepiony do mnie (a więc zawężony do moich doświadczeń), więc projekt będzie od początku otwarty i będę zachęcał Was do udziału :)


Czytaj dalej...
2010-07-02:

HITB Magazine #3

hitb:hitb magazine:ezin:hacking:security:reverse engineering
HITB 3Podczas konferencji Hack In The Box w Amsterdamie (która zaczęła się bodajże wczoraj) został opublikowany trzeci numer wskrzeszonego przez Zarula Shahrina e-magazynu HITB. Trzeci numer, najlepszy moim zdaniem od momentu wskrzeszenia zinu, jest bardzo techniczny i sądzę, że przypadnie wam do gustu. Dodam również, że nie zabrakło polskich akcentów :)

Czytaj dalej...
Zarówno GCC, oraz inne kompilatory, jak i same standardy języków C/C++, przewidują pewne rozszerzenia języka, które zazwyczaj adresują jakiś problem, bądź też dodają nową funkcjonalność. Tych rozszerzeń jest masa - w zasadzie każdy popularny kompilator ma niemałą listę takich dodatków, i oczywiście nie zamierzam ich wszystkich opisywać w tym poście. Wspomnę natomiast o dwóch: atrybucie init_priority dla globalnych inicjacji obiektów w GCC C++, oraz znaku dolara ($) w nazwach zmiennych - rozszerzeniu pojawiającym się w różnych miejscach. Przy okazji tego ostatniego, zaprezentuje jedno zadanie z tegorocznego testu na Technika Informatyka (który od dwóch dni krąży po sieci).


Czytaj dalej...
2010-06-08:

Losowe przemyślenia (3)

random thoughts:easy
Kilka dni nic nie pisałem, a kilka losowych przemyśleń mi się uzbierało. Skorzystam więc z okazji i je zanotuje.


Czytaj dalej...
2010-05-30:

CONFidence 2010: slajdy i oryginalne advisory

confidence:conference:lecture:windows:security:medium:high
Tylko króciutki (prawie że copy-pejstowany z bloga j00ru) z oryginalnymi "advisory" dotyczącymi błędów które omawialiśmy na CONFidence (a wcześniej na Hack In The Box w Dubaju), oraz ze slajdami które używaliśmy podczas prelekcji na CONFidence (zachęcam do zajrzenia do posty z "relacją" z CONFidence). W owych "advisory" są detale które omawialiśmy na prezentacji, a także kilka dodatkowych informacji na które zabrakło czasu.


Czytaj dalej...
2010-05-30:

CONFidence 2010, post postkonferencyjny

confidence:conference:lecture
CONFidence 2010: Pokazy artystyczne podczas rozpoczęciaCONFidence ma jedną zasadniczą wadę - kończy się ;) Ale to w sumie dobrze - przynajmniej człowiek ma okazję uporządkować zdobytą wiedzę, na spokojnie pomejlować z nowo-poznanymi ludźmi, i wygrzebać z szafy starego poczciwego ATARI.

Czytaj dalej...
2010-05-03:

Windows CSRSS cross-version API Table

windows:security:winapi:csrss
Post przekierowujący dla dla czytelników researchujących Windowsa: Matthew opublikował tabelki z opkodami CSRSS (względem systemu, funkcji, etc) na swoim blogu, polecam rzucić okiem: http://j00ru.vexillium.org/?p=349&lang=en :)


Czytaj dalej...
Co nie co o warsztatach, które prowadziłem na SEConference, pisałem już wcześniej. M.in. obiecałem wtedy podsumowanie ankiet uczestników, a do tego postanowiłem podzielić się kilkoma spostrzeżeniami.


Czytaj dalej...
Kiedyś moja żona wynalazła gdzieś stwierdzenie, że "ekspert to osoba która popełniła wszystkie możliwe błędy w swojej działce"* - i chyba coś w tym jest. Zauważmy, że programista na poziomie eksperckim/zaawansowanym rzadko kiedy dopytuje się "co zrobić gdy wyskoczył mi taki a taki błąd (np. kompilatora)" - on już te błędy widział, on już je kiedyś popełnił i nauczył się je rozwiązywać. Natomiast pytania od początkujących (a czasem i średnio-zaawansowanych) programistów dotyczą często właśnie tego "co zrobić gdy kompilator rzucił takim a takim błędem". Łącząc cytat z pytaniem, chciałbym zaproponować pewne ćwiczenie :)


Czytaj dalej...
2010-04-22:

HITB Dubaj - slajdy z prelekcji

hack in the box:hitb:dubai:lecture
my ID :)Przed chwilą zakończyła się moja prelekcja na Hack In The Box w Dubaju, na której oczywiście być z krwi i kości nie mogłem (z uwagi na Eyjafjallajökull i odwołanie moich lotów), ale którą poprowadziłem przez telefon i stream pulpitu (ciekawe doświadczenie.. ale chyba preferuje irl prowadzić ;>). Slajdy z prezentacji udostępniamy poniżej.


Czytaj dalej...
2010-04-22:

HITB eZine Issue 002

hitb:zin:hacking:security
W drugi dzień konferencji HITB w Dubaju został opublikowany drugi numer e-zinu HITB Magazine. Z Polskich akcentów znajdziemy tam np. artykuł j00ru pt. "Windows Objects in Kernel Vulnerability Exploitation".


Czytaj dalej...
Czas na jakiś bardziej techniczny post. Dostałem kilka dni temu pytanie, które pozwolę sobie zacytować: "[...] dlaczego nie powinno się deklarować zmiennych w taki sposób: int a = 50; int b[a];". Chodzi tutaj oczywiście o tablice lokalne, które mają wielkość zależną od jakiejś zmienne, być może nawet zależnej od użytkownika/wejścia. Swoją odpowiedź cytuje poniżej:


Czytaj dalej...
Ta sprawa "męczy" mnie już od jakiegoś czasu - coraz więcej producentów różnego rodzaju dóbr zaczyna traktować każdego KLIENTA (tj. płacącego klienta) jak potencjalnego "złodzieja", co chwilę gdzieś miga "kopiowanie tego XYZ jest przestępstwem", "modowanie urządzenia XYZ jest nielegalne", etc. Ale od początku...


Czytaj dalej...
2010-04-13:

[HISPASEC Research] Windows Kernel Vulnerabilities... x5 :)

windows:security:bughunt:buffer overflow:easy
O pierwszym z bugów znalezionych przez nasz team (w składzie j00ru i ja ;>) informowałem już w lutym. Dzisiaj Microsoft opublikował info o kolejnych 5 (a w zasadzie 6ściu, ponieważ dwa z nich, które dla nas wyglądały jako oddzielne błędy, udało się załatwić jedną zmianą, więc zostały ogłoszone pod jednym numerkiem) :)


Czytaj dalej...
2010-04-13:

Post SEConference, materiały

lecture:seconference:igk:gamedev:re
Gyn na SEConferenceOd zeszłego czwartku do wczorajszego późnego popołudnia miałem maraton konferencyjny - w czwartkowy wieczór warsztaty z reverse engineeringu w ramach SEConference w Krakowie (o których wspominałem kilka postów temu), w piątkowy poranek prelekcja "Reverse Engineering for fun and profit" również w ramach SEConference (również wspomniana wcześniej), a 5 godzin później konferencja Inżynierii Gier Komputerowych w Siedlcach (dla odmiany, jako uczestnik ;>; o IGK napiszę w następnych postach).

Czytaj dalej...
2010-04-01:

Secunda Aprilis

funny:blog
Pierwszy kwietnia się skończył (jakieś 25 minut temu), więc czas najwyższy rozpocząć Secunda Aprilis - drugi kwietnia - dzień w którym wypada powiedzieć co było dowcipem, a co nie :) Ale zacznę od początku...


Czytaj dalej...
Miesiąc temu wysłałem zgłoszenie na konferencje Hack In The Box 2010 odbywającą się w Dubaju, i wczoraj dostałem oficjalne potwierdzenie akceptacji tematu. Tak więc wygląda na to, że 21 i 22 kwietnie będę w Dubaju mówił o błędach w Windowsie znalezionych przez j00ru i mnie :)


Czytaj dalej...
2010-02-10:

E-mailowy Malware #3 i Facebook

malware:security
Kolejny dzień, kolejny e-mail z malware'em (ostatnio to jakaś plaga). Tym razem to Facebook zmienia zasady i trzeba uruchomić aplikacje żeby się zgodzić na nowe...


Czytaj dalej...
2010-02-09:

Microsoft Windows CSRSS Local Privilege Elevation Vulnerability

windows:csrss:local priv escal:vulnerability:security:hacking
Dzisiaj Patch Tuesday, więc Microsoft opublikował Microsoft Security Bulletin Summary for February 2010. Jedną z luk (których w Summary jest 25) jest "wyresearchowana" przez j00ru i mnie luka (w tej właśnie kolejności, gdyż to j00ru ją znalazł, a później razem doprowadziliśmy do wynalezienia sposobu jej exploitacji) w procesie systemowym csrss.exe, która pozwala m.in. na podniesienie uprawnień lub ujawnienie wrażliwych danych.


Czytaj dalej...
2010-02-09:

E-mailowy Malware #2 i drobny fail

malware:security:funny
Drugi dzień i kolejny malware na mejlu. Wiadomość w którym przyszedł jest natomiast odrobinę... niedopracowana :)


Czytaj dalej...
2010-02-08:

E-mailowy Malware #1

malware:security
Ostatnimi czasy sporo malware'u wpada na moją skrzynkę pocztową. Pozwolę go sobie tutaj (czyli na blogu) umieszczać - a nuż ktoś kiedyś dostanie podobny e-mail i będzie się zastanawiać czy to fake czy nie :)


Czytaj dalej...
2010-02-01:

Częściowa inicjacja tablic w C/C++

c:c++:easy:programming:asm:x86
Otrzymałem mejlowo (od luqa który zgodził się na publikacje korespondencji ;>) pytanie dotyczące wartości niezainicjowanych elementów częściowo zainicjowanej lokalnej tablicy:


Czytaj dalej...
2010-01-25:

Syndicate Wars Port - a reverse-engineering tale

reverse engineering:re:assembler:games:gamedev:x86:asm:windows:linux:macosx:c:syndicate wars
Syndicate Wars jest grą z roku 1996, stworzoną przez, nieistniejące już zresztą, studio Bullfrog. Gra została napisana w C (Watcom) pod DOS extender DOS4GW i oczywiście przestała działać (natywnie, pomijam rozwiązania typu emulatory) wraz z pojawieniem się współczesnych systemów operacyjnych typu Windows z serii NT. Kilka lat temu Unavowed, będący wiernym fanem tej produkcji, zaproponował mi stworzenie portu tej gry na współczesne OSy, takie jak GNU/Linux czy Windows. Port miał polegać na dekompilacji pliku wykonywalnego gry, zlokalizowaniu wszystkich funkcji standardowej biblioteki C, zależności względem DOS4GW i funkcji I/O (dźwięk, klawiatura, grafika, myszka, etc), wymienieniu ich na natywne libc oraz libSDL/OpenAL (czasem przy pomocy pewnych wrapperów, czy wręcz konwerterów), oraz ponowną rekompilacje do plików wykonywalnych. Dzisiejszego wieczoru udało nam (bo to Unavowed był wyraźnym liderem tego projektu) się ów projekt ukończyć, oraz opublikować, i to nie tylko na zakładane systemu GNU/Linux oraz Windows, ale i dodatkowo na Mac OS X!


Czytaj dalej...
Pomysł na tego posta narzucił mi się już jakiś czas temu (czas mierzony raczej w miesiącach niż w dniach czy tygodniach), ale jakoś tak wyszło, że do tej pory nie został zrealizowany. Post będzie poświęcony komunikacji międzyludzkiej, a dokładniej kilku przypadkom które zaobserwowałem podczas swojej "działalności w Internecie", a także wspomnę co nie co o prowadzeniu bloga. Osoby ze sporym doświadczeniem życiowym raczej w tym poście nic nowego nie znajdą, tak więc zachęcam głównie osoby młode do jego przeczytania :)


Czytaj dalej...
2010-01-17:

GDT and LDT in Windows kernel vulnerability exploitation

medium:x86:assembler:windows:win32:exploit:security
Kilka tygodni temu gościł u mnie j00ru, co, jak można się domyślić, skończyło się kilkoma ciekawymi pomysłami. Jednym z pomysłów było wykorzystanie mechanizmu call-gate'ów w pisaniu exploitów na kernel/drivery pod Windows, a konkretniej chodzi o wykorzystanie write-what-where do przekształcenia LDT w Call-Gate, i tym sposobem podniesienie uprawnień kodu z user-land do ring 0. Efektem tychże rozważań jest "papierek" oraz kilka PoC, które można ściągnąć poniżej.


Czytaj dalej...
2010-01-11:

HITB Magazine (ezin) #1

hitb:ezin:medium
Ezin Hack In The Box, który wychodził w latach 2000 do 2005 (razem 37 numerów), doczekał się wznowienia, tym razem jako kwartalnik. Najnowszy numer zawiera 6 artykułów (w tym jeden mój), co przekłada się na 44 strony, w PDF (link niżej). Imho warto ściągnąć i poczytać, kilka ciekawych rzeczy można się dowiedzieć :)


Czytaj dalej...
2010-01-07:

DR6 może, ale nie musi, być przydatne do detekcji bochs/VirtualPC

medium:x86:assembler:bochs:virtualpc
Tematyka niniejszego postu będzie bardzo podobna do poprzedniego, czyli nadal pozostaje przy opisywaniu niewielkich, ale imho ciekawych, detali architektury x86. Takie detale często bywają przeoczone przez twórców emulatorów czy wirtualizerów, a więc mogą posłużyć do odróżnienia środowiska wirtualnego, od prawdziwej maszyny. Bohaterem dzisiejszego postu jest rejestr DR6, albo, będąc bardziej precyzyjnym, jego cztery pierwsze bity (0-3) czyli B0 do B3, które mówią o spełnieniu bądź nie spełnieniu warunków breakpointu. Prosiłbym o przeczytanie całego postu przed wyciągnięciem wniosków :)


Czytaj dalej...
2009-12-29:

BSWAP + 66h prefix

x86:assembler:bochs:qemu:medium
Ostatnimi czasy przypominam sobie osdev (ostatni raz coś więcej niż boot menu napisałem jakieś 6 lat temu), więc prawdopodobnie parę następnych postów będzie związane z assemblerem, emulatorami x86 oraz podobnymi instytucjami. Dzisiejszy post poświęcę instrukcji bswap reg16 w trybie chronionym, która jak się okazuje może posłużyć np. do detekcji emulatora BOCHS lub QEMU.


Czytaj dalej...
2009-12-23:

ReverseCraft 8 i ReverseCraft Assembler 3

reversecraft:assembler:asm
Taki drobny prezent na święta - ReverseCraft Assembler 3 bez spóźnienia, oraz ReverseCraft 8 tydzień wcześniej :)


Czytaj dalej...
2009-12-14:

Geek's Night

asi:linux:lecture
świece, piwo i ekrany laptopówW sobotę, a raczej w nocy z soboty na niedziele, odbyło się kameralne spotkanie dyskusyjno-prelekcyjne o tematyce związanej z bezpieczeństwem, zorganizowane przez Akademickie Stowarzyszenie Informatyczne. Miałem okazję w nim uczestniczyć, za równo jako słuchasz, jak i jako spontaniczny mówca (prezentacje od zera robiłem już na spotkaniu, gdy się okazało że można coś powiedzieć ;>). I było świetnie!

Czytaj dalej...
2009-12-11:

Resume Flag a detekcja debuggera

re:asm:x86:easy
Na forum UW-Team.org pojawiło się pytanie o wykorzystanie flagi RF (Resume Flag) do detekcji debuggera. Ponieważ nie słyszałem wcześniej o wykorzystaniu tej flagi do anty-dbg, postanowiłem przyjrzeć się bliżej. Poniżej zamieszczam moją odpowiedź na zadane pytanie.


Czytaj dalej...
2009-12-05:

ReverseCraft #7 - Inline hooks, DLL injection

reversecraft:re:blog:assembler
Przed chwilą opublikowałem nowy odcinek, z cyferką 7, ReverseCraft, traktujący o inline hook'ach oraz DLL injection - czyli jest to cofnięcie się odrobinę do podstawowych umiejętności potrzebnych każdemu RE. Odcinek trwa ponad godzinę, z czego 20 minut to część teoretyczna, a 47 to część praktyczna w której pokazuje jak od zera napisać injector DLL oraz jak runtime zaaplikować inline hook przekierowujący wykonania na naszą funkcję. Miłego oglądania!


Czytaj dalej...
Pojawiły się (już parę dni temu) oficjalne wyniki głosowania w ramach konkursu CONFidence Security Evangelist, w tym w kategorii w której mój blog był nominowany, czyli "Blog o bezpieczeństwie IT w języku polskim".


Czytaj dalej...
2009-11-29:

ReverseCraft Assembler 002 - Opcode

reversecraft:re:blog:assembler
Opublikowałem drugi odcinek ReverseCraft: Assembler, opowiadający o budowie pojedynczej instrukcji maszynowej x86, oraz o tym, jak wpływa to na budowę instrukcji w assemblerze (x86, protected mode, 32-bit).


Czytaj dalej...
2009-11-28:

VirusTotal Uploader 2.0

virustotal:project
VirusTotal Uploader 2.0Przedwczoraj na sieć trafił mój najnowszy twór - VirusTotal Uploader w wersji 2.0. Jest to w zasadzie zupełnie inne narzędzie niż te do których Was przyzwyczaiłem, tj. ma okienko (nie jest konsolowe), jest przetestowane i skierowane dla szerszego odbiorcy - a to głownie za sprawą tego iż tworzyłem je w ramach Hispasec.


Czytaj dalej...
2009-11-23:

CONFidence 2.0, materiały, SilkProxy 0.0.1

confidence:confidence 2.0:lecture:c++:python:security
Poniżej zamieszczam linki do prezentacji (PDF) z mojej prelekcji "Practical security in computer games", oraz wersję 0.0.1 alpha SilkProxy. O tym ostatnim parę słów: jest to multi-tunel napisany w C++, skryptowalny w Pythonie, który może służyć kilku do kilku rzeczy, takich jak analiza protokołu, fuzzing ruchu sieciowego puszczonego przez tunel, czy jako proxy. Wersja którą publikuje to wersja którą używałem podczas badań do prezentacji, i jest to wersja robocza, tj. nie wszystko jeszcze działa jak bym chciał, interfejs jest nieudokumentowany i brakuje jeszcze części funkcjonalności - tak więc póki co jest to raczej ciekawostka dla programistów niż coś z czego faktycznie można korzystać. Niemniej jednak zachęcam do rzucenia okiem (w pliku http.py jest prosty przykład użycia; uruchamia się to ./SilkProxy skrypt.py, samo ./SilkProxy też zadziała; do skompilowania trzeba posiadać pythona z headerami/libami do C, oraz GCC (może być MinGW)) ;>


Czytaj dalej...
2009-11-21:

CONFidence 2.0, podsumowanie

confidence:lecture:blog
Wczoraj skończył się drugi dzień CONFidence 2.0, a tym samym druga (w tym roku) edycja CONFidence. Siedzę właśnie w pociągu relacji Warszawa-Wrocław (podróż ponad 6 godzin), więc mam troszkę czasu żeby podsumować ostatnie 2 dni, a zarazem dokończyć przerwany wątek.


Czytaj dalej...
2009-11-20:

CONFidence 2.0, po dniu pierwszym

lecture:confidence:blog
Od wczoraj trwa CONFidence 2.0 i mimo iż jest troszkę mniejsza niż majowa edycja, to w żadnym wypadku nie jest słabsza.


Czytaj dalej...
Na forum uw-team.org exylum zadał pytanie: "czy znak przy konwersji liczb zmiennoprzecinkowych ("," lub ".") zależy od systemu na jakim pracujemy, ustawień regionalnych itp.?". Ponieważ pytanie mnie zaciekawiło, to trochę poszperałem tu i tam, odpowiedziałem na forum i w końcu stwierdziłem że napisze (metodą Kopiego=Pasta) o tym również tutaj, być może kogoś również to zaciekawi.


Czytaj dalej...
2009-11-12:

Windows Win32k syscall table

easy:windows:re:assembler
Szybkie info. j00ru opublikował wczoraj na swoim blogu tablicę nazw i numerów syscalli Win32k (aka shadow table, wykorzystywanej przez user32.dll, gdi32.dll i DirectX) - http://j00ru.vexillium.org/win32k_syscalls/ (w zasadzie jest bardzo podobna do tej z Metasploit, oczywiście z tą różnicą, że zawiera syscalle win32k, a nie kernelowe). Jeżeli lubisz grzebać w niskopoziomowych rzeczach, to na pewno chcesz rzucić na to okiem!


Czytaj dalej...
Od wczoraj (a w zasadzie przedwczorajszej nocy) w sieci jest głośno o nowym języku programowania, stworzonym przez ludzi z Google. Język nazywa się Go i leży między królestwem języków niskopoziomowych (jak C/C++) a królestwem języków wysokopoziomowych (jak Python, Java czy C#) (twórcy mówią o nim 'system programming language') - czyli próbuje łączyć zalety jednych (kompilacja do kodu natywnego, szybkość działania, etc) i drugich (garbage-collector, natywne wsparcie dla wielowątkowości, etc). Wczoraj wieczorem stwierdziłem, że przetestuje ten język i przeportowałem jeden ze swoich raytracerów na niego. Po tym pierwszym rzucie oka stwierdziłem, że podzielę się paroma przemyśleniami (wszystko zawarte w tym poście należy traktować jedynie jako moją opinię, wyrobioną po około 5 godzinach pisania w tym języku; zastrzegam że opinia może mi się zmienić ;>).


Czytaj dalej...
Jak nauczyły nas stare procesory i kompilatory, if'y bywają kosztowne - każdy if tłumaczony jest na jeden lub dwa skoki (w zależności czy to if czy else if), a skoki miały zwyczaj czyścić kolejkę instrukcji do wykonania w CPU, przez co były dość kosztowne. W związku z czym szukało się innych metod na zapisanie serii if'ów, np. za pomocą operacji matematycznych lub logicznych, które były mniej kosztowne (gdy występowały w niewielkiej ilości) niż skoki które czyściły kolejkę instrukcji. Oczywiście nowe procesory pozwalają na oznaczenie bardziej prawdopodobnych skoków (druga grupa prefiksów, prefiksy 2E (branch not taken) i 3E (branch taken)), a nowe kompilatory C/C++ pozwalają oznaczyć czy warunek w if będzie bardziej czy mniej prawdopodobny (patrz __builtin_expect), a nawet można skorzystać z profilerów i samemu sformułować if'y tak aby testowały zawsze te mniej czy bardziej prawdopodobne warunki (oczywiście trzeba wiedzieć jak kompilator tłumaczy kod, ale nie jest to specjalnie trudne). Niemniej jednak czasami nachodzi człowieka ochota żeby zastąpić parę if'ów jakimś ładnym działaniem matematycznym, a tym samym... utrudnić sobie życie ;>


Czytaj dalej...
2009-11-05:

PHP i array, raporty prezentowane na SecDay 2009

secday:easy:php:security
Na SecDay 2009 mówiłem m.in. o tym, że PHP może z zewnątrz przyjmować nie tylko stringi (int'y są też przekazywane jako stringi), ale również arraye (tablice). Jak prezentowałem, niespodziewanymi arrayami można wywołać całkiem niezłą masę warningów, a dodatkowo czasami zmylić logikę skryptu i doprowadzić do pewnych nieoczekiwanych przez twórcę rezultatów (osoby które nie widziały prelekcji, zachęcam do jej obejrzenia). Podczas prelekcji pokazywałem kilka raportów z wynikami testu paru funkcji PHP, obiecując że ów raporty udostępnię - co niniejszym czynie.


Czytaj dalej...
2009-11-02:

Niebezpiecznik.pl

blog:links
Na sieci znalazł się nowy serwis poświęcony tematyce security - http://niebezpiecznik.pl. Serwis prowadzony będzie m.in. przez Piotrka Koniecznego, co w zasadzie może stanowić gwarancje "ciekawości" materiału oraz szerokiego targetu docelowego, jako że imo Piotrek pisze ciekawie zarówno dla profesjonalistów, jak i dla osób interesujące się bezpieczeństwem tylko hobbystycznie.


Czytaj dalej...
2009-10-28:

ReverseCraft #6 - OEP i zrzuty pamięci

reversecraft:re:blog
Opublikowałem szósty odcinek ReverseCraft (serii o reverse engineeringu), w którym pokazuje jak szukać OEP, oraz mówię o sytuacjach w których nie jest to konieczne.


Czytaj dalej...
2009-10-24:

ReverseCraft Assembler 001 - Bliżej systemu...

reversecraft:re:blog:assembler
Po niemałych kłopotach technicznych (takich "na własne życzenie" pod tytułem "zmieniłem system na Linuxa i nie wszystko zadziałało jak należy") udało mi się nagrać i opublikować pierwszy odcinek serii ReverseCraft Assembler, traktujący oczywiście o podstawach języka assembler na platformę x86 (32-bit, PM). Odcinek trwa aż 1h 15m, i dedykowany jest dla osób początkujących oraz takich które zacięły się chwilę później, lub czują że nie do końca wiedzą o co w assemblerze chodzi.


Czytaj dalej...
2009-10-21:

Poradnik Początkującego Programisty

blog:code:easy
Bardzo często zgłaszają się do mnie osoby które programują stosunkowo niedługo, lub właśnie rozpoczynające swoją przygodę z programowaniem, i pytają o to jaką książkę bym polecił do języka XYZ, czy znam jakiś dobry tutorial, ewentualnie jak rozwiązać dany problem (np. jak poprawić błąd kompilacji lub błąd logiczny), czy jaką funkcję użyć aby uzyskać określony efekt. Przez ostatnie 10 lat które "spędziłem" w Internecie takich rozmów odbyłem dziesiątki, jeśli nie setki. Tak więc wychodząc na przeciw przyszłym programistom, postanowiłem stworzyć Poradnik początkującego programisty (słowo "poradnik" jest tutaj kluczowe). Zapraszam do lektury!


Czytaj dalej...
2009-10-20:

Co się dzieje z ReverseCraftem?

reversecraft:re:blog
Czas w końcu wygłosić oficjalne stanowisko, jako że zasypujecie mnie pytaniami w komentarzach, na gg/jabberze i mailowo ;>


Czytaj dalej...
2009-10-15:

SecDay 2009 - Icewall udostępnił nagranie swojej prelekcji

secday:lecture:icewall:malware:security:bugs
Jak w nazwie tematu:


Czytaj dalej...
2009-10-12:

Jesienne przemyślenia

easy:blog
Co jakiś czas przychodzi mi do głowy trochę różnych tematów które jakoś nie mogą trafić do oddzielnego posta, a jednak chciałbym się nimi podzielić. Czas na październikową porcję!


Czytaj dalej...
2009-10-12:

SecDay 2009 - Video

lecture:video:secday:php:security
Zgodnie z obietnicą wrzuciłem online swoją prelekcję z SecDay 2009. Na początek jeszcze pewna uwaga - prelekcja była nagrywana aparatem z wbudowanym mikrofonem, tak że ani jakość dźwięku, ani jakość obrazu nie są najcudowniejsze jakie można sobie wymarzyć. Natomiast nagranie imho da się mimo wszystko oglądać. Korzystając z okazji chciałbym podziękować oshogbo//vx za filmowanie wszystkich prelekcji ludzi z Vexillium i Hispasec: Thx m8! ;>


Czytaj dalej...
2009-09-23:

SecDay 2009 - relacja, materiały

secday:lecture
Czemu to nie działa...SecDay, SecDay, i po SecDay, jak wszystko dobre, niestety i SecDay się skończył. Konferencja była, moim zdaniem, bardzo udana, za równo z punktu widzenia prelegenta (tj. mikrofon mi działał ;>), jak i słuchacza (tj. prelekcje były ciekawe i fajnie poprowadzone ;>).


Czytaj dalej...
2009-09-13:

Dzielenie całkowite i WTF

c:python:perl:ruby:php:easy
Zawsze myślałem że umiem dzielić liczby całkowite i obliczać resztę z takiego dzielenia, ale jak to zwykle bywa, życie zweryfikowało moją ocenę sytuacji, i powiedziało mi "nie umiesz dzielić!". Otóż wziąłem do ręki pewien podręcznik do matematyki (do liceum) w którym definicja dzielenia całkowitego i reszty z dzielenia kapkę odbiegała od mojej. Ofc będąc programistą od razu rzuciłem się do kompa żeby sprawdzić "jak to tam wygląda", i okazało się że nie ma jednej spójnej wersji...


Czytaj dalej...
2009-09-10:

ReverseCraft: opóźnienie i trochę zmian

reversecraft:recraft:re
Najpierw zła wiadomość: niestety kolejny odcinek ReverseCraftu ukaże się najprawdopodobniej dopiero po konferencji SecDay. Na szczęście jest również i dobra wiadomość: razem z szóstym odcinkiem ReverseCraftu pojawią się dwa odcinki serii o assemblerze x86. Dodatkowo strona www projektu dostanie kilka dodatków - będzie to (w końcu) możliwość uploadowania zadań via WWW (przyspieszy to cały proces oceniania, choćby dlatego że do kompa na którego będzie upload mam dostęp z każdego zakątka globu, a nie tylko z lab), ranking, oraz shoutbox (tak dla ułatwienia komunikacji między nami). Po za tym dla osób które rozwiążą zadania lub zrezygnują z ich rozwiązywania będą udostępniane dodatkowe odcinki w których pokazuje jak zrobić dane zadanie oraz prezentuje najciekawsze rozwiązania nadesłane przez Was.


Czytaj dalej...
Czas na kolejną część tematyki PHP internals! Tym razem będzie o popularnym formacie PNG, oczywiście w kontekście obsługi tego formatu przez funkcje getimagesize.


Czytaj dalej...
2009-08-31:

Mój pierwszy laptop - Bondwell B200 (CPU 80C88)

museum:blog:b200:80c88
lap_b200_05.jpgDzisiaj coś z zupełnie innej beczki - mój pierwszy laptop. Wbrew pozorom nie był to ani Pentium 1, ani nawet 386, a coś jeszcze starszego, czyli gratka dla osób zainteresowanych informatyczną archeologią.


Czytaj dalej...
Czas na drugą część (tak, to oznacza że była część pierwsza ;>) posta o getimagesize. Tym razem skupie się bardziej na tym jak getimagesize robi to do czego została stworzona - czyli jak odczytuje wielkość z poszczególnych formatów graficznych. Będzie również o tym dlaczego getimagesize nie powinno się używać do sprawdzania czy uploadowany plik faktycznie jest obrazkiem.


Czytaj dalej...
2009-08-21:

PHP getimagesize internals (część 1)

php:security:easy
Funkcja getimagesize jest, moim zdaniem oczywiście, jedną z bardziej interesujących funkcji wchodzącej w skład standardowego zestawu funkcji PHP (tak, standardowego, mimo iż jej dokumentacja leży w sekcji pełnej funkcji GD). Czemu ta funkcja jest taka interesująca? Po pierwsze, jej implementacja jest długa, a jak wiadomo, dużo kodu = dużo mniejszych lub większych bugów. Po drugie, funkcja ta bardzo często jest wykorzystywana w sposób niewłaściwy, przez co do kodu wprowadzane są pewne interesujące bugi.


Czytaj dalej...
2009-08-19:

ReverseCraft E05

re:easy:video:reversecraft
Krótki news: przed chwilą wrzuciliśmy z Unknow'em ReverseCraft #5. Tym razem tematem są packery - prezentuje ogólną zasadę działania protektorów oraz pokazuje jak zrobić prosty packer (w C++). ReverseCraft jak zwykle dostępny jest w formie online oraz do ściągnięcia (linki na stronie z odcinkiem).


Czytaj dalej...
2009-08-14:

Ciekawe mini-compo dla programistów

compo:code:easy:mininews
Szybkie news: dostałem parę dni temu (thx mulander) info o bardzo fajnym compo organizowanym przez NullCode.pl, a polegającym na rozwiązaniu pewnego zadania programistycznego w jak najmniejszej ilości znaków (tj. kod źródłowy ma mieć jak najmniej znaków). Osobiście uwielbiam tego typu zabawy, więc zachęcam do udziału (a nuż wam też się spodoba). Link do topików z compo: http://nullcode.pl/konkursy-f43.html.


Czytaj dalej...
2009-08-12:

D-Link DI-524 i 2v2 w StarCraft

hardware:router:starcraft
Dzisiejszy post będzie trochę z innej bajki. Mianowicie, od jakiegoś pół roku dysponuje nowym routerem typu SOHO w domu - właśnie tytułowym DI-524 (rev.B), który zastąpił wysłużonego DI-604. I od pół roku miałem problem żeby pograć 2v2 w StarCraft'a siedząc z team partnerem po tej samej - wewnętrznej - stronie routera. Aż do wczoraj...


Czytaj dalej...
2009-08-03:

Plik drivers\etc\hosts i krok dalej

security:windows:medium:re:cpp
Dwa miesiące temu pisałem o trojanach bankowych, o tym że niektóre zmieniają ustawienia DNS, inne dodają listę domen, używanych przez instytucje finansowe, do pliku c:\windows\system32\drivers\etc\hosts. Oczywiście obie z powyższych czynności kończą się przekierowaniem nieświadomego użytkownika na stronę phishingową (i niestety również często utratą pewnej ilości pieniędzy).


Czytaj dalej...
2009-08-01:

ReverseCraft E04

reversecraft:re:easy
Z tygodniowym opóźnieniem na sieć trafia kolejny, czwarty wg stosowanej numeracji, odcinek ReverseCraft. Wszelkie informacje o czym jest odcinek, linki do playera i pliku, oraz dodatkowe materiały znajdują się jak zwykle na stronie projektu, czyli re.coldwind.pl.


Czytaj dalej...
Jak w tytule - w końcu zrobiłem kanał RSS na stronce ReverseCraft.


Czytaj dalej...
Dzisiaj będzie o pewnym ciekawym błędzie znalezionym w kodzie znajomego, oraz o pewnym linku znalezionym w refererach. Link prowadził do...


Czytaj dalej...
2009-07-08:

ReverseCraft E03

re:easy:video:reversecraft
Z drobnym (no dobra, prawie tygodniowym, więc nie takim drobnym ;>) opóźnieniem na sieć powędrował trzeci eps ReverseCraft - mojego video-kursu reverse engineeringu. Tym razem udało się wszystko ładnie zsynchronizować, i online na raz trafiła wersja do oglądania via www (http://videoarty.pl/play_reverse03_reverse_pamiec_proces_i_pe.html), oraz wersja do ściągnięcia (http://www.uw-team.org/index.php?id=videoarty&dzial=reverse). Dodatkowe materiały, takie jak slajdy, cała masa linków, jakiś kawałek kodu i lista zadań (w tym jedno z przygotowanym przeze mnie EXEkiem) dostępne są jak zwykle na stronie projektu, czyli http://re.coldwind.pl. Miłego oglądania!


Czytaj dalej...
2009-07-04:

Losowe przemyślenia, odsłona druga

php:c:c++:funny:security:malware:windows
Z powodów różnych na moim blogu kapkę cicho się zrobiło ostatnio, ale zapewniam że to przejściowe. Niemniej jednak czas zacząć nadrabiać zaległości, i napisać o tym i owym.


Czytaj dalej...
2009-06-19:

ReverseCraft Episode 2

re:reversecraft:easy
Drugi odcinek ReverseCraft trafił na sieć, i jest do ściągnięcia na stronie serwisu UW-Team (jutro lub pojutrze będzie dostępna również wersja do oglądania online). Po za tym stworzyłem pewną drobną stronkę z materiałami do kursu: re.coldwind.pl.


Czytaj dalej...
2009-06-06:

Trojany bankowe - powrót do przeszłości

re:security:easy:malware
Tak się zdarzyło ostatnio że wróciłem do analizy trojanów. Powrót został uczczony prawie 24-godzinny maratonem z różnymi zagranicznymi bankerami, i widać że gdy ja zajmowałem się innymi rzeczami, to autorzy trojanów nie spali - wymyślali coraz to nowe metody żeby ich malware był...  jeszcze słabiej skonstruowany :p


Czytaj dalej...
2009-06-04:

Konferencje++ - SecDay

secday:lecture:wroclaw
Do listy konferencji na których się pojawię został dopisany SecDay. Póki co wiadomo że konferencja ta odbędzie się 21-22 września we Wrocławiu, oraz że organizuje ją ten sam człowiek który organizował SekIT (o którym pisałem) oraz SysDay (o którym również pisałem) - Łukasz Błażys.


Czytaj dalej...
2009-05-27:

Losowe przemyślenia

security:easy:blog:rant
Czytając ostatnio pewne doniesienia prasowe, czy też posty na pewnych blogach, rzuciło mi się w oczy kilka kwestii, o których postanowiłem poblogwać, a w zasadzie porantować ;D


Czytaj dalej...
W niedzielę po raz kolejny postanowiłem pobawić się w wizualizację plików. Wizualizacja plików to temat długi i szeroki, i nawet są strony jej poświęcone, na których to autorzy prezentują kolorowe bitmapki przedstawiające pliki - często 1 do 1, czyli 3 kolejne bajty w pliku traktowane są jako wartości RGB. W moim przypadku natomiast zamiast RGB, będzie X i Y.


Czytaj dalej...
2009-05-20:

CONFidence 2009 ESET crackme - rozwiązanie

re:easy:confidence:crackme:c++
W końcu jakiś techniczny post! A post poświęcony będzie crackme ESET'u, które to było do połamania na tegorocznej edycji CONFidence z numerkiem 2009. Crackme (przygotowanym specjalnie na confidence) pozwoliłem sobie udostępnić (@Marcin/Jakub w razie czego dajcie znać, to zdejmę ;>), tak aby osoby nieobecne na confi również mogły się pobawić:


Czytaj dalej...
2009-05-19:

CONFidence 2009 - gg plz re :)

confidence:blog
Jak pisałem wczoraj, i zresztą już wcześniej, miałem okazję być na tegorocznym CONFidence i, spoilerując już na samym początku, sądzę że była to najlepsza konferencja na jakiej do tej pory byłem :)


Czytaj dalej...
2009-05-18:

RE-Enter teh blog

blog:funny
Witam ponownie po parodniowej przerwie! Wygląda na to że dodanie informacji o binarce uzyskanej od diabla spowodowało wrzucenie mojego bloga na wykop (nie pierwszy raz zresztą), a to z kolei spowodowało znaczy wzrost ilości zapytań, a to z kolei spowodowało kilka crashy apacha na poprzednim (taaak, już poprzednim) hostingu, co spowodowało iż admini wycięli dostęp do bloga ;) Oczywiście, jak to zwykle bywa, zbiegło się to z moim wyjazdem na CONFidence 2009 (świetna konferencja btw, napiszę coś o niej później), więc nie mogłem natychmiast zareagować ;(


Czytaj dalej...
Znajomy (hi diabel! (nie, to nie znaczy że jestem wyznawcą szatana) UPDATE: widziałem propozycję by 'hi diabel' zmienić na 'ave satan', ale chyba nie przejdzie ;D) podesłał mi screena i pewien pliczek. W skrócie: wygląda na to że ktoś zbiera sobie zombie na NK huh. Zacznijmy od screena:


Czytaj dalej...
2009-05-12:

ANSI Escape Codes dla Windows 7 RC

windows:bat:re:winapi:easy:asm:c:c++:tools
Wczoraj j00ru dał mi znać że mój add-on do cmd.exe, dodający jakże to ważną funkcjonalność (tj kolorki), nie funkcjonuje poprawnie na Windows 7 RC - w związku z czym rzuciłem okiem, i tak oto powstała wersja 0.004d!


Czytaj dalej...
2009-04-29:

ReverseCraft E01 part 3

re:easy:video:reversecraft
Wczoraj wieczorem została upubliczniona 3cia i zarazem ostatnia część pierwszego odcinka mojego kursu, a w zasadzie serii videotutoriali, o reverse engineeringu. Ostatnia część dostępna jest tam gdzie zwykle, czyli na serwisie uw-team.


Czytaj dalej...
2009-04-28:

Boot menu i blip

asm:easy:boot:blog
boot menuPewnego razu Xa, który bardzo lubi eksperymentować z OS'ami, chciał zainstalować dodatkowy system operacyjny - nazwijmy go "Gamma System" - na swoim komputerze, na którym był już pewien system - nazwijmy go "Alpha OS". Traf chciał że za równo "Gamma System" jak i "Alpha OS" nie miały boot loaderów które pozwoliły by wybierać który system ma być bootowany, a w dodatku, każdy loader był na tyle indywidualny, że to właśnie on musiał zostać użyty - więc powstał problem. Oczywiście, jak to zwykle bywa, użycie LILO czy GRUB odpadało z przyczyn różnych. W związku z czym dostałem questa - zrobić żeby to jakoś działało.


Czytaj dalej...
2009-04-25:

ReverseCraft E01 part 2

reversecraft:re:easy
Wczoraj wczesnym rankiem (a tak na prawdę późną nocą) na UW-team.org została umieszczona druga część pierwszego odcinka mojego kursu RE.


Czytaj dalej...
2009-04-21:

Enter the ReverseCraft

re:easy:video:reversecraft
Wczoraj wieczorem na serwisie UW-Team pojawiła się pierwsza część (a tak na prawdę to pierwsza część pierwszej części - pierwszy odcinek ma 3 części po 30-40 minut) mojego kursu poświęconego Reverse Engineeringowi (nazwanemu Reverse Craft). Videoart chwilowo dostępny jest tylko do pobrania, ale pewnie niedługo będzie można go również oglądać online (jak tylko będzie stream to dam linka - pewne kłopoty z wielkością video są). Pierwszy odcinek ma być niejako poglądowy i pokazać 'o co w tym RE chodzi' - kolejne odcinki będą miały charakter bardziej edukacyjny ;>


Czytaj dalej...
2009-04-19:

After SEConference 2009, materiały, video

seconference:lecture:security
Wczoraj wieczorem wróciliśmy z Krakowa, a konkretniej z wyjazdu na SEConference 2009 - konferencji o której się rozpisywałem już wcześniej. W dużym skrócie, konferencja na prawdę dała radę - poziom był niezły, prelekcje bardzo ciekawe - szczególnie podeszły mi wykłady (w kolejności chronologicznej) Piotr Łaskawca o web fuzzingu, Piotra Koniecznego o haxxowaniu fizycznych urządzeń codziennego użytku (automaty do koli, windy, czytniki kodów, takie tam) oraz Borysa Łąckiego o sumkach które krążą w undergroundzie (tj. ile trzeba zapłacić na wynajęcie botnetu, etc.). Inne wykłady również trzymały poziom, więc podsumowując, konferencja była na prawdę dobra (szczególnie że była darmowa)!


Czytaj dalej...
Wyrażenie "assemblerowe źródło" mi jakoś nie leży, ale po 15 minutach straconych na próbę wymyślenia czegoś lepszego, co określało by źródło kawałka funkcji stworzonej w assemblerze, i jednocześnie było dość zwięzłe, stwierdziłem że musi zostać. Wracając do tematu, a w zasadzie dopiero go rozpoczynając, dzisiaj będzie o pewnym sposobie którym się wspomogłem podczas gonitwy za bugiem w pewnej dość rozbudowanej funkcji napisanej w asmie (dialekt NASM). Ów funkcja miała wyszukiwać w obrazie biblioteki (w pamięci, MACH-O) adres podanej metody z podanej klasy (objc), z podanej biblioteki na OS X, i składała się z trzech czy czterech zagłębień pętli. No i oczywiście nie działała jak należy, a ręczne debugowanie tego przyjemne nie było (potem się okazało że cały pomysł nie do końca działa, ale to historia na inny dzień).


Czytaj dalej...
2009-03-30:

SysDay 2009 - materiały (i jednorożec)

blog:security:windows:sysday:medium:lecture
gyn pokazuje cos na rzutnikuWczoraj, we Wrocławiu, rozpoczęła się konferencja SysDay 2009, o której pisałem już wcześniej. Pojawiło się masę ciekawych osób, było kilka ciekawych prelekcji - m.in. zawsze ciekawa prelekcja Dariusza Puchalaka o SSH, prelekcja o socjotechnice prowadzona przez Rafała Podsiadłego - która co rusz przeradzała się w żywą dyskusję, prelekcja Sławomira Kobusa z F-secure o Symbian OS (bardzo inspirująca swoją drogą, muszę się przyjrzeć temu systemowi) oraz prelekcja Michała Majchrowicza o m.in. XSSach (huh, nie wiedziałem że można użyć /asdf/ zamiast "asdf" - np. javascript:alert(/asdf/)... ciekawie wyszło moim zdaniem ;>). Tego dnia również ja miałem swoją prelekcję, którą udało mi się jakoś wychrypieć (jestem kapkę przeziębiony, i szczerze się bałem że stracę głos podczas prelekcji... na szczęście orgowie zorganizowali mi szklankę ciepłej wody, i udało się stracić głos dopiero PO prelekcji ;D).


Czytaj dalej...
2009-03-24:

IGK 2k9 i po IGK 2k9

blog:igk:gamedev:gdpl
Kilkudniowa konferencja Inżynierii Gier Komputerowych 2009 organizowana przez Akademie Podlaską (w Siedlcach) dobiegła końca - wczoraj późnym wieczorem trafiłem z powrotem do Wrocławia, a teraz próbuje ogarnąć sprawy które przez te kilka dni się nazbierały. (Tak na prawdę kilka już ogarnąłem, i zrobiłem krótką przerwę żeby naklepać tego posta ;>).


Czytaj dalej...
2009-03-18:

Marcowe compo 3h GDPL - wyniki

gamedev:game
Na GDPL pojawiły się wyniki (dostępne również tutaj). Zgodnie z moimi przewidywaniami Krzysiek K. zasłużenie wygrał ;>. Drugi był maskl ex aequo ze mną, a trzeci Reg. Pełna lista miejsca znajduje się poniżej:


Czytaj dalej...
2009-03-16:

Po marcowym compo 3h GDPL

gamedev:c++:opengl:windows:linux:easy:game
Wczoraj wieczorem od godziny 17:00 do 20:00 odbyło się trzygodzinne compo zorganizowane przez GDPL (a konkretniej przez meehav'a). Tematem przewodnim była 'gra w której jest za równo świnia jak i krowa' (oryginalny temat, przyznaje). Mimo ogólnego braku czasu, stwierdziłem że 3h w niedzielę wieczorem znajdę, i (po akceptacji propozycji przez górę - czyli moją ukochaną żonę ;>) również udało mi się wziąć udział.


Czytaj dalej...
2009-03-14:

OS X, Objective C i RE

macosx:objc:easy:re
Nadszedł dzień w którym rzuciłem w końcu okiem na programowanie aplikacji niekonsolowych na Mac'a. Aplikacja na Maca zazwyczaj tworzy się przy użyciu języka Objective C (z którym jeszcze styczności nie miałem) oraz API Cocoa (OSX'owski odpowiednik WinAPI; kiedyś był jeszcze Carbon). Z punktu widzenia programisty składnia Objective C bardzo mi się spodobała, ale przyznaje szczerze, że Objective C z punktu widzenia RE jest jeszcze ciekawsze ;>


Czytaj dalej...
2009-03-11:

OS X vs Write-What-Where Condition

security:macosx:easy
Jak moi stali czytelnicy wiedzą, od jakiegoś czasu dysponuje MacBookiem z OS X'em. W końcu stwierdziłem że fajnie byłoby sprawdzić jak wygląda exploiting standardowych rodzajów błędów na OS X'ie. Muszę przyznać że raz czy dwa OS X mnie pozytywnie zaskoczył. Natomiast ten post będzie o innym "razie", gdy niespodzianka nie była pozytywna (pod względem bezpieczeństwa), ale niewątpliwie była (hermetycznie) komiczna ;>


Czytaj dalej...
2009-03-09:

Automagiczna lista funkcji w C++

c++:medium:assembler:windows:linux:macosx
Historia zaczyna się jak zwykle. Pisałem pewną aplikację, która generowała pewne pliki testowe. Pliki były do siebie podobne, więc wyciągnąłem wspólny czynnikprzed nawias - zrobiłem generowanie wspólnej podstawy pliku, a potem porobiłem funkcje które zmieniały podstawowy plik (file shader, tylko w GF 15200 GTX! ;>), po czym ów nowy plik był zapisywany. Oczywiście musiałem posiadać pewną tablicę/wektor z tymi funkcjami, którą grzecznie uzupełniałem o każdą dopisaną funkcję. Po 38 funkcji się znudziłem...


Czytaj dalej...
2009-03-04:

Entropia

re:easy
W poprzednim poście pisałem o narzędziu do pomiaru entropii, natomiast kwestię "po co komu pomiar entropii" zostawiłem wtedy na któryś kolejny post. Czas ów postu właśnie nadszedł.


Czytaj dalej...
2009-03-02:

Ent v.0.0.3

re:entropy:easy:c++
Jest pewien tool, stworzony przeze mnie i j00ru, który już jakiś czas temu miałem wrzucić na sieć, ale jakoś tak kod był niepiękny, i nigdy nie było czasu żeby go uładnić. Aż w końcu w weekend będąc u rodziców wziąłem laptopa i przepisałem kod na czysto.


Czytaj dalej...
2009-02-21:

Referer spam, epizod 2

blog:easy:spam
Ostatnio pisałem o spamie w polu referrer nagłówka HTTP - ktoś wymyślił żeby wrzucać tam linki (czasem okraszone BBCodem) prowadzące do sklepów z viagrą, penisami, i powiększaniem zegarków. Najwyraźniej nadeszła nowa, lepsza, fala ów spamu - od wczoraj u mnie w referrerach pojawia się, nie jeden, a kilka linków do różnych sajtów, z czego ostatni to jakaś podstrona mojego bloga, pierwsza to spam, a czasem pojawia się jeszcze jakaś inna niezwiązana stronka.


Czytaj dalej...
2009-02-10:

Kilka losowych spraw...

easy:blog:funny
Ostatnio mam trochę na głowie, więc i wpisów na blogu niedużo. Ale stwierdziłem że uzbierało się kilka drobnych tematów które nie zajmą mi za wiele czasu, więc o nich napiszę.


Czytaj dalej...
2009-02-03:

ExcpHook ver 0.0.5-rc2

excphook:re:windows:security:c++
Wczoraj udało mi się posiedzieć chwilkę nad ExcpHook'iem, w związku z czym prezentuje dzisiaj wersję 0.0.5-rc2 (to jest drugi release candidate wersji alpha 0.0.5, tak, wiem, mam dziwne numerowanie wersji).


Czytaj dalej...
2009-02-02:

Znowu ktoś zapomniał poprawić generator.

easy:security:funny
Dostałem właśnie, na mejla firmowego, taki oto spam:


Czytaj dalej...
2009-02-02:

CloseHandle ciekawsze niż myślałem

winapi:windows:c++:easy:re
Sprawiłem sobie parę dni temu książkę "Windows Via C/C++ (Wydanie piąte)" by Jeffrey Richter i Christophe Nasarre, ot tak aby doszlifować moje WinAPI. Pomysł zakupu okazał się bardzo dobry - już na 50 stronie znalazłem pewną przydatną reverserowi ciekawostkę, którą pozwolę sobie zacytować:


Czytaj dalej...
2009-01-31:

Return-oriented exploiting

medium:windows:c++:asm:security:buffer overflow:return-oriented exploiting
Dzisiaj będzie trochę strikte technicznego security - napiszę co nie co o technice zwanej "return-oriented programming" lub "return-oriented exploiting" lub "ret-to-libc bez wywołań funkcji" lub "ret-to-anything". Jak zwykle podzielę się swoimi spostrzeżeniami co do ów techniki, ponieważ jak zwykle papierki zacząłem czytać po użyciu techniki, zamiast przed nią (to to moje upodobanie do odkrywania koła na nowo).


Czytaj dalej...
2009-01-30:

Nowy layout

blog
Jak widzicie, Xa zgodnie z "groźbą" dostarczył nowy lay ;> Pewne rzeczy jeszcze nie są do końca ostylowane, a i jakieś poprawki w ostylowanych już rzeczach się pewnie też trafią. Ale ogólnie nowy lay _jest_.


Czytaj dalej...
2009-01-26:

CPC464 i kasety

cpc464:easy
Kilka dni spokoju ode mnie było (przeziębienie i takie tam). Czas z tym Skończyć :D


Czytaj dalej...
2009-01-20:

Windows 7 - lista zmian w exportach, update

win7:windows:winapi:easy:re
Zrobiłem jeszcze parę porównań w exportach między Windowsem Vista SP1, a Windowsem 7 beta.


Czytaj dalej...
2009-01-19:

SIN*COS

c++:easy:gfx
drillDzisiejszy post nie będzie już o cmd.exe i BATach. Zamiast tego dzisiaj będzie trochę rysowania w C++, a konkretniej rysować będziemy nie my, a funkcje sin oraz cos.

Czytaj dalej...
2009-01-16:

Supportu dla ANSI escape codes w cmd.exe i skryptach BAT

windows:bat:re:winapi:easy:asm:c:c++
Begin teh Update


Czytaj dalej...
2009-01-14:

OpenGL w skryptach .BAT

bat:windows:easy:opengl:c++
Zgodnie z obietnicą, dzisiaj będzie o wykorzystaniu OpenGL w skryptach .BAT. Chciałbym jednak od razu przypomnieć, że .BAT z szybkością dużo wspólnego nie ma ;> (mimo to pod koniec co nie co o optymalizacji napiszę i tak).


Czytaj dalej...
2009-01-11:

Windows 7 - lista zmian w exportach kernel32.dll

win7:windows:winapi:easy:re
W końcu od wczoraj oficjalnie (bo nieoficjalnie już od jakiegoś czasu) można ściągnąć Windows 7 wersję BETA. Ściągnąłem, zainstalowałem (ładnie wygląda), i zacząłem grzebać.


Czytaj dalej...
2009-01-10:

Skrypty .BAT i programowanie obiektowe

bat:windows:medium
UPDATE: Zgodnie z obietnicą (z końca tego postu) wrzuciłem post o OpenGL w .BAT.


Czytaj dalej...
Nie wiem co jest z tym tygodniem, ale co wpadnie mi w ręce jakiś nowy kawałek sprzętu, to muszę spędzić sporo czasu próbując go uruchomić (a wszystko przez software!).


Czytaj dalej...
2009-01-03:

Światłowór - kod z CPC, wnioski

cpc464:basic:easy
Noc się skończyła, i dane przesyłane z CPC na PCta również skończyły się przesyłać (zrzut pamięci, jeśli kogoś interesuje, można ściągnąć tutaj). Kod z CPC również przepisałem - listing jest na końcu postu.


Czytaj dalej...
cpc464+kamera+laptopW oczekiwaniu na nowy programator (który pewnie przyjdzie "pod koniec tygodnia") stwierdziłem że przydałoby się przerzucić zrzut RAM'u z Amstradzika na PCta. Powstało pytanie - jak to zrobić nie mając żadnych kabelków, dyskietek, etc? Okazuje się że jest pewien (pewnie nie jeden), bardzo zabawny moim zdaniem, sposób ;D

Czytaj dalej...
2008-12-30:

CPC 464

cpc464:easy:basic
Ogólnie rzecz biorąc, dobrze jest mieć żonę. A szczególnie taką, która znajduje w przysłowiowej szafie starego Amstrad-Schneider CPC 464 (64k Colour Personal Computer). Tak więc dostałem nową zabawkę (yeey kolejna ciekawa architektura do rozpoznania ;D), o której pewnie kilka postów z czasem się pojawi.

Czytaj dalej...
2008-12-29:

Strzępki kodu

easy
W menu po prawej w sekcjach (pod linkami do postów) dodałem link do działu z małymi kawałkami kodu które kiedyś tam naklepałem. Są to raczej proste rzeczy, przeznaczone dla bardziej początkujących czytelników, ale z czasem postaram się tam jakieś ciekawostki też powrzucać.


Czytaj dalej...
2008-12-16:

Malware "kradnący" AppInit_DLLs

re:malware:windows:security:easy
W moje ręce dostał się pewien szkodnik, którego najciekawszym punktem był entrypoint użyty do uruchomienia szkodnika po reboocie systemu.


Czytaj dalej...
2008-12-07:

LOOP vs. domyślny assembler na Mac OS X

assembler:macosx:easy
Panowie z Apple chyba lubią stare toolsy. Ostatnio grzebiąc z Unavowed'em przy pewnym projekcie (o którym napisze przy innej okazji), a konkretniej, próbując ów projekt przeportować na Mac OS X'a, natrafiliśmy na pewną przeszkodę która przedstawiła się nam jako Apple Inc version cctools-698.1~1, GNU assembler version 1.38. Jest to defaultowy assembler (as) używany na (aktualnym) Mac OS X, i najwyraźniej pamięta on jeszcze czasy gdy na chleb mówiłem 'bep' a na muchy 'tapty' (oby to 1.38 oznaczało tylko inną numeracje, ponieważ - dla porównania, obecna wersja wg. wiki to 2.19, mój MinGW twierdzi że ma wersje 2.18.50, w roku 2000 była wydana wersja 2.11, a w obecnym changelogu as najstarszy wpis dotyczy wersji 1.93.01).


Czytaj dalej...
2008-11-23:

Zabawna oferta pracy dla ...

security
Na moją skrzynkę trafiły dzisiaj dwie identyczne spamowe oferty pracy, które wyglądały następująco:


Czytaj dalej...
Siedząc w pokoju hotelowym na PyCONie naszło mnie żeby sprawdzić co się dzieje jeśli wyczyści się procesowi całą pamięć (lub proces sam sobie ją wyczyści). "Wyczyści" w znaczeniu uwolni co się da (VirtualFree oraz UnmapViewOfFile), a resztę w miarę możliwości wyzeruje. Eksperyment miał za zadanie sprawdzić przy okazji jak zareaguje na to system, oraz inne aplikacje.


Czytaj dalej...
2008-11-06:

.S.k.y.

c++:gfx:code:easy
Niecałe pół roku temu stwierdziłem że przydała by mi się animowana tapetka, generowana realtime, ale bez użycia akceleracji 3D (tj. bez OpenGL/D3D). sky_full Dodatkowymi założeniami był FPS - mógł być bardzo niski, na poziomie 2-3 klatek na sekundę, oraz wykorzystanie kilku core'ów (do 4rech). Jak to w życiu bywa, naklepałem troszkę kodu, po czym zająłem się innymi rzeczami. Efekt może powalający nie wyszedł, ale zdecydowałem się i tak opisać to co mi wyszło - może kogoś to zainteresuje ;> (na obrazki, z wyjątkiem height mapy, można klikać; kod źródłowy dla Windowsa/Maca/Linuxa i filmik są na końcu postu).


Czytaj dalej...
Miałem dzisiaj przyjemność prowadzić prelekcje na Wrocławskim spotkaniu ISSA. Prezentacja wraz z filmami dostępna jest tutaj. Wszelkie uwagi mile widziane, szczególnie te krytyczne ;>


Czytaj dalej...
2008-10-22:

Format bug, Vista i %n

vista:windows:winapi:c:c++:format bug:security:easy
Rozmawiałem ostatnio z oshogbo z mojego teamu o format bugu, i gdy doszliśmy do testowania przykładowego kodu, okazało się że to co powinno działać - tag %n, nie działa. Co ciekawe, problem wydawał się dotyczyć jedynie Windowsa Vista, ponieważ na XP wszystko śmigało aż miło. Postanowiłem kapkę wgłębić się w problem, i oto co się dowiedziałem...


Czytaj dalej...
2008-10-20:

Ciekawy schemat anty-re

re:malware:windows:security:easy:winapi
Jakiś czas temu analizowałem pewien malware, na który nałożony został bardzo ciekawy paker...


Czytaj dalej...
2008-10-13:

Brakująca funkcja gettimeofday i race condition

c:c++:race condition:windows:easy:winapi
Dzisiaj będzie post wyrwany z kontekstu. Post będzie dotyczył funkcji gettimeofday na Windowsie, a raczej jej braku.


Czytaj dalej...
2008-10-04:

SekIT 2008 - relacja

lecture:easy
Jakoś tak mam zwyczaj ostatnio newsy zaczynać od "no, w końcu mam chwilę czasu żeby coś napisać". Tym razem... nie będzie inaczej ;D


Czytaj dalej...
2008-09-30:

Hacker Challenge 2008

re:easy:windows
Wygląda na to że 13 października zaczyna się pierwszy etap Hacker Challenge - amerykańskiego konkursu dla RE. Z tego co widzę w tym roku o połowę obcięli wysokość nagród, widać kryzys faktycznie im zalazł za skórę. Anyway, zachęcam RE do zainteresowania się tym konkursem - wszystkie miejsca są nagradzane.


Czytaj dalej...
2008-09-30:

Security Days - zadanie 3,4

security:easy
W piątek w nocy C++ mnie wchłonęło, i wypuściło dopiero w poniedziałek rano (z krótkimi przerwami na sen, i na skok do kina na Babylon A.D., który moim zdaniem jest całkiem niezły, i bardzo klimatyczny, chociaż zakończenie... cóż, widać że studio skróciło film o 70 minut wbrew woli reżysera, nic tylko czekać na wersję reżyserską), więc dopiero teraz kolejny obiecany post hehe.


Czytaj dalej...
2008-09-25:

Security Days 6 - zadanie 2

security:easy
Trochę się u mnie sprawy uspokoiły, więc wracam do opisywania zadanek z tegorocznego SD6. Z uwagi na późną godzinę dzisiaj opisze tylko jedno, a opisy kolejnych znajdą się w następnych dniach. Dodam że polskojęzyczni czytelnicy mogą znaleźć rozwiązania na oficjalnym forum SD6, natomiast, z uwagi na to że większość zadań była skonstruowana tak, że istniało kilka rozwiązań, oraz z uwagi na fakt iż mojego bloga czytają również osoby nie związane z językiem polskim, i tak opisze zadanka z SD6 po swojemu ;>


Czytaj dalej...
Nadal jestem niestety trochę przeziębiony, i większość czasu spędzam kurując się, więc ponownie krótki news (ale mam nadzieje że jutro już coś ciekawego merytorycznie napiszę).


Czytaj dalej...
2008-09-15:

Prezentacja z SekIT 2008

lecture:easy
Szybki news. Wrzuciłem na server moją prezentacje (z filmikami) z SekIT (24mb).


Czytaj dalej...
2008-09-12:

SekIT 2008

lecture
Za jakieś dwie godziny wyruszam (razem z kanedaaa) na SekIT, nową konferencję z działki bezpieczeństwa komputerowego. Jakoś tak wyszło że tym razem jako prelegent - czyli będę przez 45 minut się produkował na scenie ku uciesze (taką mam przynajmniej nadzieje) publiki ;> A mówił będę o bankerach, czyli trojanach bankowych. Będzie ogólny przegląd, kilka filmików, i sporo machania rękami. Prezentację z filmikami wrzucę po SekIT gdzieś tutaj.


Czytaj dalej...
Dziś wieczorem rozpoczęła się druga część etapu 1, więc mogę w końcu napisać coś o zadaniu pierwszym.


Czytaj dalej...
2008-09-09:

Security Days 6, dzień 1

security:rant
Jak zainteresowanym wiadomo, wczoraj o 20 rozpoczął się pierwszy dzień interenetowego etapu Security Days 6. Termin nadsyłania zadanek wstępnie został ustalony na dzisiaj na godzinę 21, jednak z powodu ataku (DDoS podobno) na główną stronę konkursu został przesunięty na jutro na 21. Cóż, szkoda, bo chciałem opisać już dzisiaj pierwsze zadanie praktyczne, które było moim zdaniem odpowiednie na dzień pierwszy - dość proste, ale nawet ciekawe. Cóż, niestety będę mógł o tym napisać dopiero jutro ;>


Czytaj dalej...
Przy okazji pojawienia się ponownie informacji o tym że Google Chrome ściąga pliki bez pytania na bugtraq wznowiła się dyskusja o tym czy jest to bug, feature, czy może vuln (luka w bezpieczeństwie).


Czytaj dalej...
2008-09-05:

Remote Buffer Overflow w Google Chrome

chrome:security:buffer overflow:windows
Krótka ciekawostka. Na liście FD pojawiło się info o Remote Buffer Overflow w Chrome (by Le Duc Anh - SVRT - Bkis), wymagającym jednak nieznacznej ingerencji usera - kliknięcia 'Zapisz jako...' (buffer overflow ma miejsce w obsłudze tagu <title>). Researcher udostępnił dwa exploity PoC, jeden uruchamiający kalkulator (dostosowany podobno pod XP SP2, jednak u mnie coś on nie działa), oraz drugi po prostu crashujący cały browser. Należy zaznaczyć że CAŁY chrome się crashuje, a nie tylko pojedynczy tab - widać błąd ma miejsce w browserze, lub jest w jakiś magiczny sposób przenoszony z renderera do browsera.


Czytaj dalej...
2008-08-28:

Security Days 6

security:easy
Hi,


Czytaj dalej...
2008-08-26:

Stare advisory

security:easy:blog
Bardzo krótki news...


Czytaj dalej...
2008-08-26:

Włókna w nici, czyli fibers vs threads.

windows:winapi:c:c++
Zainspirowany postem noglorp'a na OpenRCE zdecydowałem się pobawić w końcu fiberami pod Windowsem, i okazało się że to całkiem interesujący temat.


Czytaj dalej...
2008-08-25:

Metaball, Python+Pygame+Psyco i SDL+C++

python:c++:easy


Czytaj dalej...
2008-08-17:

Funkcje typu naked w gcc/g++

c:c++:assembler:gcc:g++:asm
Ostatnio miałem okazję tworzyć w C++ (MinGW g++) pewną małą bibliotekę do runtime-patchów. W pewnym momencie zaszła potrzeba stworzenia funkcji w całości w assemblerze, bez żadnych dodatków ze strony kompilatora, czyli po prostu chodziło o funkcję "naked". Niestety, o ile kompilatory rodem z Redmond udostępniają atrybut __declspec(naked) dla x86 [Visual C++ Language Reference - naked (C++)], to kompilatory z GNU Compiler Collection obsługują "naked" jedynie w portach kompilatorów dla ARM, AVR, IP2K i SPU [Using the GNU Compiler Collection (For GCC version 4.3.0) - Function Attributes]. Powstał więc pewien problem który miałby kilka rozwiązań:


Czytaj dalej...