728x90
반응형

CTF 풀이 8

[드림핵] STB-lsExecutor 포너블풀이

STB-lsExecutor 포너블 풀이 Patchday Twitter 에서 소스코드가 주어집니다. 이 코드는 주어진 옵션과 경로를 입력 받아서 시스템 명령어를 실행하는 간단한 프로그램입니다. 먼저, "main" 함수는 "EVP_PKEY_CTX" 포인터를 매개변수로 받습니다. 이 함수는 초기화 함수 "init"을 호출한 후, 무한 루프를 실행합니다. 루프는 최대 9번 반복하며, 각 반복에서 사용자에게 옵션과 경로를 입력 받습니다. 사용자로부터 옵션은 "read_data" 함수를 통해 60바이트까지 입력 받고, 이를 "snprintf" 함수를 사용하여 "ls -{입력된 옵션}" 형태로 조합합니다. 그리고 다시 사용자로부터 경로를 입력 받아서 "ls" 명령어와 조합하여 최종 명령어를 만들게 됩니다. 그 후, ..

CTF 풀이 2024.02.28

[드림핵] [wargame.kr] dmbs335 풀이 (+SQLI 치트시트)

[wargame.kr] dmbs335 PHP 소스 코드를 분석하면 SQL Injection 취약점이 발생하는 것을 확인할 수 있습니다. 사용자로부터 입력 받은 변수들이 SQL 쿼리의 일부로 사용되기 때문에 발생하는 취약점입니다. 1. 파라미터(Parameter) 및 매개변수(Argument) 문제에서 제공된 접속 정보로 접속하면, 다음과 같은 화면이 표시됩니다. 서치 버튼을 클릭하면, 파라미터(Parameter) 및 매개변수(Argument)를 분석할 수 있습니다. 파라미터 search_cols, keyword, operator와 같은 쿼리 문자열의 일부입니다. URL에서 ? 이후의 부분인 search_cols=subject&keyword=&operator=or은 쿼리 문자열로, 각각의 파라미터와 그 값..

CTF 풀이 2024.02.23

[드림핵] chinese what? - RSA CRT 암호학 문제 풀이

