본문 바로가기

dreamhack - 1121 from pwn import *p = remote("host3.dreamhack.games", 17291)secret_enc = bytes.fromhex(p.recvline().strip().decode().rpartition(" ")[-1])print(secret_enc)p.recvuntil(b": ")p.sendline(b"2")p.recvuntil(b": ")p.sendline(bytes.hex(secret_enc[:12] + b"\x00" * 4).encode())dec1 = bytes.fromhex(p.recvline().strip().decode().rpartition(" ")[-1])p.recvuntil(b": ")p.sendline(b"2")p.recvuntil(b": ")p.sendlin..
dreamhack 1120 from pwn import *p = remote("host3.dreamhack.games", 16561)enc_sec = bytes.fromhex(p.recvline().strip().decode().rpartition(" ")[-1])p.recvuntil(b": ")p.sendline(b"1")p.recvuntil(b": ")dec_b = b"A"*16p.sendline(bytes.hex(dec_b).encode())b = bytes.fromhex(p.recvline().strip().decode().rpartition(" ")[-1])p.recvuntil(b": ")p.sendline(b"2")p.recvuntil(b": ")p.sendline(bytes.hex(bytes([a^b for (a, b..
dreamhack 1119 from M import Mfrom sage.all import *result = [46815, 54436, 41979, 52634, 9427, 38200, 30164, 30742, 37278, 27003, 60542, 47536, 61611, 9732, 18365, 23026, 41731, 25299, 3968, 11754, 5594, 13472, 47963, 62980, 14030, 45400, 27929, 22796, 6570, 1164, 9962, 23574, 19373, 17887, 58878, 20221, 52376, 54543, 36488, 25377, 56175, 20339, 35820, 26224, 7980, 43220, 8400, 51986, 54412, 3511, 43757, 2220..
dreamhack 1118 from Crypto.Cipher import DESfrom pwn import *import binasciip = remote("host3.dreamhack.games", 12520)p.recvuntil(b"> ")hint = bytes.fromhex(p.recvline().strip().decode("utf-8"))r1 = {}for i in range(0xFFFF + 1): k = b'Dream_' + i.to_bytes(2, 'big') enc = DES.new(k, DES.MODE_ECB).encrypt(b'DreamHack_blocks') r1[enc] = kfor i in range(0xFFFF + 1): k = i.to_bytes(2, 'big') + b'Hacker'..
TIL - 20241123 도메인 주소 검증 로직에서 주의해야 할 점만약 특정 주소를 입력했을 때의 도메인의 주소를 블랙리스트 혹은 화이트리스트 방식으로 관리한다면 주의해야 할 점이다.먼저 도메인에 특정 문자열이 포함되는지 여부로 해서 허용을 한다면 fully matched 방식으로 체크해야 한다.예를 들어 "humit.tistory"라는 문자열이 포함되어 있는지 여부로 체크해서 포함되는 경우에만 허용한다면, 공격자가 "humit.tistory.victim.com" 으로 해서 우회할 수 있는 위험이 있다.그리고 도메인 주소의 경우 대소문자를 구분하지 않느다는 특징이 있다. 즉 HUMIT.TisTOry.CoM 으로 접속하더라도 humit.tistory.com으로 접속하는 것과 동일하다.그래서 허용하지 않을 도메인주소를 블랙리스트로 ..
TIL - 20241122 Kubernetes PodOperator로 수행한 Spark local 모드 수행 모니터링spark local 모드로 수행하는 경우 4040 포트로 history 로그를 볼 수 있는 웹서버가 뜨게 된다.그래서 이걸 보기 위해서는 Pod를 띄울 때 4040 포트를 접근할 수 있도록 port 정보를 추가해서 잡을 제출하고 kubectl port-forward 명령어를 사용해서 로컬에서 접근할 수 있도록 하고 해당 주소로 접근해서 잘 동작하는지 확인하면 된다.물론 이렇게하지 않더라도 spark.eventLog.dir 설정을 적용해서 로그를 리모트 저장소에 저장할 수 있게 하고 historical 서버가 해당 경로를 바라도록 하면 port-forward 를 사용하지 않더라도 조회할 수 있다.
TIL - 20241121 Dynamic task mapping 사용시 팁Dynamic task mapping을 사용하면 airflow 웹 서버에서 task 수행되는 것을 보면 0, 1, 2, 3과 같이 숫자로 찍힌다.이렇게 되면 해당 task가 어떤 잡인지 알기 어려운 점이 있다.이를 map_index_template 값을 사용하면 dynamic task가 끝난 시점에 task 이름 정보를 업데이트하고 이걸 airflow UI에서 해당 내용을 확인할 수 있다.다만 이게 task 수행이 끝나야지만 업데이트가 되기 때문에 이 점을 유의해야 한다.
TIL - 20241120 Yarn cluster에서 spark-submit으로 잡을 제출했을 때 로그 건 수 줄이기yarn cluster에 spark-submit을 사용해서 잡을 제출하면 1초마다 한 번씩 해당 앱의 상태를 조회해서 체크합니다. 그렇기 때문에 잡 수행시간이 긴 경우에는 불필요하게 로그가 많이 찍히는 이슈가 있습니다.이를 조절하기 위해서 spark 에서 spark.yarn.report.interval 설정을 통해 적용할 수 있습니다. 해당 값의 경우 기본 값이 '1s'로 설정되어 있고 이를 적절하게 사용하면 출력되는 로그 건 수를 줄일 수 있습니다.분 단위로는 'm', 'min'으로, 시간 단위는 'h'로 표현하면 됩니다.