안 쓰던 블로그

진행했던 해킹 프로젝트/공부 총정리 (포너블, 포렌식, 암호학, 리눅스, 컴퓨터구조, 네트워크...) 본문

CTF

진행했던 해킹 프로젝트/공부 총정리 (포너블, 포렌식, 암호학, 리눅스, 컴퓨터구조, 네트워크...)

proqk 2022. 10. 26. 05:22
반응형

1. pwntools 기능 공부 및 정리
- pwntool의 사용법 및 다양한 기능 정리

https://foxtrotin.tistory.com/289?category=890138 

 

pwntools 기본 사용법

pwntools pwntools는 CTF 프레임워크이자 익스플로잇을 쉽게 짤 수 있게 해주는 라이브러리이다 공식 깃허브: github.com/Gallopsled/pwntools 공식 문서: docs.pwntools.com/en/stable/# 설치 apt-get update apt..

foxtrotin.tistory.com

 


2. pwntool을 이용한 간단한 문제풀이
덧셈 foxtrotin.tistory.com/290?category=890138

 

pwntool을 이용한 문제 풀이

pwntool 기본 사용법: foxtrotin.tistory.com/289 덧셈 문제 실행하면 20개 문제를 풀라는 문장과 함께 문제가 시작된다 기본 사용법 글에서 다뤘던 것처럼 풀면 된다 #!/usr/bin/env python from pwn import * r..

foxtrotin.tistory.com

더블피스톨 foxtrotin.tistory.com/294?category=890138

 

pwntools을 이용한 문제 풀이-double pistol

double pistol 프로그램을 실행하면 0이나 1을 입력하라는 문구가 나온다 0을 입력하면 xor연산 문제가 나오고 1을 입력하면 정답을 입력할 수 있다 2초 안에 10번을 입력해야 한다 문제를 봐야 정답을

foxtrotin.tistory.com

 

 


3. 간단한 암호 학습 
- RSA , AES 등 대표적 암호 학습(하스타드 어택, 위너 어택 등등)

 

RSA 공격들

foxtrotin.tistory.com/291?category=894738

 

RSA와 RSA 공격법 (d값 계산, 낮은 지수 공격, 소인수 분해, 하스타드 공격, 위너 공격)

RSA 공개키 개인키 구하는 법 1. p, q선택 파이썬에서 p, q값을 생성하는 방법은 다음과 같다 from Crypto.Util.number import getPrime p = getPrime(1024) #1024 bit q = getPrime(1024) pycryptodome가 설치되..

foxtrotin.tistory.com

1. d값 계산

RSA에서 n값과 phi값을 계산할 수 있으면 d값이 나와서 복호화가 가능하다

아니면 p, q, e값이 주어졌을 때도 n과 phi값을 계산할 수 있다

만약 p, q, e가 주어졌으면 n = p*q로 n 구하고, phi=(p-1)*(q-1)로 phi를 구하면 된다

 

2. 낮은 지수

너무 작은 e값과 너무 큰 n값이 같이 주어졌을 때 가능한 공격에 낮은 지수 공격이 있다

보통 이런 경우 e값은 3을 주는데, 암호문의 세제곱근을 구하면 평문이 된다

gmpy2의 iroot cbrt를 사용하여 풀 수 있다

 

3. 작은 n값

작은 수의 n과 e만 주어졌을 경우, p, q값을 구하기 위해서 n을 무작정 소인수 분해해 볼 수 있다

아니면 소인수 분해 DB에 나와있는 소인수 분해값인 경우에도 이런 식으로 구할 수 있다

 

4. 위너 어택

e값이 너무 큰 경우 가능한 공격 방법

e값이 65537보다 훨씬 클 경우에 d값을 도출할 수 있는 특징을 이용한다

 

5. 하스타드 어택

e값이 작고(주로 3), n값과 c값이 3개씩 주어질 때 사용 가능한 공격 방법

 

6. fermat factorization attack foxtrotin.tistory.com/329?category=894738

 

RSA 공격법: 약간의 평문을 알고, p/q값이 비슷할 때(Fermat Factorization attack)

