반응형

python 80

[HackTheBox] BabyEncryption - 암호학 / Python

HackTheBox 에서 제공하는 암호학 문제 난이도는 그렇게 어렵지 않긴 한데.. 그렇다고 마냥 쉽지많은 않다. HackTheBox 는 난이도 역치가 높은것 같다. 문제에서 제공되는 것은 chall.py 와 msg.enc 파일이다. 먼저 chall.py 의 내용을 보면 암호화 하는 알고리즘을 보여준다. encryption 함수에서 msg 를 인수로 받아 각 글자 * 123 + 18 한 값을 256 으로 나눈 나머지를 ct 배열에 저장하고 있다. 모든 값을 암호화하면 msg.enc 파일을 생성해 거기에 저장하고 끝이 난다. 6e0a9372ec49a3f6930ed8723f9df6f6720ed8d89dc4937222ec7214d89d1e0e352ce0aa6ec82bf622227bb70e7fb7352249b7..

[CTFlearn] Symbolic Decimals - 암호학 / Python

CTFlearn의 예순번째 문제 전혀 Hard 하지 않은 Hard 난이도의 암호학 문제이다. 문제 설명이 좀 친절하지 않았다면 어려울 수 있는 문제인데 문제 설명이 너무 친절하다.. 심볼로 메세지를 숨기는 방법을 아냐면서 예를 들어주는데 !@#$%^&*( 같은경우 123456789 와 각각 매칭이 된다고 한다. 이것 그냥 키보드 숫자키를 의미하는 것이다. ^&,*$,&),!@#,*#,!!^,(&,!!$,(%,$^,(%,*&,(&,!!$,!!%,(%,$^,(%,&),!!!,!!$,(%,$^,(%,&^,!)%,!)@,!)!,!@% 문제에서 주어진 이 암호문을 키보드 숫자키에 맞춰서 숫자로 바꾸면 무언가 의미있는 데이터가 나올 것이다. 양이 그렇기 길지 않아서 그냥 수작업으로 일일이 바꿔도 되지만 파이썬 코드..

워게임/CTFlearn 2023.01.23

[JISCTF] REV102 - 리버싱 / Uncompyle6

푸는데 머리조금 아팠던 리버싱 문제이다. 역시나 수학은 어려운것 같다.. 문제에서 주어지는 것은 be_true 라는 바이너리 파일이다. 무슨 파일인지 보려고 HxD로 열어봤는데 중간중가네 pys, pyt 이런 단어들이 보여서 파이썬으로 만들어진 것이라고 추측했다. 확실하게 파이썬이라고 생각한건 을 구글에 검색한 결과 파이썬 제너레이터라는 검색결과가 나왔기 때문이다. 그래서 해당 파일의 확장자를 .pyc 로 바꾸고 분석을 시작했다. .pyc 파일을 파이썬 코드로 복구하는데는 uncompyle6 라는 도구를 사용한다. pip install uncompyle6 라고 입력하면 다운로드 받을 수 있다. python3 uncompyle6 이라고 입력하면 이렇게 파이썬 코드를 복구할 수 있다. import opera..

CTF/리버싱 2023.01.22

[JISCTF] Common - MISC / Python

쉬운 난이도의 MISC 문제 MISC는 miscellaneous의 약자로 여러가지 잡다한 이라는 의미를 가지고 있다. 문제 설명을 읽어보면 두 파일을 비교해서 뭔가를 찾아내야 하는듯 하다. 주어지는 파일은 files.zip 인데 압축을 풀어보면 안에 이렇게 file2.txt 와 file3.txt 파일이 들어있다. 왼쪽이 file2.txt, 오른쪽이 file3.txt 의 내용이다. 뭔가 알수없는 문자들이 가득 쓰여있는데, 얼핏 보면 두 파일의 내용이 똑같은것 처럼 보인다. 리눅스에서 diff 명령어를 통해 file2.txt 와 file3.txt를 비교한 결과를 보니 확실히 중간에 뭔가가 다른것 같다. 1c1 이라고 되어있는건 각 파일의 첫번째 줄이 서로 다르다는 의미인데, 이건 file2.txt 와 fil..

CTF/MISC 2023.01.19

[CTFlearn] The Credit Card Fraudster - 프로그래밍 / Python

