Thái Vĩnh Đạt

@tvdat20004

Joined on Apr 17, 2023

  • Do bài này khác với bài trước ở 2 chỗ, 1 là nó dùng mode CTR, 2 là mỗi lần lặp nó sẽ tạo key khác, do đó để làm bài này thì bắt buộc phải cryptanalysis thôi :v Đầu tiên, mình dùng z3 để symbolic xem từ plaintext qua đến ciphertext nó sẽ thực hiện như thế nào. Có 2 thứ để symbolic:Symbolic các round_keys -> đặt từ k0 -> k6: ​​​​ def _expand_key(self, key: bytes) -> None: ​​​​ keys = BitVecs(' '.join([f'k{i}' for i in range(self.rounds)]), 8) ​​​​ self._round_keys = keys Symbolic 2 hàm sbox và permutation thành 1 hàm P nào đó (tí nữa soi 2 hàm này sau :v), tức khi này P(a) = self.permutation(self.sbox(a)): ​​​​P = Function('P',BitVecSort(8), BitVecSort(8)) ​​​​def _f(self, l: int, r: int, key: int) -> int:
     Like 1 Bookmark
  • reiwa_rot13 (127 solves) chall.py from Crypto.Util.number import * import codecs import string import random import hashlib from Crypto.Cipher import AES from Crypto.Random import get_random_bytes
     Like  Bookmark
  • This is my write-up for 3 challenges in crypto category I solved in ISITDTU CTF 2024. 2 unsolved challenges may be updated in the future 🤔. Thanks to all authors for very nice challenges 😁 ShareMixer1 import random # TODO: heard that this is unsafe but nvm from Crypto.Util.number import getPrime, bytes_to_long flag = bytes_to_long(b'ISITDTU{test_flag_dkosakdisaj}') # flag = bytes_to_long(open("flag.txt", "rb").read()) p = getPrime(256) assert flag < p l = 32
     Like  Bookmark
  • Tuần trước, mình có chơi bi0sCTF với team G.0.4.7 và làm được 5/6 bài crypto. Sau đây là chi tiết write-up cho những bài mình làm được (và có thể update luôn bài cuối nếu làm ra 😥) image lalala - 80 solves chall.sage from random import randint from re import search flag = "bi0sctf{%s}" % f"{randint(2**39, 2**40):x}"
     Like  Bookmark
  • Vừa rồi thì mình cùng với team G.0.4.7 tham gia đánh giải KCSC CTF tổ chức bởi clb KCSC thuộc KMA), kết quả cũng không quá tệ 😅 image Sau đây mình xin trình bày write-up của những bài crypto mình giải được. Evil ECB - 18 solves image server.py
     Like  Bookmark
  • Phần tiếp theo trong khóa training này chính là hash function (hàm băm). Bài viết này nhằm để giúp các bạn có cái nhìn tổng quan nhất vể hàm băm trong crypto. Định nghĩa Hàm băm là một hàm trong toán học dùng để chuyển đổi dữ liệu đầu vào thành một chuỗi cố định, được gọi là giá trị băm. Đây là hàm một chiều, tức là không tồn tại một hàm giúp tìm được x khi biết giá trị của $f(x)$. Hàm băm có ứng dụng rất nhiều trong thực tế (chữ kí số, lưu trữ mật khẩu, xác thực thông tin, ...) nhờ vào sự thuận tiện về mặt tính toán cũng như chi phí thấp. Tính chất Một hàm băm an toàn sẽ có những tính chất sau:Đầu ra cố định: Kích thước của giá trị băm không thay đổi dựa trên kích thước của dữ liệu đầu vào. Định mức: Cùng một dữ liệu đầu vào sẽ luôn tạo ra cùng một giá trị băm (*) Nhạy cảm với sự thay đổi: Thậm chí một sự thay đổi nhỏ trong dữ liệu đầu vào cũng sẽ tạo ra một giá trị băm hoàn toàn khác.
     Like  Bookmark
  • Reference: [1] https://blog.quarkslab.com/differential-fault-analysis-on-white-box-aes-implementations.html [2] https://pure.tue.nl/ws/portalfiles/portal/88828381/1035230_B._Ezepue_Thesis_PublicVersion.pdf(2) Giải thích Differential Fault Analysis (DFA) là một phương pháp thường được dùng để tấn công vào "White-box implementations" (theo mình hiểu là implementation của cipher sẽ được public) mà sẽ có những lỗi (fault) trong cách triển khai. Trong bài viết này mình chỉ thực hiện làm việc trên AES (trong ref 2 có nhắc đến cả việc tấn công trên DES). Mình sẽ giải thích sơ theo như những gì mình hiểu và trình bày cách áp dụng nó vào 1 bài CTF cụ thể. Ngữ cảnh
     Like 2 Bookmark
  • Small Inscription Source code: #!/usr/bin/env python3 from Crypto.Util.number import bytes_to_long, getPrime from secret import FLAG assert len(FLAG) < 30
     Like 1 Bookmark
  • Đây chính là giải CTF cuối cùng của mình trong năm 2023, kết thúc một năm đáng nhớ của bản thân trong bộ môn này. Mình chơi cùng team G.0.4.7 và team mình kết thúc ở vị trí 43, bản thân mình làm được 2 câu. Sau đây là write-up của mình cho 2 câu đó và một câu làm được sau khi giải kết thúc :(. image lima beans with lemon and lime image final.py (đã được mình chỉnh sửa một vài tên biến để dễ đọc hơn) #!/usr/bin/env python3
     Like 2 Bookmark
  • ARISAI image Output.txt N=1184908748889071774788034737775985521200704101703442353533571651469039119038363889871690290631780514392998940707556520304994251661487952739548636064794593979743960985105714178256254882281217858250862223543439960706396290227277478129176832127123978750828494876903409727762030036738239667368905104438928911566884429794089785359693581516505306703816625771477479791983463382338322851370493663626725244651132237909443116453288042969721313548822734328099261670264015661317332067465328436010383015204012585652642998962413149192518150858822735406696105372552184840669950255731733251466001814530877075818908809387881715924209232067963931299295012877100632316050826276879774867425832387424978221636157426227764972761357957047150626791204295493153062565652892972581618176577163744310556692610510074992218502075083140232623713873241177386817247671528165164472947992350655138814891455499972562301161585763970067635688236798480514440398603568227283629452476242623289661524243073929894099518473939222881149459574426407208658860251686137960952889074096311126991477096465624470265619377139983649503903820480974951491378311837933293607705488991162022547957926530402988912221198282579794590930661493745233069145707902854299501706154802038942258911515981663207152069613126155243024789689987554767962281273345273757236723762684230158310314189489269922058062081424352003908442430243686562569467793068370441732743572240164014190275463904986105758545036928880621165599686076511511089276388190078187849622221351011692443859919384379432387437072419707649486293684966456033518855679391672980173280496419686363359529398834403906418139786395934302273747490127295066208248715874656180233559644161531014137838623558729789331274400542717269108353265885948166102045041669627782992845494987948783304254174326130201166965174477449798721151991240203641 e=65537 ct=268829805459609475588440899873097740407996768854076329496002425282199615879909227647380967635165606878898541606457683227761652305836586321855100255485305118037701500609605019785162541750877335573032359895573772603246111506991979320486028250721513277767642375361127152574528694298160906073442383962020636918610527024050576972769852306021296823499884948279413653216802756618690182635446020844210831886652986287932378470425746444631963933610367607515800649608436183004088441881238148504635598468243968695248287570279766119573944421327504565309861792437849662128566261080923059583840204287527201636471106753069738472306223410300379312983945939043519755909420737707495224846116170095923898104488099329762265149868062693687303917610957104520999978944379566136253252697346935036425206126213766976582551430726756840294537354912787885103742021813054656962241068550049435394355553796824094853195888610994254949530524531633088750916669188277025883371307926545593346345011181011886157628805587723572874545440223921942144548540109099572715194182349314576321627183804149379561322969725485272107142991680959335537127382716195040449341448266408777436145121388591741613272241408064729715121476227737259932422493622000014673154665474739974557976672498027364986075870354093242809763072555932073688776712239151696700128393589329790478951588551070833013708885416360627613835550721939073618725634813608997025047929327270234611128029339388251117036658410438813874667672407000490721438737857471847655487642835059784967516451098631494261100960513521722400650533821661854325599281416744189966724295645707952292786069145361070873245192529272080607536319284389065418040578100669665069777133031446812281199863684982910055858515634879595144557407925298026899908970790756383369461817536923660051327566555421265363733995050644914554395836353253513 chall.py
     Like  Bookmark
  • Vì thời gian diễn ra giải này và giải Duy Tân diễn ra hầu hết là trùng nhau nên sau khi bị đề Duy Tân giã tan nát giải Duy Tân kết thúc thì team mình chỉ có vài tiếng còn lại để làm. Tuy nhiên team mình cũng kịp làm được 2 câu và mình đóng góp được 1 câu crypto siêu dễ 😁. Sau đây là chi tiết write-up của mình cho câu đó. Lucky number Source: #!/usr/bin/env python #hacklu23 Baby Crypyo Challenge import math import random
     Like  Bookmark
  • Attachment Generate.py: from secret import config from Crypto.PublicKey import RSA from Crypto.Util.number import bytes_to_long, isPrime class LCG: lcg_m = config.m lcg_c = config.c
     Like 1 Bookmark
  • Attachment server.py import os import signal from Crypto.Util.number import * flag = os.environb.get(b"FLAG", b"dummmmy{test_test_test}")
     Like 1 Bookmark
  • Đây là giải đấu do clb Wanna.W1n tổ chức nhằm tuyển thành viên vào câu lạc bộ. Trong giải đấu này mình đã 'may mắn' giải được 2 câu trong phần cryptography và xếp vị thứ 4 chung cuộc. Sau đây mình sẽ trình bày sơ sơ write-up 2 bài mình đã làm được ^^. DHLCG DHLCG.py from Crypto.Util.number import long_to_bytes as ltb , getPrime, isPrime, getRandomRange from Crypto.Random import get_random_bytes
     Like 1 Bookmark
  • DiffieHellman.py from Crypto.Util.number import * from secrets import randbelow flag = b'BSidesIndore{?????????????????????????????????????????}' p = getPrime(1024) a = randbelow(p) b = randbelow(p)
     Like  Bookmark
  • Polypoint encode.py from secrets import SystemRandom gen = SystemRandom() with open("flag.txt", "rb") as f: flag = f.read().strip()
     Like 1 Bookmark
  • Attachment fizzbuzz100.py #!/usr/local/bin/python from Crypto.Util.number import * from os import urandom flag = open("flag.txt", "rb").read() flag = bytes_to_long(urandom(16) + flag + urandom(16))
     Like 1 Bookmark
  • Attachment: Metaphysics.png Đây là chữ tượng hình Ai Cập cổ đại, so tại đây. Blind Attachment: Chall_blind.txt CyberChef: From Base 85 -> From Braille Rocyou
     Like 1 Bookmark
  • Em tên là Thái Vĩnh Đạt (tên discord là tvdat20004), hôm 22/7 vừa rồi em có tham gia miniCTF do clb Wanna.W1n tổ chức và em được hạng 3. Em làm được 2 bài thuộc mảng Crypto và sau đây em xin trình bày write-up cho 2 bài đó ạ. Attachment Server.py: #!/usr/bin/env python3 import json import os import signal
     Like 1 Bookmark
  • baby RC4 Attachment Source code: from Crypto.Cipher import ARC4 from os import urandom key = urandom(16) flag = b'SEE{?????????????????????????????????}'[::-1]
     Like 1 Bookmark