from Crypto.Util.number import * import gmpy2 p = getPrime(1024) q = gmpy2.next_prime(p) e = 65537 N = p * q phi = (p - 1) * (q - 1) d = gmpy2.powmod(e, -1, phi) flag = open("flag").read() msg = ["H..

foxtrotin.tistory.com

q값을 만들 때 next_prime함수를 사용했는데, gmpy2 모듈의 next_prime 함수를 이용할 경우 p, q값이 거의 차이 나지 않는다

이런 경우에는 n값만 주어져도 p, q값을 구할 수 있게 된다

n, e값만 있으면 gmpy2의 isqrt와 t_divmod를 이용해서 문제를 풀 수 있다

 

AES

https://foxtrotin.tistory.com/462

 

AES란? AES의 암호화와 키 확장 과정

AES 암호화 1. 라운드키와 xor한다. (AddRoundKey) 2. 바이트를 치환한다. (SubBytes) 치환표 SBox를 이용한다 3. 행별로 바이트를 옮긴다. (ShiftRows) 첫 행은 움직이지 않고 둘째행은 왼쪽으로 1번, 셋째행은

foxtrotin.tistory.com

 

 

 

4. sage 모듈과 pycrypto 모듈 학습

sage: 수학계산

pycrypto: 파이썬 암호화 툴킷

https://foxtrotin.tistory.com/292

 

파이썬 sage, pycrypto 모듈

sage sage는 python에서 수학 계산을 위한 프로그래밍 도구이다 sage 문서: doc.sagemath.org/html/en/tutorial/ sage의 클라우드 서비스: cocalc.com/ 설치 sagemath.org/download-linux.html 이곳에서 바이너리..

foxtrotin.tistory.com

 

 


5. 간단한 암호 문제 풀이
- 암호 문제를 sage모듈과 pycrypto를 이용하여 해결

이렇게 너무 작은 e값과 너무 큰 n값이 같이 주어졌을 때 가능한 공격에 낮은 지수 공격이 있다

너무 작은 e값은 보통 3

 

RSA에서 n값과 phi값을 계산할 수 있으면 d값이 나와서 복호화가 가능하다

아니면 p, q, e값이 주어졌을 때도 n과 phi값을 계산할 수 있다

만약 p, q, e가 주어졌으면 n = p*q로 n 구하고, phi=(p-1)*(q-1)로 phi를 구하면 된다

 

n과 phi값을 구했으면 d를 구하기 위해 mod n에 대한 곱셈의 역원(곱했을 때 1이 나오는 수)을 구한다

곱셈의 역원은 gmpy2의 invert divm으로 계산할 수 있다

 

 

 

 

6. 리눅스 메모리구조(스택 , 힙 , BSS etc.) 공부

https://foxtrotin.tistory.com/312?category=859077 

 

리눅스 메모리 구조와 값 할당

1. 코드(텍스트) 영역 유저가 작성한 소스코드가 들어가는 영역, 실행할 프로그램의 코드가 바이너리화 되어 저장된다 이곳의 명령 실행 순서는 순차적이지 않다. 왜냐하면 하이레벨 언어 구조

foxtrotin.tistory.com

일반 지역 변수, 매개변수를 선언하면 메모리: 스택

데이터 영역에 값을 저장: 초기값이 있는 전역, 정적 변수를 선언

힙 영역 값 할당: malloc을 이용한 동적할당

코드 영역: 그냥 코드

bss영역: 초기값이 없는 전역, 정적 변수, 0이나 null로 초기화한 변수들 할당

 

 


7. 리눅스 서버구축(도커를 이용한 apm구축)

arm .. 할 예정이었지만.. 

 


8. 패킷쪽 분석이랑 네트워크 기본이론(와이어샤크, tcp) 공부
- 와이어샤크 사용법
- 기본적인 네트워크 이론(소켓, 3way-handshaking etc...)
- 프로토콜 기초(tcp, udp, http etc)

https://foxtrotin.tistory.com/category/Network

 

'Network' 카테고리의 글 목록

안 쓰던 블로그 https://github.com/proqk

foxtrotin.tistory.com

 

 

9. ARP Spoofing 공격 실습

https://foxtrotin.tistory.com/299?category=754276 

 

ARP와 ARP Spoofing 개념 및 공격 실습

목차 1. ARP 2. ARP Spoofing 3. ARP Spoofing 실습 3-1. 실습 환경 3-2. 실습 준비 3-3. 실습 진행 3-4. 실습 결과 4. ARP Spoofing 방어 방법 5. ARP Spoofing 공격의 한계 1. ARP 주소 결정 프로토콜(Address ..

foxtrotin.tistory.com

 

 

 

10. vagrant 기반 멀티서버 환경 구성하기

https://foxtrotin.tistory.com/484

 

vagrant 기반 multi server 환경 구성하기 (2웹서버, 1DB서버)

[준비] vagrant 설치 www.vagrantup.com/downloads virtualBox 설치 www.virtualbox.org/wiki/Downloads 설치할 때 환경변수까지 설정된다. 이거 되어 있으면 어디서든 vagrant 실행이 가능 윈도우 파워쉘 - 관리..

foxtrotin.tistory.com

 

 

11. pcap 프로그래밍 공부

헤더들 정보: foxtrotin.tistory.com/324

 

pcap 프로그래밍-ether_addr, ether_header, ip_header, tcp_header, arphdr 구조체

ether_addr 구조체 struct ether_addr { unsigned char ether_addr_octet[6]; }; ether_header 구조체 gcc버전에 따라 다르지만 /usr/include/net/ethernet.h 에 위치한다 /* 10Mb/s ethernet header */ struct et..

foxtrotin.tistory.com

ARP 패킷 만들고 전송하기: foxtrotin.tistory.com/323

 

pcap 프로그래밍-ARP 패킷 만들고 보내기

ARP 헤더 구조 ARP 패킷 만드는 과정 1. 헤더 구조에 맞춰서 구조체를 만들어 주고, 각 값을 채운다 2. 소켓을 열고 보낸다 3. 와이어 샤크에서 ARP 패킷으로 잘 잡히는지 확인한다 코드 #include #include

foxtrotin.tistory.com

RP 스니핑 프로그램 ARP reader: foxtrotin.tistory.com/325

 

pcap 프로그래밍-ARP 패킷 분석 ARP reader

이전 글 헤더들 정보: foxtrotin.tistory.com/324 ARP 패킷 만들고 전송하기: foxtrotin.tistory.com/323 pcap 함수 pcap_findalldevs(&alldevs, errbuf) 네트워크 이더넷들을 찾는 함수 alldevs에 찾은 이더넷 정..

foxtrotin.tistory.com

TCO,UDP 패킷 분석 https://foxtrotin.tistory.com/326

 

pcap 프로그래밍-TCP, UDP 패킷 분석 TCP, UDP reader

이전 글 헤더들 정보: foxtrotin.tistory.com/324 ARP 패킷 만들고 전송하기: foxtrotin.tistory.com/323 RP 스니핑 프로그램 ARP reader: foxtrotin.tistory.com/325 pcap 함수 pcap_findalldevs(&alldevs, err..

foxtrotin.tistory.com

 

 

12. 와이어샤크 패킷 분석하기

https://foxtrotin.tistory.com/321

 

와이어샤크 패킷 분석하기 1-board

사내 게시판에 불법 게시물이 몇개 올라왔다가 삭제되었다는 보고를 받았다. 패킷캡쳐로그를 분석하여 해당 게시물을 올린 계정의 id/pw와 글의 내용을 조사하라. 문제에서 볼 내용

foxtrotin.tistory.com

https://foxtrotin.tistory.com/322

 

와이어샤크 패킷 분석하기 2-tcp

tcp라는 이름의 pcap파일을 열어 본다 tcp니까 일단 tcp stream으로 내용을 확인한다 RSA 공개키 정보가 주어졌다 n과 e와 암호화 된 플래그가 있다 e값이 0x10001인데, DEC으로 65537이다 평범한 e값이므로

foxtrotin.tistory.com

 

 

 

13. 포렌식 - 파일 복구

https://foxtrotin.tistory.com/258?category=890137 

 

[포렌식] FAT 파일 시스템 구조 (FAT에서 파일 복구 방법)

Partition 파일 시스템을 보기 전에 파티션과 MBR에 대해 짚고 가겠습니다 파티션 Partition은 연속된 저장공간을 하나 이상의 연속되고 독립된 영역으로 나누어서 사용할 수 있도록 정의한 규약이다

foxtrotin.tistory.com

https://foxtrotin.tistory.com/259?category=890137 

 

[포렌식] NTFS 파일 시스템 구조 (NTFS에서 파일 복구 방법)

FAT 파일 시스템 구조: https://foxtrotin.tistory.com/258 NTFS는 현재 윈도우즈에서 가장 많이 사용되는 파일 시스템 Spec이 완전히 공개되지 않음. 마이크로소프트에서 서버용 파일시스템으로 사용하기 위

foxtrotin.tistory.com

 

 

 

14. 각종 CTF 문제 많이 풀어보기

https://foxtrotin.tistory.com/category/CTF

 

'CTF' 카테고리의 글 목록

안 쓰던 블로그 https://github.com/proqk

foxtrotin.tistory.com

 

반응형
Comments