it 33

[RSA 이해를 위한 몸부림 - 3] RSA 암호화 간단히 이해

RSA 암호화 RSA는 공개키 암호화 방식중 하나이다. 우선, 암호화 하는데에 KEY가 필요하겠다. 키는 총 두 가지의 KEY가 관여하는데 하나는 공개키, 하나는 개인키(비밀키)이다. 먼저 이 KEY들이 어떻게 만들어지는지 보자. 1. KEY 우선 공개키. 임의의 서로소인 수 p, q를 정하자. 그리고 n = p * q Φ(n) = (p-1) * (q-1)이라 하자. (Φ는 "파이" 라고 읽으면 된다) 그리고 1 < e < Φ(n) 이면서 Φ(n)과 서로소인 e를 정한다. 여기까지 잘했다면 공개키는 두 수 n과 e의 조합인 로 정할 수 있다. 다음은 개인키. 여기서 이전에 설명했던 모듈러 연산 및 역원이 쓰이는데 공개키 e와 곱해져서서 Φ(n)으로 나눴을 때 나머지가 1이 되는 d가 개인키에 이용된다. ..

[RSA 이해를 위한 몸부림 - 2] 모듈러 연산

모듈러 연산 모듈러 연산은 간단히 말하면 나머지를 구하는 연산이라고 볼 수 있다. 위 식에서 a는 피제수, b는 제수, c는 나머지 이다. 예를 들면, 26 mod 5 = 1 이 될 수 있을 것이다. 이해 되었다면 이제 모듈러 연산의 여러 특징을 정리하려 한다. 1. 합동 모듈러 연산에서 26 mod 5 나 36 mod 5 는 모두 똑같이 1로 같다. 이를 합동 이라는 개념으로 부를 수 있으며 표현은 이와 같이 한다. 1 ≡ 6 ≡ 26 ≡ 36 mod 5 = 1 2. 성질 모듈러 연산에는 아래와 같이 좌변의 덧셈과 곱셈에 대해 분해할 수 있는 성질이 있다. [1] (a + b) ≡ ((a mod n) + (b mod n)) mod n [2] (a * b) ≡ ((a mod n) * (b mod n)) ..

[System32.kr] RSA101

RSA101 #Crypto #RSA Algorithm #Inverse System32.kr 워게임의 메인컨텐츠로 보이는 Crypto 문제의 서막이다. RSA 문제 시리즈가 여러가지가 있는데 그에 대한 첫 단추를 꿸 수 있는 문제로 보인다. 이와 동시에 RSA공부도 시작할 수 있을 것 같다. RSA에 대한 것은 따로 정리하고 문제풀이에 관해서만 핵심적으로 정리하겠다. 우선 문제파일은 paste bin에 올라온 이 텍스트 파일이다. RSA에 필요한 서로소인 수 p,q 와 공개키 e, 그리고 암호화 된 데이터 c가 들어있다. 여기서 개인키 d를 추출해서 복호화 하면 될 것 같다. 참고로 원래 데이터인 M은 이러한 구조로 복호화 가능하다. 문제풀이를 위해 파이썬 Crypto 모듈을 이용했다. 모듈러 연산 시, ..

[Pwnable.xyz] GrownUp

GrownUp #pwnable.xyz #baby_fsb 오랜만에 pwnable.xyz 를 하였다. 몸풀기로 낮은 점수의 GrownUp 문제를 풀어보았다. 플래그는 바이너리에 내장되어있다고 한다. 바이너리 문자열을 검색해보면 진짜로 플래그 (물론 페이크 플래그)가 내장되어있다. 0x601080 이 주소를 기억하라. PIE가 적용되어있지 않아서 이 data영역의 주소는 서버에서도 동일하게 매핑되어있을 것이다. 바이너리 실행결과는 이렇다. 봐야할 주요부분은 main함수이다. 처음에는 setup 함수가 실행된다. setup 함수는 ... data영역의 0x601160 부분에 %s\n 문자열을 넣는다. 후에 0x601160은 main함수의 printf의 서식문자로 이용된다. 그리고 y or N에 대한 응답을 re..

[System32.kr] Warm Up

Warm Up #pwnable #system32.kr #file descriptor 새로운 워게임 사이트를 찾았다! 암호학 위주여서 매우 관심이 간다 ㅎㅎ 첫 단추를 어떤 문제로 풀어볼까 하다가 Warm Up 이라는 pwnable 문제를 찾았다. 파일 디스크립터를 이용하는 문제 같다. 처음에는 파일 디스크립터를 overwrite 하는 종류의 문제인가 했으나 의외로 간단했다. 다만 strip 이 적용된 상태라 glibc 함수들을 일일히 인지하고 복구하는 과정에 약간의 난항이 있다. 우선 위처럼 메뉴가 주어지고 특정 파일을 open하고 읽거나 삭제할 수 있다. 디컴파일 해보니 31337 이라는 숨겨진 커맨드가 있었다. 이 함수는 /home/strange_file/flag 파일내용을 임의의 string 테이블..

