├── Crypto ├── Boguscrypt │ ├── answer.txt │ ├── build │ │ ├── db.127 │ │ ├── dec.c │ │ └── enc.c │ ├── files │ │ └── Boguscrypt.zip_3d8f4d6495e291543d48fcbdaccecf7127d16fae │ ├── flag.txt │ └── question.txt ├── bitcoin │ ├── answer.js │ ├── answer.txt │ ├── build │ │ ├── build.sh │ │ ├── client │ │ │ ├── .electrum │ │ │ │ ├── blockchain_headers │ │ │ │ ├── config │ │ │ │ ├── recent_servers │ │ │ │ └── wallets │ │ │ │ │ └── default_wallet │ │ │ ├── Dockerfile │ │ │ └── src │ │ │ │ ├── app.py │ │ │ │ ├── daemon.py │ │ │ │ ├── run.sh │ │ │ │ ├── servers.json │ │ │ │ ├── servers_testnet.json │ │ │ │ └── wallet.tgz │ │ ├── docker-compose.yaml │ │ └── server │ │ │ ├── flask │ │ │ ├── Dockerfile │ │ │ └── src │ │ │ │ ├── .bash_history │ │ │ │ ├── .python_history │ │ │ │ ├── app.py │ │ │ │ ├── static │ │ │ │ ├── wp-content │ │ │ │ │ ├── plugins │ │ │ │ │ │ ├── pirate-forms │ │ │ │ │ │ │ └── public │ │ │ │ │ │ │ │ ├── css │ │ │ │ │ │ │ │ └── front.css │ │ │ │ │ │ │ │ └── js │ │ │ │ │ │ │ │ ├── custom-spam.js │ │ │ │ │ │ │ │ └── scripts.js │ │ │ │ │ │ └── themeisle-companion │ │ │ │ │ │ │ └── obfx_modules │ │ │ │ │ │ │ ├── companion-legacy │ │ │ │ │ │ │ └── assets │ │ │ │ │ │ │ │ └── css │ │ │ │ │ │ │ │ └── hestia │ │ │ │ │ │ │ │ └── clients-bar.css │ │ │ │ │ │ │ └── menu-icons │ │ │ │ │ │ │ └── css │ │ │ │ │ │ │ └── public.css │ │ │ │ │ ├── themes │ │ │ │ │ │ └── hestia │ │ │ │ │ │ │ ├── assets │ │ │ │ │ │ │ ├── bootstrap │ │ │ │ │ │ │ │ ├── css │ │ │ │ │ │ │ │ │ └── bootstrap.min.css │ │ │ │ │ │ │ │ └── js │ │ │ │ │ │ │ │ │ └── bootstrap.min.js │ │ │ │ │ │ │ ├── css │ │ │ │ │ │ │ │ └── font-sizes.css │ │ │ │ │ │ │ ├── font-awesome │ │ │ │ │ │ │ │ └── css │ │ │ │ │ │ │ │ │ └── font-awesome.min.css │ │ │ │ │ │ │ └── js │ │ │ │ │ │ │ │ ├── material.js │ │ │ │ │ │ │ │ └── scripts.js │ │ │ │ │ │ │ └── style.css │ │ │ │ │ └── uploads │ │ │ │ │ │ └── 2018 │ │ │ │ │ │ └── 09 │ │ │ │ │ │ ├── animal-cold-color-416118.jpg │ │ │ │ │ │ ├── fig-6-e1536639090614.png │ │ │ │ │ │ └── url.txt │ │ │ │ └── wp-includes │ │ │ │ │ ├── css │ │ │ │ │ └── dashicons.min.css │ │ │ │ │ └── js │ │ │ │ │ └── jquery │ │ │ │ │ ├── jquery-migrate.min.js │ │ │ │ │ ├── jquery.js │ │ │ │ │ └── ui │ │ │ │ │ └── core.min.js │ │ │ │ └── templates │ │ │ │ ├── index.html │ │ │ │ ├── message.html │ │ │ │ └── message2.html │ │ │ └── nginx │ │ │ └── conf.d │ │ │ └── webapp.conf │ ├── flag.txt │ └── question.txt ├── ether │ ├── answer.txt │ ├── build │ │ ├── build.txt │ │ ├── miner │ │ │ ├── Dockerfile │ │ │ ├── docker-compose.yaml │ │ │ └── src │ │ │ │ ├── UTC--2018-09-21T08-13-18.619300810Z--0d7134fe1fff95780f05c6751dc4514cdf0134e7 │ │ │ │ ├── cmd.sh │ │ │ │ └── genesis.json │ │ └── server │ │ │ ├── docker-compose.yaml │ │ │ ├── etherver │ │ │ ├── Dockerfile │ │ │ └── src │ │ │ │ ├── UTC--2018-09-21T08-13-18.619300810Z--0d7134fe1fff95780f05c6751dc4514cdf0134e7 │ │ │ │ ├── app.py │ │ │ │ ├── cmd.sh │ │ │ │ ├── genesis.json │ │ │ │ ├── sol │ │ │ │ ├── deploy.sh │ │ │ │ ├── deploy.txt │ │ │ │ ├── lv1 │ │ │ │ │ ├── Gacha-abi.txt │ │ │ │ │ ├── Gacha-bytecode.txt │ │ │ │ │ ├── Gacha.sol │ │ │ │ │ ├── GachaFactory-abi.txt │ │ │ │ │ ├── GachaFactory-bytecode.txt │ │ │ │ │ └── GachaFactory.sol │ │ │ │ └── lv2 │ │ │ │ │ ├── Gacha2.sol │ │ │ │ │ └── GachaFactory2.sol │ │ │ │ └── static-nodes.json │ │ │ ├── flask │ │ │ ├── Dockerfile │ │ │ └── src │ │ │ │ ├── .bash_history │ │ │ │ ├── .python_history │ │ │ │ ├── Gacha.sol │ │ │ │ ├── Gacha2.sol │ │ │ │ ├── __pycache__ │ │ │ │ └── app.cpython-37.pyc │ │ │ │ ├── app.py │ │ │ │ ├── db.json │ │ │ │ ├── shell.py │ │ │ │ ├── static │ │ │ │ ├── circle.gif │ │ │ │ ├── lottery.js │ │ │ │ ├── signin.css │ │ │ │ └── style.css │ │ │ │ └── templates │ │ │ │ ├── home.html │ │ │ │ └── index.html │ │ │ └── nginx │ │ │ └── conf.d │ │ │ └── webapp.conf │ ├── flag.txt │ └── question.txt ├── ether2 │ ├── answer.txt │ ├── flag.txt │ └── question.txt └── mnemonic │ ├── answer.js │ ├── flag.txt │ └── question.txt ├── Forensics ├── History │ ├── answer.txt │ ├── build │ │ └── J │ ├── files │ │ └── J.zip_4c7050d70c9077b8c94ce0d76effcb8676bed3ba │ ├── flag.txt │ └── question.txt └── Unzip │ ├── answer.txt │ ├── build │ ├── flag.txt │ ├── flag.zip │ ├── key │ └── makefile.sh │ ├── exploit.py │ ├── files │ └── unzip.zip_26c0cb5b40e9f78641ae44229cda45529418183f │ ├── flag.txt │ └── question.txt ├── Media └── Needle_in_a_haystack │ ├── 47601075-3a71de00-da06-11e8-90a3-2a043017b42d.png │ ├── answer.txt │ ├── flag.txt │ └── question.txt ├── Pwn ├── CLV2 │ ├── README.md │ ├── build │ │ ├── compile.sh │ │ ├── main.c │ │ └── sha256.h │ ├── exploit.py │ ├── files │ │ ├── CLV2.tar.gz_f0c6c1a6b8ae7cff168c8b506fb69dbede6665d7 │ │ └── README.md │ ├── flag.txt │ └── questions.txt ├── classic │ ├── build │ │ └── classic.c │ ├── exploit.py │ ├── files │ │ ├── classic_aa9e979fd5c597526ef30c003bffee474b314e22 │ │ └── libc-2.23.so_56d992a0342a67a887b8dcaae381d2cc51205253 │ ├── flag.txt │ └── question.txt ├── internet_of_seat │ ├── build │ │ ├── .gitignore │ │ ├── Makefile │ │ ├── build.sh │ │ ├── main │ │ ├── main.c │ │ └── piCore.gz │ ├── exploit.py │ ├── files │ │ ├── README.md │ │ └── files.zip_0b0c98eb5f5f7d7127eb3727ae97efb1a9740b70 │ ├── flag.txt │ └── question.txt ├── kindvm │ ├── answer.txt │ ├── build │ │ ├── Makefile │ │ ├── banner.txt │ │ ├── hint1.txt │ │ ├── hint2.txt │ │ ├── hint3.txt │ │ ├── kindvm.c │ │ ├── kindvm.h │ │ ├── main.c │ │ ├── util.c │ │ └── util.h │ ├── exploit.py │ ├── files │ │ └── kindvm_79726158fec11eb1e5a89351db017e13506d3a4a │ ├── flag.txt │ └── question.txt ├── painter │ ├── answer.txt │ ├── build │ │ ├── .gitignore │ │ ├── Makefile │ │ ├── bmp.cc │ │ ├── bmp.h │ │ ├── bmp.o │ │ ├── commands.cc │ │ ├── commands.h │ │ ├── commands.o │ │ ├── main.cc │ │ ├── main.h │ │ ├── main.o │ │ └── painter │ ├── exploit.py │ ├── files │ │ ├── README.md │ │ └── painter.zip_45a35d4edf812a8919c0558558ef5fb6f7b8f694 │ ├── flag.txt │ └── question.txt ├── profile │ ├── build │ │ └── profile.cpp │ ├── exploit.py │ ├── files │ │ ├── libc-2.23.so_56d992a0342a67a887b8dcaae381d2cc51205253 │ │ └── profile_e814c1a78e80ed250c17e94585224b3f3be9d383 │ ├── flag.txt │ └── question.txt ├── q-escape │ ├── README.md │ ├── build │ │ └── cydf_vga.c │ ├── exp.gz │ ├── exploit.py │ ├── files │ │ ├── README.md │ │ └── q-escape.tar.gz_48901602a841daf68b60926a26efd4a80ad66c4c │ ├── flag.txt │ ├── poc.c │ └── question.txt ├── secret_message │ ├── README.md │ ├── build │ │ ├── Makefile │ │ ├── cipher.cpp │ │ ├── cipher.h │ │ ├── cylib.cpp │ │ ├── cylib.h │ │ ├── cystruct.h │ │ └── main.cpp │ ├── ex_helper1 │ ├── ex_helper2 │ ├── exploit.py │ ├── files │ │ └── secret_message.tar.gz_886d5d76439d30bd4dfbb5f3e4a0d78611c78f72 │ ├── flag.txt │ └── question.txt └── simple_memo │ ├── build │ └── memo.c │ ├── exploit.bin │ ├── exploit.c │ ├── exploit.py │ ├── files │ ├── libc-2.23.so_56d992a0342a67a887b8dcaae381d2cc51205253 │ └── memo_ba2e54eda5aca5ca5c187a3e0603d4ce623aee62 │ ├── flag.txt │ └── question.txt ├── QR └── QRChecker │ ├── answer.txt │ ├── build │ ├── flag │ ├── qr.cgi │ └── readme │ ├── exploit.jpg │ ├── files │ └── qr.cgi_93bb1a11da93ab2a50e61c7da1e62b34d316bc9b │ ├── flag.txt │ └── question.txt ├── README.md ├── Reversing ├── Runme │ ├── answer.txt │ ├── build │ │ ├── create.py │ │ └── runme.asm │ ├── files │ │ └── runme.exe_b834d0ce1d709affeedb1ee4c2f9c5d8ca4aac68 │ ├── flag.txt │ └── question.txt ├── block │ ├── answer.txt │ ├── builds │ │ ├── flag.png │ │ ├── rotation.cs │ │ └── shader.shader │ ├── files │ │ └── block.apk_f2f0a7d6a3b3e940ca7cd5a3f7c5045eb57f92cf │ ├── flag.txt │ └── question.txt ├── shooter │ ├── answer.txt │ ├── build │ │ ├── app │ │ │ └── scripts │ │ │ │ ├── Config.cs │ │ │ │ ├── GameDirector.cs │ │ │ │ ├── PlaneController.cs │ │ │ │ └── PlaneGenerator.cs │ │ └── server │ │ │ ├── nginx │ │ │ ├── conf.d │ │ │ │ ├── default │ │ │ │ ├── develop.shooter.pwn.seccon.jp │ │ │ │ ├── shooter.pwn.seccon.jp │ │ │ │ └── staging.shooter.pwn.seccon.jp │ │ │ └── nginx.conf │ │ │ └── shooter │ │ │ ├── app │ │ │ ├── assets │ │ │ │ ├── config │ │ │ │ │ └── manifest.js │ │ │ │ ├── images │ │ │ │ │ └── .keep │ │ │ │ ├── javascripts │ │ │ │ │ ├── application.js │ │ │ │ │ ├── cable.js │ │ │ │ │ └── channels │ │ │ │ │ │ └── .keep │ │ │ │ └── stylesheets │ │ │ │ │ └── application.scss │ │ │ ├── channels │ │ │ │ └── application_cable │ │ │ │ │ ├── channel.rb │ │ │ │ │ └── connection.rb │ │ │ ├── controllers │ │ │ │ ├── admin │ │ │ │ │ ├── dashboards_controller.rb │ │ │ │ │ ├── sessions_controller.rb │ │ │ │ │ ├── system_configs_controller.rb │ │ │ │ │ └── users_controller.rb │ │ │ │ ├── admin_controller.rb │ │ │ │ ├── api │ │ │ │ │ └── v1 │ │ │ │ │ │ └── scores_controller.rb │ │ │ │ ├── api_controller.rb │ │ │ │ ├── application_controller.rb │ │ │ │ └── concerns │ │ │ │ │ └── .keep │ │ │ ├── helpers │ │ │ │ └── application_helper.rb │ │ │ ├── javascript │ │ │ │ └── packs │ │ │ │ │ └── application.js │ │ │ ├── jobs │ │ │ │ └── application_job.rb │ │ │ ├── mailers │ │ │ │ └── application_mailer.rb │ │ │ ├── models │ │ │ │ ├── application_record.rb │ │ │ │ ├── concerns │ │ │ │ │ └── .keep │ │ │ │ ├── flag.rb │ │ │ │ ├── manager.rb │ │ │ │ └── score.rb │ │ │ └── views │ │ │ │ ├── admin │ │ │ │ ├── dashboards │ │ │ │ │ └── index.html.slim │ │ │ │ ├── index.html.slim │ │ │ │ ├── sessions │ │ │ │ │ └── new.html.slim │ │ │ │ ├── system_configs │ │ │ │ │ └── show.html.slim │ │ │ │ └── users │ │ │ │ │ └── index.html.slim │ │ │ │ └── layouts │ │ │ │ ├── application.html.slim │ │ │ │ ├── mailer.html.slim │ │ │ │ └── mailer.text.slim │ │ │ ├── config │ │ │ └── routes.rb │ │ │ └── db │ │ │ ├── migrate │ │ │ ├── 20181008083436_create_scores.rb │ │ │ ├── 20181008134533_create_managers.rb │ │ │ └── 20181008142316_create_flags.rb │ │ │ ├── schema.rb │ │ │ └── seeds.rb │ ├── files │ │ └── shooter.apk_d0d2ed9e7ba3c83354cbbf7ccf82541730b14a72 │ ├── flag.txt │ └── question.txt ├── special_device │ ├── answer.txt │ ├── build │ │ ├── build.txt │ │ ├── build │ │ │ └── cross-gcc494 │ │ │ │ ├── KL-01 │ │ │ │ ├── LICENSE │ │ │ │ ├── README.txt │ │ │ │ ├── config.sh │ │ │ │ └── exec │ │ │ │ ├── Makefile │ │ │ │ ├── aarch64-elf.c │ │ │ │ ├── aarch64-elf.d │ │ │ │ ├── aarch64-elf.o │ │ │ │ ├── aarch64-elf.s │ │ │ │ ├── aarch64-elf.x │ │ │ │ ├── ld.scr │ │ │ │ ├── lib-aarch64-elf.S │ │ │ │ ├── sample.c │ │ │ │ └── syscall.h │ │ ├── patch │ │ │ ├── patch-gdb-8.2-aarch64-random.txt │ │ │ └── patch-gdb-8.2-log2.txt │ │ └── test │ │ │ ├── Makefile │ │ │ └── sample.c │ ├── files │ │ └── runme_8a10b7425cea81a043db0fd352c82a370a2d3373 │ ├── flag.txt │ └── question.txt ├── special_instractions │ ├── answer.txt │ ├── build │ │ ├── build.txt │ │ ├── build │ │ │ └── cross-gcc494 │ │ │ │ ├── KL-01 │ │ │ │ ├── LICENSE │ │ │ │ ├── README.txt │ │ │ │ ├── config.sh │ │ │ │ └── exec │ │ │ │ ├── Makefile │ │ │ │ ├── ld.scr │ │ │ │ ├── lib-moxie-elf.S │ │ │ │ ├── moxie-elf.c │ │ │ │ ├── moxie-elf.d │ │ │ │ ├── moxie-elf.o │ │ │ │ ├── moxie-elf.s │ │ │ │ ├── moxie-elf.x │ │ │ │ ├── sample.c │ │ │ │ └── syscall.h │ │ ├── patch │ │ │ ├── patch-gdb-8.2-log2.txt │ │ │ ├── patch-gdb-8.2-moxie-nodtb.txt │ │ │ └── patch-gdb-8.2-moxie-random.txt │ │ └── test │ │ │ ├── Makefile │ │ │ └── sample.c │ ├── files │ │ └── runme_f3abe874e1d795ffb6a3eed7898ddcbcd929b7be │ ├── flag.txt │ └── question.txt └── tctkToy │ ├── answer.txt │ ├── build │ ├── tctkToy.sln │ └── tctkToy │ │ ├── Resource.h │ │ ├── small.ico │ │ ├── stdafx.cpp │ │ ├── stdafx.h │ │ ├── targetver.h │ │ ├── tctkInfo.bmp │ │ ├── tctkToy.aps │ │ ├── tctkToy.cpp │ │ ├── tctkToy.h │ │ ├── tctkToy.ico │ │ ├── tctkToy.rc │ │ ├── tctkToy.vcxproj │ │ ├── tctkToy.vcxproj.filters │ │ └── tctkToy.vcxproj.user │ ├── files │ ├── 66da8fc7dd320bbd14a9ebba148402754d591e33 │ └── file.zip_5bd5bdb6eaf308b509af1c466b8a76578b75cdd9 │ ├── flag.txt │ └── question.txt └── Web └── GhostKingdom ├── answer.txt ├── exploit(private).jpg ├── exploit(private).pl ├── flag.txt └── question.txt /Crypto/Boguscrypt/answer.txt: -------------------------------------------------------------------------------- 1 | the file encryption is very easy - it's XOR - but challenge should get the encryption key with DNS Reverse lookup. 2 | I saved a DNS query packets in the PCAP file, because the query answer have possibility that the entry will change by DNS logics if query from internet. 3 | 4 | So, Challenger can find a query that reverse lookup of 127.0.0.2 from PCAP file, and decrypt the file with the result. 5 | -------------------------------------------------------------------------------- /Crypto/Boguscrypt/build/db.127: -------------------------------------------------------------------------------- 1 | ; 2 | ; BIND reverse data file for local loopback interface 3 | ; 4 | $TTL 604800 5 | @ IN SOA localhost. root.localhost. ( 6 | 2 ; Serial 7 | 604800 ; Refresh 8 | 86400 ; Retry 9 | 2419200 ; Expire 10 | 604800 ) ; Negative Cache TTL 11 | ; 12 | @ IN NS localhost. 13 | 1.0.0 IN PTR localhost. 14 | 2.0.0 IN PTR cur10us4ndl0ngh0stn4m3. 15 | -------------------------------------------------------------------------------- /Crypto/Boguscrypt/build/dec.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | 11 | 12 | 13 | 14 | main() 15 | { 16 | char *a; 17 | char mp[2048]; 18 | char to[2048]; 19 | char to2[2048]; 20 | int len; 21 | int fd; 22 | int fd2; 23 | struct stat statbuf; 24 | 25 | struct hostent *host; 26 | struct in_addr addr; 27 | char *h; 28 | char revh[2048]; 29 | int maxlen; 30 | int llen; 31 | 32 | printf("Key?:"); 33 | scanf("%s", a); 34 | 35 | addr.s_addr = 0x0200007f; 36 | host = gethostbyaddr((const char *)&addr.s_addr, 37 | sizeof(addr.s_addr), AF_INET); 38 | if (host == NULL) { 39 | herror("gethostbyaddr"); 40 | return 1; 41 | } 42 | 43 | // printf("%s\n", host->h_name); 44 | 45 | h = host->h_name; 46 | maxlen = strlen(h); 47 | for(llen = 0; llen < maxlen; llen++) 48 | { 49 | revh[maxlen - llen -1] = h[llen]; 50 | } 51 | 52 | memset(mp, 0, 2048); 53 | memset(to, 0, 2048); 54 | memset(to2, 0, 2048); 55 | fd = open("flag.txt.encrypted", O_RDWR); 56 | fstat(fd, &statbuf); 57 | len = statbuf.st_size; 58 | 59 | read(fd, mp, len); 60 | // write(2, mp, 2048); 61 | close(fd); 62 | len = strlen(mp); 63 | 64 | dec(mp, to, len, revh); 65 | fd2 = open("flag.txt", O_CREAT|O_RDWR,S_IRUSR|S_IWUSR); 66 | write(fd2, to, len); 67 | close(fd2); 68 | dec(to, to2, 2048, "abc"); 69 | // write(2, mp, 2048); 70 | // write(2, to2, 2048); 71 | // write(2, to, 2048); 72 | } 73 | 74 | void dec(char *from, char *to, int length, char *key) 75 | { 76 | char *deckey; 77 | int keylength; 78 | int l; 79 | deckey = key; 80 | keylength = strlen(key); 81 | 82 | for(l = 0; l < length; l++) 83 | { 84 | to[l] = from[l] ^ deckey[l%keylength]; 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /Crypto/Boguscrypt/build/enc.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | 11 | 12 | 13 | 14 | main() 15 | { 16 | char *a; 17 | char mp[2048]; 18 | char to[2048]; 19 | char to2[2048]; 20 | int len; 21 | int fd; 22 | int fd2; 23 | 24 | struct hostent *host; 25 | struct in_addr addr; 26 | char *h; 27 | char revh[2048]; 28 | int maxlen; 29 | int llen; 30 | 31 | // printf("Key?:"); 32 | // scanf("%s", a); 33 | 34 | addr.s_addr = 0x0200007f; 35 | host = gethostbyaddr((const char *)&addr.s_addr, 36 | sizeof(addr.s_addr), AF_INET); 37 | if (host == NULL) { 38 | herror("gethostbyaddr"); 39 | return 1; 40 | } 41 | 42 | // printf("%s\n", host->h_name); 43 | 44 | h = host->h_name; 45 | maxlen = strlen(h); 46 | for(llen = 0; llen < maxlen; llen++) 47 | { 48 | revh[maxlen - llen -1] = h[llen]; 49 | } 50 | 51 | memset(mp, 0, 2048); 52 | memset(to, 0, 2048); 53 | memset(to2, 0, 2048); 54 | fd = open("data.dat", O_RDWR); 55 | read(fd, mp, 2048); 56 | // write(2, mp, 2048); 57 | close(fd); 58 | len = strlen(mp); 59 | 60 | enc(mp, to, len, revh); 61 | fd2 = open("flag.txt.encrypted", O_CREAT|O_RDWR,S_IRUSR|S_IWUSR); 62 | write(fd2, to, len); 63 | close(fd2); 64 | dec(to, to2, 2048, "abc"); 65 | // write(2, mp, 2048); 66 | // write(2, to2, 2048); 67 | // write(2, to, 2048); 68 | } 69 | 70 | void enc(char *from, char *to, int length, char *key) 71 | { 72 | char *enckey; 73 | int keylength; 74 | int l; 75 | enckey = key; 76 | keylength = strlen(key); 77 | 78 | for(l = 0; l < length; l++) 79 | { 80 | to[l] = from[l] ^ enckey[l%keylength]; 81 | } 82 | } 83 | 84 | void dec(char *from, char *to, int length, char *key) 85 | { 86 | char *deckey; 87 | int keylength; 88 | int l; 89 | deckey = key; 90 | keylength = strlen(key); 91 | 92 | for(l = 0; l < length; l++) 93 | { 94 | to[l] = from[l] ^ deckey[l%keylength]; 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /Crypto/Boguscrypt/files/Boguscrypt.zip_3d8f4d6495e291543d48fcbdaccecf7127d16fae: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SECCON/SECCON2018_online_CTF/30ca811bab4c1dfb68c6b4fd0e5d682487b861ff/Crypto/Boguscrypt/files/Boguscrypt.zip_3d8f4d6495e291543d48fcbdaccecf7127d16fae -------------------------------------------------------------------------------- /Crypto/Boguscrypt/flag.txt: -------------------------------------------------------------------------------- 1 | SECCON{This flag is encoded by bogus routine} 2 | -------------------------------------------------------------------------------- /Crypto/Boguscrypt/question.txt: -------------------------------------------------------------------------------- 1 | Boguscrypto 2 | 3 | Hey, Can you decrypt the file? -------------------------------------------------------------------------------- /Crypto/bitcoin/answer.js: -------------------------------------------------------------------------------- 1 | let bip39 = require('bip39'); 2 | let crypto = require('crypto'); 3 | let wordlist_jp = bip39.wordlists["english"]; 4 | let question = new Buffer.from('Pz8/IHdlYWx0aCBicmVhZCBzcXVpcnJlbCBzb3J0IHVyYmFuIHBhZGRsZSBwYW5pYyBjb21wYW55IG1hdGVyaWFsIGJ1dHRlciB0aWx0IGNpdHkgaG9iYnkgc2V2ZW4gc2FtcGxlIGNhdXRpb24gaXZvcnkgY3VwIGJlY2F1c2UgcGllY2UgY3JpbWUgbWl4dHVyZSBhcnR3b3Jr', "base64").toString('ascii'); 5 | 6 | let questionArr = question.split(" "); 7 | let arr = []; 8 | for (let i=0; i < wordlist_jp.length; i++){ 9 | questionArr[0] = wordlist_jp[i]; 10 | let mnemonic = questionArr.join(' '); 11 | if (bip39.validateMnemonic(mnemonic, wordlist_jp)){ 12 | let entropy = bip39.mnemonicToEntropy(mnemonic, wordlist_jp) 13 | if("583" == entropy.slice(0,3)){ 14 | md5 = crypto.createHash('md5'); 15 | console.log("SECCON{"+md5.update(entropy, 'binary').digest('hex')+"}"); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Crypto/bitcoin/answer.txt: -------------------------------------------------------------------------------- 1 | The vulnerable client is subject to https://github.com/dleshem/electrumizer. 2 | 3 | 1. prepare electrumizer on an attacker's server. 4 | 2. send ```