Skocz do zawartości

DevStart Blogi

Członkowie
  • Postów

    1 369
  • Dołączył

  • Ostatnio

    Nigdy
  • Days Won

    2

Wszystko napisane przez DevStart Blogi

  1. Autorem notatki jest Dorota Kostowska. Zobacz inne na stronie wydarzenia WordUp – Warszawa wiosna.Wyświetl pełny artykuł
  2. Dziś wpis, który nie tak dawno temu zapowiadałem już na Facebooku – na temat ECMAScript 6 prowadziłem ostatnio Lightning Talka (krótka prezentacja, maks 15 minut) u mnie w firmie i pomyślałem, że szkoda by było zmarnować zebrany materiał. Dlatego też dziś wersja blogowa tamtej prezentacji 😉 Na początek, dla porządku warto wspomnieć (w razie jakby... Czytaj dalej The post ECMAScript 6 – co nowego w JavaScript? appeared first on burczu programator. Wyświetl pełny artykuł
  3. Naiwny ja: podpisałem umowę o pracę, miałem zacząć od następnego miesiąca pracować… ale nie miałem jeszcze gdzie mieszkać. Myślałem, że mając przyzwoitą pensję bez większego problemu wynajmę mieszkanie. Nic bardziej mylnego. 😀 Z powodu przesadnego protekcjonizmu państwa (nie jest łatwo pozbyć się lokatora, który nie płaci) nie tak łatwo w Niemczech wynająć mieszkanie. Tym bardziej, […]Wyświetl pełny artykuł
  4. W piątek 6 marca 2015 odbył się pierwszy Warszawski WordUp na którym pojawiło się naprawdę sporo osób. Tak na oko było nas spokojnie ponad 50 dusz. Jak zwykle była fantastyczna atmosfera o którą mocno zadbała Ewelina Muc, której firma Siedemtrzy Studio była sponsorem, a ona sama organizatorem spinającym wszystko razem. Niestety dla mnie, musiałem wyjść przed końcem prezentacji, więc nie wiem jak … Czytaj dalej WordUp Warszawa – Wiosna 2015Wyświetl pełny artykuł
  5. Today I’m going to show you how I’m (probably) the only advertiser that can reach all of Moz.com’s users via Facebook. I’m also going to show you that for every industry you care about, you should have at least two fan pages to cover it. I’ll also show you how you can steal the best […]Wyświetl pełny artykuł
  6. Przegląd „Programisty” 01/2015 (32) Jak w przypadku poprzedniego przeglądu, również tym razem można wygrać egzemplarz elektroniczny numeru z przeglądu. Wystarczy zaplusować wpis na wykopowym mirkoblogu lub udostępnić wpis na FB. Losowanie 3 zwycięzców odbędzie się jutro. Wyświetl pełny artykuł
  7. Get the file : # wget http://bostonkeyparty.net/challenge.pcapng.28c58da9dd07532d45aa68f9b825941e# file challenge.pcapng.28c58da9dd07532d45aa68f9b825941e challenge.pcapng.28c58da9dd07532d45aa68f9b825941e: pcap-ng capture file - version 1.0 Lot of USB data inside:# tshark -r challenge.pcapng.28c58da9dd07532d45aa68f9b825941e | head 1 0.000000000 host -> 1.0 64 USBHUB GET_STATUS Request 2 0.000011000 1.0 -> host 68 USBHUB GET_STATUS Response 3 0.074167000 host -> 12.0 64 USB GET DESCRIPTOR Request DEVICE 4 0.075077000 12.0 -> host 82 USB GET DESCRIPTOR Response DEVICE 5 0.150556000 host -> 1.0 64 USBHUB GET_STATUS Request 6 0.000015000 host -> 1.0 64 USBHUB GET_STATUS Request Device [12.0] description:DEVICE DESCRIPTOR bLength: 18 bDescriptorType: DEVICE (1) bcdUSB: 0x0200 bDeviceClass: Use class info in Interface Descriptor (0x00) bDeviceSubClass: 0 bDeviceProtocol: 0 bMaxPacketSize0: 8 idVendor: 0x046d <---- Logitech Inc. idProduct: 0xc00e <---- Logitech Optical Mouse, bcdDevice: 0x1100 iManufacturer: 1 iProduct: 2 iSerialNumber: 0 bNumConfigurations: 1( Ref: http://www.pcidatabase.com/vendor_details.php?id=1691) Take sample data:# tshark -r challenge.pcapng.28c58da9dd07532d45aa68f9b825941e 'usb.device_address == 12' -x....105 5.078857000 12.1 -> host 68 USB URB_INTERRUPT in0000 c0 44 a9 c7 00 88 ff ff 43 01 81 0c 02 00 2d 00 .D......C.....-.0010 7f 99 ea 54 00 00 00 00 93 3c 09 00 00 00 00 00 ...T.....<......0020 04 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 ................0030 08 00 00 00 00 00 00 00 04 02 00 00 00 00 00 00 ................0040 00 01 00 00 .... Find tech spec:struct mouse_report_t{ uint8_t buttons; int8_t x; int8_t y; int8_t wheel;} Write parser -> och it is on-screen keyboard:)Enhance parser : Wyświetl pełny artykuł
  8. W pierwszej części pokazującej dziedziczenie w JavaScript, pokazałem tzw. podejście „klasyczne”, mające niby być najbardziej zbliżonym do tego, spotykanego w językach programowania posiadających silne typowanie. Tamten wpis wywołał pewne kontrowersje… Być może ja nie do końca dobrze wszystko wyjaśniłem, a może to ja się mylę 😉 Nie jestem alfą i omegą… Jednak zostawmy już w... Czytaj dalej The post Dziedziczenie w JavaScript? Rozwiązanie tajemnicy – część #2 appeared first on burczu programator. Wyświetl pełny artykuł
  9. Welcome to my first ever blog post in 2015. It comes before I embark on a huge Facebook series which I promise will be worth the premium price I was originally planning to sell the information for. I realised that before I talk about how to utilise Facebook to grow a huge audience and make […]Wyświetl pełny artykuł
  10. Kolejne pytanie, które często pojawia mi się w skrzynce pocztowej. Dlatego postaram się zbiorowo odpowiedzieć na to w jednym miejscu, by w przyszłości móc wysłać link do tego materiału, a nie odpisywać każdemu z osobna. 😉 WAŻNE. Bardzo, bardzo, ale to bardzo ważne: chcę przybliżyć Wam moją opinię na ten temat. Pod żadnym pozorem nie […]Wyświetl pełny artykuł
  11. Ostatnio w projekcie natrafiłem na problem, który najlepiej było rozwiązać stosując dziedziczenie. Niby prosta sprawa, „podstawowe podstawy” każdego obiektowego języka programowania. Jak jednak się pewnie domyślacie, dziedziczenie w JavaScript „nieco” różni się od tego klasycznego podejścia, znanego z innych języków programowania, a ja zdałem sobie sprawę, że choć na tym blogu poruszam różnorakie (i na... Czytaj dalej The post Dziedziczenie w JavaScript? Rozwiązanie tajemnicy – część #1 appeared first on burczu programator. Wyświetl pełny artykuł
  12. Dzisiejszy filtr pozwala na zmianę listy dopuszczonych typów plików, jakie można dodać do mediów. Jest jeden kruczek. Jeżeli WordPress, którego używasz pracuje w trybie pojedynczej witryny, a popełniasz ten błąd, że publikujesz z konta administratora, to opisywany problem i jego rozwiązanie ciebie nie dotyczy. Zwyczajnie go nie zauważysz, bo WP nie ma, a tym bardziej konto administratora nie ma ograniczeń w dodawaniu plików. Jeżeli natomiast choć … Czytaj dalej Filtr dnia: upload_mimesWyświetl pełny artykuł
  13. Walidacja formularzy w AngularJS jest moim zdaniem jednym z największych minusów tego frameworka. Ja jako programista z doświadczeniem w C# i ASP.NET MVC byłem przyzwyczajony do czegoś zupełnie innego… Tam wystarczy właściwości modelu oznaczyć odpowiednimi atrybutami i użyć odpowiedniego „helpera” na widoku, a mechanizm „jQuery unobtrusive validation” robi resztę za mnie – oczywiście przy bardziej... Czytaj dalej The post Angular Auto Validate – dziecinnie prosta walidacja formularzy appeared first on burczu programator. Wyświetl pełny artykuł
  14. KnockoutJS jest JavaScriptowym frameworkiem MVC/MVVM, który wykorzystujemy w projekcie, w którym obecnie biorę udział. Co prawda nie opisywałem go w moim wpisie dotyczącym tego rodzaju frameworków, ale jest on pełnoprawnym przedstawicielem swojego gatunku, a od wersji 3.2.0, która to pojawiła się w połowie zeszłego (2014) roku wprowadzono kilka „ficzerów”, które spowodowały, że teraz patrzę na... Czytaj dalej The post Komponenty – nowość w KnockoutJS appeared first on burczu programator. Wyświetl pełny artykuł
  15. Postanowiłem, że zamiast ślepo brnąć do przodu i zdobywać kolejnych subskrybentów i fanów na FB przez wrzucanie co tydzień podobnej formuły, warto na chwilę się zatrzymać i zastanowić się co dalej. W filmiku macie więcej na ten temat. Temat odcinka „Programisty Na Emigracji” – Negocjowanie stawki jako programista oraz od czego zależy to ile zarabiacie. […]Wyświetl pełny artykuł
  16. Hej! W związku z tym, że jestem „obłożnie” chory i przebywam w domu na L4 to dziś temat trochę lżejszy i mniej techniczny – nie mam siły na wymyślanie przykładów… 😉 Dlatego też, postanowiłem przedstawić Wam zajebiste narzędzie, o którym wcześniej nie słyszałem, a na które natknęła się ostatnio koleżanka pracująca ze mną w projekcie,... Czytaj dalej The post Yeoman – zawsze tego szukałem tylko o tym nie wiedziałem! appeared first on burczu programator. Wyświetl pełny artykuł
  17. Jakiś czas temu pisałem tutaj na blogu na temat różnego rodzaju frameworków JavaScript. Dla przypomnienia, porównałem w nim takie frameworki jak BackboneJS, EmberJS oraz AngularJS. Myślę, że tematyka „frameworkowa” będzie się na łamach tego bloga przewijać wielokrotnie i dziś jest jeden z takich właśnie momentów – podstawy AngularJS Wpis powstał na podstawie krótkiej prezentacji na... Czytaj dalej The post Podstawy AngularJS – minimum które musisz znać appeared first on burczu programator. Wyświetl pełny artykuł
  18. Myślę, że każdy kto czyta mojego bloga zauważył, że jeśli opisuję jakiś przykładowy kod, często wrzucam dodatkowo link do jsfiddle. Żeby nie było – uważam, że to świetne narzędzie, które wielokrotnie przydało mi się nie tylko podczas tworzenia wpisów na bloga ale nawet częściej przy codziennej pracy, kiedy to trzeba było zrobić na szybko jakiś... Czytaj dalej The post Codepen czyli jak ułatwić życie programisty blogera appeared first on burczu programator. Wyświetl pełny artykuł
  19. Because you guys found this keygen-me very hard and interesting (thanks!) during the game we've decided to publish the sources of re300 task which was one of the challenges in the teaser organised by us this year. In fact this crack-me is a bit large (if it's not so visible in compiled version you can check the sources) and the main idea behind was to give you some fun in front of disassembler and debugger and enforce you to catch some patterns and recognise structures which were used without decompiling all of the code. In fact, the original one was a stripped mach-o binary that was found to be a bit too challenging ;) and about 24h before the CTF it appeared that it'll be elf64 binary with the symbols included. For win-reversers: I can promise that next time it will be something for you too! And finally here are the sources. warning: spoilers below!So in few words: the big trouble here, without questions, was the RE part - but it could by a bit bypassed by setting the right breakpoints and dumping the code. In fact the very good results could be achieved by disassembling only virtual machine instructions and than use some semi-automatic approach and dump the instruction with its arguments when the breakpoint was hit. Having the code (you can find nice emulator here, good work smola) the next step was to understand that it's not reversible (it is a version of a serpent encryption and decryption) and to brute force it. But bruteforcing 48bit hash could be a little bit slow as for 36h CTF, so the great performance boost could be achieved using birthday attack to crack the password and the token both at the same time. For those interested in practical solution: the sources of keygen.Wyświetl pełny artykuł
  20. W ostatnią środę, czyli 21 stycznia 2015 roku Microsoft zaprezentował nowy system Windows 10. Konferencja giganta z Redmond przyniosła wiele ciekawych informacji – m.in. dowiedzieliśmy się, że nowy system operacyjny będzie przez rok od dnia premiery dostępny za darmo dla wszystkich obecnych użytkowników Windowsa począwszy od wersji 7. Komentarzy na ten temat możecie przeczytać w... Czytaj dalej The post Czy przeglądarka „Spartan” wreszcie ułatwi nam życie? appeared first on burczu programator. Wyświetl pełny artykuł
  21. Już kiedyś pisałam o CodeCombat w kontekście gier do nauki Ruby. W tamtym czasie miałam ogarnięte jedynie podstawy, bo byłam skupiona na Ruby i nie chciałam się rozdrabniać. Wczoraj wbiłam w CodeCombat 11 poziom więc mogę napisać coś więcej. Gra jest dostępna za darmo. Jest opcja mikropłatności, gdzie kupujemy diamenty, które możemy wydać w sklepie. […] The post CodeCombat – gra dla fanów Pythona appeared first on Blog programistyczny | Nauka Pythona | MAGDUM. Wyświetl pełny artykuł
  22. Dlaczego tak wielu programistów tak często rzuca tytułowym tekstem (któremu zwykle towarzyszą mniej parlamentarne przerywniki) wykonując gest jak na zdjęciu powyżej? Odpowiedzi pewnie nie trzeba daleko szukać, dlatego dziś postanowiłem przyjrzeć się kilku powodom, dla których pada tak wiele pomstowań i siarczystych przekleństw z tak wielu pokoi projektowych Wybrałem 4 najczęstsze błędy JavaScript, bo niestety... Czytaj dalej The post Nienawidzę JavaScript’u! 4 najczęstsze błędy JavaScript jakie popełniasz appeared first on burczu programator. Wyświetl pełny artykuł
  23. Intro After selecting this challenge we were welcomed by a rather laconic description: Once connected to the service, we were greeted by the following menu: Menu It appeared to be some kind of a storage service for ASCII art. We could upload ASCII arts, add comments and apply filters. After fuzzing the input for a while we didn’t discover anything useful, so it was time to look inside the executable. Reversing the binary The file command revealed that it was an x86 ELF executable. After opening it in IDA we could see a main loop which was responsible for displaying the minimalistic menu shown in the previous picture. Its C representation looks something like that: Main function Because vulnerabilities are often caused by badly handled user input it is a good idea to look for some potential overflows. There are 3 places where input from user is requested:the read_3_digits functionthe add_art functionthe add_comment function Unfortunately we were not able to find any obvious problems in the code. In every single place the length of input was limited and buffers were large enough to store the input data. When adding a new structure, the program looked for the first free slot and placed the structure there. We reconstructed the “art” and “comment” structures, which were both 256 bytes long: Vulnerability These structures were filled when a new ASCII art or a comment was added. The interesting fact was that, when a comment was added, 252 bytes of input were read into a buffer of size 251, so there was an overflow after all! It was just a single byte, but that was all we needed. Using this one byte we could overwrite the first byte of the next structure which was a type field. So we could convert a comment object into an art object and vice versa. The first one was particularly useful because when a comment was interpreted as an ascii_art then the first 4 bytes of the comment string were interpreted as a function pointer named “filter_method”. By applying a filter we would be executing arbitrary address with our string as first argument. In other words, we could simply call system() and get a remote shell. :) All we needed was to overwrite a comment and change it to art. After that there would be two ascii_art structures with the same id (ascii art and its comment converted to ascii_art). We needed our transformed comment to be earlier in memory so that it was selected first. We achieved this by making use of the remove_comments function. This step could have been done in many different ways but we discovered the following first: Add two ascii_arts A1 and A2.Add two comments C1 and C2 (Cx is a comment for Ax).Add ascii_art A3.Remove comment C2 and add comment C3 (it will be put in C2’s place).Remove comment C1 and add comment C2 (it will be put in C1’s place). With the last one we overwrited C3’s type field and turned it into an ascii art. It was placed before the original A3 and thus when ascii art with id=3 was requested our spoofed art was selected. Applying a filter resulted in arbitrary address call with the argument being an address of a controlled string. Exploitation Because ASLR as well as NX were enabled (no PIE/RELOC though), we needed a memory leak in order to call the system function (or we could have created a ROP but come on - we had function call with our string as argument). Fortunately for us, there was a printf function imported by the executable, so we could force a format string vulnerability by simply calling it with a controlled string. Sadly, our format string was not stored on the stack, so leaking .got entries became much, much harder than it typically is. Cheer up, not everything was lost. The “main” function is not called directly at program startup but through the __libc_start_main function which is a part of libc, so the return address from the main function also resides in libc. And this one is definitely on the stack. After finding the correct offset and leaking the address, all we needed to do in order to get the flag was to find out what version of libc the system was using (so we could calculate the distance between the leaked return address and the system function). In the end, we failed to identify the specific libc build and consequently had to brute force the offset remotely. It took approximately 8 hours, but we eventually got the system address right and obtained the flag. Conclusions To exploit this challenge we used function pointer overwrite, combined with custom memory management, and then forced format string vulnerability by calling printf function. Knowing libc base address we called system() and spawned remote shell. It was a great CTF challenge and I personally enjoyed how the solution leveraged one vulnerability to cause another. I thank the organizers for interesting contest and I hope it will be even better next year. Wyświetl pełny artykuł
  24. Dziś przedstawiam jeden ze znanych JavaScript’owych wzorców projektowych czyli tytułowy „Memoization„, a po naszemu po prostu wzorzec zapamiętywania. Wzorzec ten opiera się na właściwości języka JavaScript polegającej na tym, że każda funkcja jest obiektem. A skoro jest obiektem, to może posiadać właściwości… ba, jak pewnie wielu z Was wie, właściwości można do obiektów dodawać w... Czytaj dalej The post Wzorce JavaScript – Memoization appeared first on burczu programator. Wyświetl pełny artykuł
  25. Myślę, że wiele osób po raz pierwszy siadających do projektu opartego na frameworku AngularJS może zadawać sobie tytułowe pytanie: jaka struktura projektu AngularJS będzie odpowiednia? Nie inaczej było w moim przypadku, na szczęście kolega natknął się i polecił mi szkolenie na Pluralsight, które wiele mi rozjaśniło dzięki czemu mam teraz na ten temat jako taki... Czytaj dalej The post Jak powinna wyglądać dobra struktura projektu AngularJS? appeared first on burczu programator. Wyświetl pełny artykuł
×
×
  • Utwórz nowe...