[Hack.lu 2019] no_risc_no_future

no_risc_no_future #mips #pwn ※ 원본 Write Up : https://github.com/goseungduk/CTF_WriteUp/tree/master/Hack.lu_2019/pwn/no_risc_no_future제목 그대로 risc 형식의 mips 아키텍쳐로 된 바이너리에 대한 pwnable 문제이다. Ghidra로 열어본 바이너리는 이런 모습이다. 64바이트짜리 배열에 256바이트를 입력할 수 있게 해준다. 그리고 입력한 버퍼를 출력시켜준다. 그리고 Canary 외에는 별다른 보호기법도 걸려있지 않는 것으로 보아, buffer overflow 이후, 쉘코드를 이용하여 쉘을 얻어내면 될 것 같다. 대강 순서는 이러하다. 1. puts 함수를 이용해서 canary를 leak 2...

<보안 study>/CTFs 2019.12.21

[SECCON 2019] Follow me

follow_me #reversing ※ 원본 Write Up : https://github.com/goseungduk/CTF_WriteUp/tree/master/SECCON_2019/rev/follow_me 우리의 숙제는 계산기 프로그램에서 실행했던 기록 중에서도 branch 명령에 대한 기록을 보고, 어떤 공식을 프로그램에 전달했는지 찾는 것이다. 파일은 총 3개, 계산기 프로그램 바이너리와 branch명령에 대한 기록, 그리고 branch명령을 따라가는 추적프로그램에 대한 소스코드를 준다. 필자는 앞의 계산기 프로그램 바이너리와 branch 명령에 대한 기록만 보고 문제를 풀었다. main 함수이다. 바이너리의 사용법과 실제로 계산을 해주는 함수가 들어있다. calculate 함수의 switch문 ..

<보안 study>/CTFs 2019.12.21

[SECCON 2019] Coffee_break

COFFEE_BREAK #crypto #reversing※ 원본 Write Up : https://github.com/goseungduk/CTF_WriteUp/tree/master/SECCON_2019/crypto/coffee_break 간단히 풀 수 있었던 크립토(?) 라기엔 리버싱에 가까운 문제였다. The program "encrypt.py" gets one string argument and outputs ciphertext. Example: $ python encrypt.py "test_text" gYYpbhlXwuM59PtV1qctnQ== The following text is ciphertext with "encrypt.py". FyRyZNBO2MG6ncd3hEkC/yeYKUseI/CxYoZ..

<보안 study>/CTFs 2019.12.21

[TokyoWesterns 2019] EASY_CRACK_ME

EASY_CRACK_ME #z3 #reversing ※ 원본 Write Up : https://github.com/goseungduk/CTF_WriteUp/tree/master/TokyoWesterns_2019/reverse/easy_crack_me 단순한 Crack Me 유형의 문제입니다. 인자로 플래그를 받는데, 맞지않는 값을 넣으면 incorrect를 출력시켜줍니다. 바이너리를 뜯어보면 알겠지만 플래그 인증과정이 총 8개정도 있고, 모든 조건에 다 맞아야 정확한 플래그로 인지합니다. 첫 번째 조건 플래그길이는 총 39바이트여야하며, TWCTF{ 로 시작하여 } 로 끝나야합니다. 두 번째 조건 우선 0123456789abcdef 의 표본이 될 문자열이 주어집니다. 그리고 반복문으로 순회하면서 인자로 ..

<보안 study>/CTFs 2019.12.21

Ghidra-Server 기관에 직접 계정의뢰하기

GhidraServer Ghidra-Server 지난 게시글에서는 직접 내 컴퓨터에 Ghidra 서버 구성 하는 법을 작성해보았다. https://goseungduk.tistory.com/33 하지만, Ghidra-Server 기관에서는 현재 더 나은 Ghidra-Server를 위해 피드백도 받고 업데이트도 지속적으로 할 목적으로 자체 공식 서버를 파놓았다. 또한 서버 구축이 어렵거나 안정적인 서버를 원하는 단체에게는 이만한 안성맞춤이 없다. 아무래도 이번 게시글은 기술적인 글보다는 Ghidra-Server에 컨택할 수 있는 방법론에 대해 적으려고 한다. https://twitter.com/Ghidra_Server Ghidra-Server Twitter 우선 Ghidra-Server는 이메일 또는 트위터..

반응형