RSA와 중국인의 나머지 정리(CRT) RSA(Rivest-Shamir-Adleman)는 공개키 암호화 알고리즘 중 하나로, 안전한 통신을 위해 사용됩니다. RSA에서는 두 개의 큰 소수 ( p )와 ( q )를 선택하여 이들의 곱으로 ( N )을 생성합니다. 즉, ( N = p \times q )입니다. 이 ( N )은 공개키로 사용되며, 암호화에 필요합니다. 공개키와 개인키를 생성하기 위해 오일러의 피 함수 ( \phi(N) = (p-1)(q-1) )을 계산하고, 이를 이용하여 공개키 ( e )와 개인키 ( d )를 계산합니다. 여기서 ( e )는 ( \phi(N) )과 서로소인 임의의 정수이며, ( d )는 ( e )에 대한 모듈러 역수로서 ( e \times d \equiv 1 \pmod{\phi..

CTF 풀이 2024.02.16

[드림핵] r-xor-t 풀이

해당 문제는 Dreamhack CTF Season 4 Round #2 (🌱Div2) 에 출제된 문제입니다. 1. 프로그램 분석 주어진 문제파일을 다운로드한 뒤, 자세한 분석을 위해 디컴파일 했습니다. 소스코드 입니다. undefined8 main(void) { int iVar1; // 정수형 변수 iVar1 선언 size_t sVar2; // 문자열 길이를 저장할 변수 sVar2 선언 int local_14; // 지역 변수 local_14 선언 int local_10; // 지역 변수 local_10 선언 int local_c; // 지역 변수 local_c 선언 puts("Input: "); // "Input: " 메시지 출력 __isoc99_scanf(&DAT_00102010, input); // ..

CTF 풀이 2024.02.13

[드림핵] Relative Path Overwrite Advanced 풀이

Relative Path Overwrite 취약점 Relative Path Overwrite(상대적 경로 덮어쓰기)는 보안 취약점 중 하나로, 주로 웹 애플리케이션에서 발생합니다. 이 취약점은 파일 시스템에서 상대적인 경로를 이용하여 파일을 덮어쓸 수 있는 상황을 이용합니다. 보통 이 취약점은 웹 애플리케이션에서 사용자로부터 입력을 받아 파일 경로를 생성하거나 조작할 때 발생합니다. 사용자 입력이 적절한 검증 없이 파일 경로에 사용되는 경우, 공격자는 상대적인 경로를 이용하여 원하지 않는 파일을 덮어쓸 수 있습니다. 예를 들어, 웹 애플리케이션이 파일을 업로드하고 이를 사용자에게 다운로드할 수 있는 기능을 제공한다고 가정해봅시다. 그러나 파일 경로 생성에 사용된 코드에 취약점이 있다면, 공격자는 업로드한..

CTF 풀이 2024.02.07

[드림핵] php-1 풀이 (+LFI치트시트)

이번 문제에서는 PHP로 작성된 Back Office 서비스에서 발생하는 Local File Inclusion (LFI) 취약점을 이용하여 /var/www/uploads/flag.php 파일에 위치한 플래그를 획득하는 것이 목표입니다. LFI 취약점이란? LFI(Local File Inclusion) 취약점은 웹 브라우저를 통해 서버에 파일을 포함시키는 과정입니다. 이 취약점은 웹 어플리케이션에서 사용자 입력값을 적절하게 필터링하지 않아 디렉토리 변경 명령어들의 삽입을 허용했을 때 일어납니다. php-1 풀이 1. /index.php PHP Back Office 서비스의 메인 페이지해당 HTML 코드는 PHP Back Office 서비스의 메인 페이지를 나타냅니다. 여기서 중요한 부분은 다음과 같습니다...

CTF 풀이 2024.02.01

[드림핵] Basic_Crypto1

Basic_Crypto1 이 문제는 로마 황제 암호(Roman emperor’s cipher)를 해독하는 문제입니다. 주어진 암호문 "EDVLF FUBSWR GUHDPKDFN"을 해독하여 "DH{decode_Text}"로 변환해야 합니다. 암호문은 알파벳 대문자와 공백으로 이루어져 있으며, 해독 과정에서 알파벳 대문자를 그대로 사용하고 공백은 "_"로 대체합니다. 로마 황제 암호(Roman emperor’s cipher) 로마 황제 암호는 알파벳을 암호화하는 간단한 치환 암호입니다. 각 알파벳을 암호화하기 위해 알파벳의 아스키 코드 값을 사용하며, 암호화에는 아스키 코드 값에서 3을 뺀 후 알파벳으로 변환하는 방식을 사용합니다. 이때, 알파벳이 A보다 작은 경우, 즉 아스키 코드 값이 65 미만인 경우에..

CTF 풀이 2023.05.28

[드림핵] cpp-type-confusion

cpp-type-confusion -목차- 1. 개념정리 2. 풀이 1. 개념정리 "Type confusion"은 C++에서 발생할 수 있는 오류 중 하나로, 프로그램이 메모리를 잘못 사용하여 예상하지 않은 결과를 만드는 것을 말합니다. 이러한 오류는 주로 포인터 형식이나 참조 형식을 사용할 때 발생합니다. 예를들어, 다음과 같은 코드가 있다고 가정해 봅시다. void foo(int* p) { *p = 10; } int main() { double d = 3.14; foo((int*)&d); // type confusion! return 0; } foo 함수는 int 포인터를 인자로 받아서 해당 포인터가 가리키는 메모리에 10을 저장합니다. 그러나 main 함수에서는 double 변수 d의 주소를 int..

CTF 풀이 2023.05.12
728x90
반응형