CTFlearn 의 쉰다섯번째 문제 이번엔 Easy난이도의 프로그래밍 문제이다. 이전문제들과 달리 뭔가 설명이 길어서 조금 긴장했다. 내용을 대강 읽어보면 INTERPOL에서 추적하고 있는 신용카드 사기꾼을 붙잡았는데 사기꾼이 가지고 있던 영수증에 찍힌 신용카드 번호의 일부분을 보고 신용카드 전체 번호가 어떻게 되는지 알아내는것이 목표이다. 힌트는 두가지가 주어진다. 1. 신용카드 번호는 123457의 배수이다. 2. 신용카드 번호 는 Luhn 알고리즘으로 검증할 수 있다. 한번 파이썬으로 구현해본다. cardnum_f = '543210' cardnum_b = '1234' for i in range(999999): cardnum_m = ('00000' + str(i))[-6:] cardnum = int(..

워게임/CTFlearn 2023.01.11

[CTFlearn] RSA Beginner - 암호학 / Python

CTFlearn의 마흔 일곱번째 문제 이번엔 RSA 알고리즘과 관련된 암호학 문제이다. Beginner 라 그런지 이전에 포스팅 했던 문제들이랑 비슷하게 쉽게 풀 수 있다. (https://hackingstudypad.tistory.com/337) RSA는 지금까지도 아주 많이 사용하는 공개키 알고리즘의 이름이다. 개발자인 Rivest, Shamir, Adleman 세명의 이름 앞글자를 따서 RSA 라고 이름을 붙혔다. 엄청나게 큰 숫자일수록 소인수분해가 어렵다는것에 착안해서 설계되었다. RSA의 원리는 아래와 같다. 1. 두 소수 p, q를 준비한다. 2. p-1, q-1과 각각 서로소(1외에는 공약수가 없는 수)인 정수 e를 준비한다. 3. ed를 (p-1)(q-1)으로 나눈 나머지가 1의 되도록 하..

워게임/CTFlearn 2022.12.22

[Cyber Security Rumble] Hashfun - 암호학 / XOR / Python

Hash 인듯 Hash 아닌 문제 조금 헷갈렸는데 어렵지 않게 풀 수 있었다. 문제를 보면 FLAG 를 되돌릴 수 있는 방법은 없을거 같다면서 파일을 하나 제공한다. from secret import FLAG def hashfun(msg): digest = [] for i in range(len(msg) - 4): digest.append(ord(msg[i]) ^ ord(msg[i + 4])) return digest print(hashfun(FLAG)) # [10, 30, 31, 62, 27, 9, 4, 0, 1, 1, 4, 4, 7, 13, 8, 12, 21, 28, 12, 6, 60] 주어진 파일의 내용은 파이썬 코드이다. secret 에서 FLAG 라는 값을 가져와서 hashfun(FLAG) 의 ..

CTF/암호학 2022.12.21

[HackTheBox] petpet rcbee - 웹해킹 / Command Injection / Pillow

Pillow 취약점을 이용한 Command Injection 문제 HackTheBox 에서 제공하는 문제는 난이도가 EASY 더라도 조금 어려운것 같다... 문제페이지에 접속하면 이런 화면이 나온다. 귀엽게 생긴 벌들이 날아다니고 아래쪽에는 뭔가 파일을 업로드 할 수 있는 버튼이 있다. 바탕화면에서 크롬 아이콘을 캡쳐해서 한번 업로드 해봤더니 갑자기 손이 하나 튀어나와서 업로드한 크롬 사진을 마구마구 쓰다듬어 준다. 찾아보니 pet 이라는 단어가 애완동물 외에도 동사로 쓰일경우 쓰다듬다 라는 뜻이 있다고 한다. 문제 제목 그대로 업로드한 사진을 쓰다듬어 주는 기능이 이 페이지 기능의 전부이다. 문제에서 같이 주어진 Dockerfile 을 열어보면 pip install로 Pillow 라이브러리를 다운받고 ..

[b01lers CTF] Dream Stealing - 암호학 / RSA / Python

계속해서 이어지는 RSA 관련 암호학 문제 이전 문제보다 훨씬 쉬운 느낌이다. RSA는 지금까지도 아주 많이 사용하는 공개키 알고리즘의 이름이다. 개발자인 Rivest, Shamir, Adleman 세명의 이름 앞글자를 따서 RSA 라고 이름을 붙혔다. 엄청나게 큰 숫자일수록 소인수분해가 어렵다는것에 착안해서 설계되었다. RSA의 원리는 아래와 같다. 1. 두 소수 p, q를 준비한다. 2. p-1, q-1과 각각 서로소(1외에는 공약수가 없는 수)인 정수 e를 준비한다. 3. ed를 (p-1)(q-1)으로 나눈 나머지가 1의 되도록 하는 d를 구한다.(d는 개인키로 공개하지 않는다) 4. n=pq를 계산한 후 n과 e를 공개한다.(이 둘이 공개키) 이 알고리즘을 이용해서 공개키-개인키 쌍을 만들고 공개..

CTF/암호학 2022.11.28

[b01lers CTF] Clear the Mind - 암호학 / RSA / Python

쉬운 RSA 문제 2020CCE 대회가 끝나고 이 문제를 풀었는데 CCE 에서 나왔던 문제 유형과 아주 비슷한 문제여서 금방 풀었다. (https://hackingstudypad.tistory.com/315) RSA는 지금까지도 아주 많이 사용하는 공개키 알고리즘의 이름이다. 개발자인 Rivest, Shamir, Adleman 세명의 이름 앞글자를 따서 RSA 라고 이름을 붙혔다. 엄청나게 큰 숫자일수록 소인수분해가 어렵다는것에 착안해서 설계되었다. RSA의 원리는 아래와 같다. 1. 두 소수 p, q를 준비한다. 2. p-1, q-1과 각각 서로소(1외에는 공약수가 없는 수)인 정수 e를 준비한다. 3. ed를 (p-1)(q-1)으로 나눈 나머지가 1의 되도록 하는 d를 구한다.(d는 개인키로 공개하지..

CTF/암호학 2022.11.26
반응형