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!
Konkursy w skrócie
Konkursy polegają na napisaniu jak najkrótszego kodu w językach C++, JavaScript lub Python (patrz zasady wspólne oraz per język poniżej), który wygeneruje następującą grafikę: click (SHA256: ab18085a27c560ff03d479c3f32b289fb0a8d8ebb58c3f7081c0b9e1895213b6).
Każdy wskazany język programowania to osobny konkurs, i nagrodą w każdym z nich jest jedna bezpłatna wejściówka na konferencję CONFidence 2019.
Deadline: 22 maja 2019 12:00 CEST
Wspólne zasady
1. Wygenerowana grafika MUSI być w 100% zgodna z oryginałem, tj. wartości kolorów wszystkich pikseli grafiki muszę całkowicie zgadzać się z wzorcową grafiką.
2. Zgłoszenie następuje poprzez wysłanie e-maila z załączonym plikiem zawierającym jeden plik (per konkurs) na adres: gynvael+confidence2019golf@coldwind.pl ORAZ umieszczenie SHA256 zgłoszonego pliku w komentarzu pod tym postem (wyjaśnienie "co to SHA256 i jak to obliczyć" w FAQ na dole posta).
3. Można wysłać dowolną liczbę zgłoszeń na dowolną liczbę konkursów, przy czym na potrzeby konkursu będą rozważane jedynie najnowsze zgłoszenia z danego języka od danego autora.
4. Żaden z komputerów, na których testowany będzie kod, nie będzie podłączony do internetu (tj. nie można korzystać z żadnych zewnętrznych zasobów).
5. W przypadku zgłoszeń o tej samej wielkości liczy się czas nadesłania (czym szybciej tym lepiej).
6. W razie wątpliwości zachęcam do pytania w komentarzach lub bezpośrednio (sekcja Kontakt).
7. Ograniczenie czasu wykonania zgłoszonych programów w każdym przypadku wynosi 60 sekund. [Dodane 2019-05-17 18:08]
Konkurs C++
1. Konkurs (i jedną wejściówkę na CONFidence 2019) wygrywa autor zgłoszenia (C++), który spełnia wszystkie zasady konkursowe i jest najkrótszy (w rozumieniu wielkości pliku "confidence.cc" w bajtach).
2. Zgłoszony plik źródłowy musi nazywać się "confidence.cc".
3. Kod będzie kompilowany domyślnym GCC (g++) zainstalowanym na najnowszym Ubuntu Server (19.04).
4. Po skompilowaniu (g++ confidence.cc - warningi będą ignorowane) oraz uruchomieniu (./a.out) program musi wygenerować plik zgodny z formatem BMP o nazwie "confidence.bmp". Obraz na wygenerowanym pliku BMP musi być w 100% zgodny z wzorcową grafiką (patrz Wspólne zasady punkt 1).
5. System operacyjny będzie świeżo po instalacji i nie będzie na nim żadnych dodatkowych bibliotek poza domyślnymi. System nie będzie miał dostępu do internetu.
Konkurs Python 3.x
1. Konkurs (i jedną wejściówkę na CONFidence 2019) wygrywa autor zgłoszenia (Python 3.x), który spełnia wszystkie zasady konkursowe i jest najkrótszy (w rozumieniu wielkości pliku "confidence.py" w bajtach).
2. Zgłoszony plik źródłowy musi nazywać się "confidence.py".
3. Kod będzie uruchamiany poleceniem python3 na domyślnej instalacji najnowszego Ubuntu Server (19.04).
4. Po uruchomieniu (python3 confidence.py) programu musi wygenerować plik zgodny z formatem PNG o nazwie "confidence.png". Obraz na wygenerowanym pliku PNG musi być w 100% zgodny z wzorcową grafiką (patrz Wspólne zasady punkt 1).
5. System operacyjny będzie świeżo po instalacji i nie będzie na nim żadnych dodatkowych bibliotek poza domyślnymi. System nie będzie miał dostępu do internetu.
Konkurs JavaScript
1. Konkurs (i jedną wejściówkę na CONFidence 2019) wygrywa autor zgłoszenia (HTML/JavaScript, środowisko przeglądarki Chrome), który spełnia wszystkie zasady konkursowe i jest najkrótszy (w rozumieniu wielkości pliku "confidence.html" w bajtach).
2. Zgłoszony plik źródłowy musi nazywać się "confidence.html".
3. Kod będzie uruchamiany w najnowszej przeglądarce Chrome na Windows 10.
4. Po uruchomieniu (chrome file:///.../confidence.html) program musi wyświetlić wygenerowaną grafikę na elemencie HTML typu <CANVAS> o wielkości zgodnej z wzorcową grafiką. Podczas testów wygenerowana grafika zostanie zapisana na dysk (rclick na CANVAS → Save image as...) i porównana z grafiką wzorcową, z którą musi być zgodna w 100% (patrz Wspólne zasady punkt 1).
5. System operacyjny i przeglądarka Chrome będą świeżo po instalacji i nie będzie na nich żadnych dodatkowych bibliotek i rozszerzeń poza domyślnymi. System nie będzie miał dostępu do internetu.
FAQ
Q: Kiedy wyniki?
A: W ciągu 24h po deadline (22 maja 2019 12:00 CEST).
Q: Czy wielkość i umiejscowienie wyświetlanego elementu <CANVAS> (JavaScript) jest istotne?
A: Nie. Ważne, żeby <CANVAS> był widoczny na stronie, i żeby, po zapisaniu na dysk, grafika z <CANVAS> miała wymiary grafiki wzorcowej.
Q: Jak dokładnie będą grafiki porównywane?
A: Grafika testowana oraz wzorcowa zostaną sprowadzone do plików "raw" (czysta beznagłówkowa bitmapa 24bpp), po czym zawartość plików zostanie porównana (nie może być żadnych różnic).
Q: Jak wygenerować SHA256 pliku?
A: W skrócie, SHA256 to 256-bitowy numer wyliczany z zestawu danych (np. z pliku). Jego obliczenie w zasadzie sprowadza się do użycia jakiegoś narzędzia, które to za nas zrobi. Wyliczony numer jest pseudo-unikatowy dla każdego pliku, więc może służyć np. do rozróżniania plików, lub weryfikacji czy dany plik doszedł bez uszkodzeń.
Przykładowy SHA256 wygląda następująco:
559aead08264d5795d3909718cdd05abd49572e84fe55590eef31a88a08fdffd (SHA256 wygenerowany z pliku zawierającego pojedynczą literę "A").
Aby obliczyć SHA256:
- na Linuxie w terminalu: sha256sum nazwa.pliku
- na Windowsie w terminalu: certutil -hashfile nazwa.pliku sha256
Ew. można na google znaleźć wiele innych sposobów jak to zrobić.
HF GL!
Sections
- lang: |
- RSS: |
- About me
- Tools
- → YT YouTube (EN)
- → D Discord
- → M Mastodon
- → T Twitter
- → GH GitHub
Links / Blogs
- → dragonsector.pl
- → vexillium.org
- Security/Hacking:
- Reverse Eng./Low-Level:
- Programming/Code:
Posts
- Paged Out! #5 is out,
- CVEs of SSH talk this Thursday,
- Debug Log: Internet doesn't work (it was the PSU),
- FAQ: The tragedy of low-level exploitation,
- Solving Hx8 Teaser 2 highlight videos!,
- Gynvael on SECURITYbreak podcast,
- Paged Out! #4 is out,
- I won't be able to attend CONFidence'24 after all :(,
- xz/liblzma: Bash-stage Obfuscation Explained,
- Two of my bookmarklets: image extraction and simple TTS,
- → see all posts on main page
// copyright © Gynvael Coldwind
// design & art by Xa
// logo font (birdman regular) by utopiafonts / Dale Harris
/* the author and owner of this blog hereby allows anyone to test the security of this blog (on HTTP level only, the server is not mine, so let's leave it alone ;>), and try to break in (including successful breaks) without any consequences of any kind (DoS attacks are an exception here) ... I'll add that I planted in some places funny photos of some kittens, there are 7 of them right now, so have fun looking for them ;> let me know if You find them all, I'll add some congratz message or sth ;> */
Vulns found in blog:
* XSS (pers, user-inter) by ged_
* XSS (non-pers) by Anno & Tracerout
* XSS (pers) by Anno & Tracerout
* Blind SQLI by Sławomir Błażek
* XSS (pers) by Sławomir Błażek
// design & art by Xa
// logo font (birdman regular) by utopiafonts / Dale Harris
/* the author and owner of this blog hereby allows anyone to test the security of this blog (on HTTP level only, the server is not mine, so let's leave it alone ;>), and try to break in (including successful breaks) without any consequences of any kind (DoS attacks are an exception here) ... I'll add that I planted in some places funny photos of some kittens, there are 7 of them right now, so have fun looking for them ;> let me know if You find them all, I'll add some congratz message or sth ;> */
Vulns found in blog:
* XSS (pers, user-inter) by ged_
* XSS (non-pers) by Anno & Tracerout
* XSS (pers) by Anno & Tracerout
* Blind SQLI by Sławomir Błażek
* XSS (pers) by Sławomir Błażek
Comments:
2) Czy 'programu musi wygenerować plik zgodny z formatem' jest rozumiane jako utworzenie i zapis do pliku o danej nazwie w katalogu w którym znajduje się plik źródłowy?
"""
Grafika testowana oraz wzorcowa zostaną sprowadzone do plików "raw" (czysta beznagłówkowa bitmapa 24bpp), po czym zawartość plików zostanie porównana (nie może być żadnych różnic).
"""
Czy będziesz to robił bardziej "ręcznie" (np. GIMPem).
1) Ah, miałem to napisać. 60 sekund :)
2) Tak
@qq
Ręcznie będę to robił, najpewniej IrfanView, a potem porównanie czymkolwiek.
Yup :)
GIMP np. wydaje różne pliki .data dla różnych trybów (RGB, RGBA, indexed itp.) mimo że zawartość plików jest taka sama.
Uzyskałem jednolitość otwierając dany plik, robiąc Ctrl+A, Ctrl+C, Ctrl+Shift+V i dopiero to zapisując jako plik .data.
Nie mam jak teraz przetestować jak generuje pliki RAW Irfan, ale zwróć na to uwagę ;)
Jak pisałem w FAQ, porównywać będę 24-bitowe bitmapy, więc kanał alpha (jeśli będzie), będzie ignorowany. Co znaczy również, że po prostu nie musi go być.
Add a comment: