-
Unity | 모바일 게임 해킹
서론 한국콘텐츠진흥원에서 게임 이용자의 게임 분야별 이용률 조사에 따라 모바일 게임 비율이 84.6퍼를 하는 것을 알 수 있다. 이 문서에서는 많은 비율을 차지하고 있는 모바일 게임 중 Unity로 개발된 모바일 게임에 대해서 모의해킹 진행을 진행하게 된다면 어떻게 분석하고 악의적인 조작이 어떻게 이루어질 수 있나 확인하도록 하겠습니다. Unity Unity 엔진 내부는 C++로 제작되어 있으며 유저(Client)단 코드만 C#을 이용해서 작성하게 된다. Unity 런타임 하는 방식은 두 가지로 mono, il2cpp가 존재하는데, 두 방식에서 가장 큰 차이점으로는 AOT(Ahead-Of-Time) 컴... Read More
-
Docker를 활용한 Jekyll 로컬 테스트
Jekyll을 이용한 Gitblog 작성 이후 커스텀하면서 여러 모듈을 직접 설치하여 Host PC가 더럽혀지는게 싫은 나머지 Docker를 이용한 Jekyll Local을 올려본다. (내 PC는 소중하니까) 로컬 테스트하니 위한 Docker가 우선 필요하지만 설치하지 않으신 분은 이 링크를 통해 설치하고 오면 됩니다. WSL 2 WSL를 간단하게 표현하자면 MS(마이크로소프트)에서 제공하는 Windows에서 리눅스 커널을 사용할 수 있게 해주는 기술이다. Powershell을 관리자 권한 (시작 메뉴 > PowerShell > 관리자 권한으로 실행)으로 열고 다음 명령을 입력한다. d... Read More
-
DUCTF | rusty vault write-up
문제 분석 저는 모든 보안 코딩 방법을 배웠습니다. 저는 메모리 안전 언어와 군사급 암호화만 사용합니다. 당연히 제 금고에 침입할 수 없겠죠. v0 = _rust_alloc(60LL, 1LL); v1 = (const void *)v0; *(_OWORD *)v0 = xmmword_4A000; *(_OWORD *)(v0 + 16) = xmmword_4A010; *(_OWORD *)(v0 + 32) = xmmword_4A020; *(_QWORD *)(v0 + 48) = 0x6179CBE7049F1890LL; *(_DWORD *)(v0 + 56) = 0x385BD95C; v... Read More
-
DUCTF | jmp flag write-up
문제 분석 저는 모든 보안 코딩 방법을 배웠습니다. 저는 메모리 안전 언어와 군사급 암호화만 사용합니다. 당연히 제 금고에 침입할 수 없겠죠. v0 = _rust_alloc(60LL, 1LL); v1 = (const void *)v0; *(_OWORD *)v0 = xmmword_4A000; *(_OWORD *)(v0 + 16) = xmmword_4A010; *(_OWORD *)(v0 + 32) = xmmword_4A020; *(_QWORD *)(v0 + 48) = 0x6179CBE7049F1890LL; *(_DWORD *)(v0 + 56) = 0x385BD95C; v... Read More
-
DUCTF | i am confusion write-up
문제 분석 해당 문제에 접근할 경우 Username, Password를 통한 로그인 기능이 존재하고 해당 정보에 대해서 알아야 한다. app.post('/login', (req,res) => { var username = req.body.username var password = req.body.password if (/^admin$/i.test(username)) { res.status(400).send("Username taken"); return; } if (username && password){ var payload = { u... Read More
-
DUCTF | co2v2 write-up
문제 분석 해당 문제는 기존 co2 Python Class Pollution의 다음 버전 문제로 예상된다. 기존 co2와의 차이를 소스코드를 통해서 확인해보겠습니다. SECRET_NONCE = generate_random_string() # Use a random amount of characters to append while generating nonce value to make it more secure RANDOM_COUNT = random.randint(32,64) def generate_nonce(data): nonce = SECRET_NONCE + data + generat... Read More
-
DUCTF | hah got em write-up
문제 분석 Oh by the way I love using my new microservice parsing these arrest reports to PDF 해당 문제에 접근 시 Not Found만 나오는 것을 확인할 수 있다. FROM gotenberg/gotenberg:8.0.3 COPY flag.txt /etc/flag.txt version: "3.2" services: gotenberg: build: src/. ports: - 3000:3000 해당 파일의 경우 gotenberg:8.0.3만을 사용하며 어떠한 페이지가 존재하지 않는 것을 확인할 수 있다. ... Read More
-
DUCTF | co2 write-up
문제 분석 A group of students who don’t like to do things the “conventional” way decided to come up with a CyberSecurity Blog post. You’ve been hired to perform an in-depth whitebox test on their web application. 처음 접속 시 Bad Gateway만 출력되는 것을 확인하였습니다. 문제에서 제공되는 소스 코드를 통해 Flag가 나오는 조건을 확인하였습니다. flag = os.getenv("flag") @app.route("/get_fl... Read More
-
UMDCTF 2023 | Pokeball Escape
해당 CTF는 직접 참여한 것이 아닌 Writeup이 제공 되어 이후에도 문제를 풀이할 수 있게 되었습니다. 공식 링크는 아래에 첨부되어있고, 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 분석 You are stuck in a Pokeball, break out! Hint: I do not mean exit the app Download File: pokeball_escape.apk 앱 실행 시 일정 시간동안 !! CONDITIONS NOT MET TO ESCAPE Toast 메세지가 발생하고 있다. 해당 앱은 JEB을 통해 확인해보록 하겠습니다. newGame() 함... Read More
-
iOS DVIA-v2 | Touch & Face ID Bypass
취약점 개요 로컬 인증 우회은 단말기 내에 어느 한 서비스 접근 시 인증을 요구할 때 해당 인증 로직이 로컬에서만 이루어지며 이 인증을 우회하는 것을 뜻한다. 많은 사용자가 안전하고 간편한 디바이스 액세스를 위해 Face ID, Touch ID, Optic ID와 같은 생체 인증을 사용한다. 생체 인식 기능이 없는 디바이스의 경우 대체 옵션으로 비밀번호나 암호를 사용하는 것도 비슷한 용도로 사용됩니다. 해당 인증 정보를 서버로 ID와 PW 등을 전송하여 해당 값이 옳은 지 판단하는 것이 아닌 단말기 내에서 인증 정보를 검증할 때 이러한 취약점이 발견될 수 있다. 취약점 실습 실습 환경 : iOS... Read More
-
iOS DVIA-v2 | Application Patching (Kill Application)
취약점 개요 바이너리 코드 패치는 공격자가 코드의 나머지 기능은 그대로 유지하면서 프로그램 코드의 특정 부분을 변경하는 일반적이고 효과적인 방법으로 소스 코드 없이도 프로그램을 제자리에서 조작할 수 있다. 공격자는 잘 알려진 디스어셈블러 또는 후킹 도구를 사용하여 코드를 이해하고 바이너리 패치를 구현할 수 있다. 그러나 다른 비표준 기술을 사용하여 바이너리 패치를 구현할 수도 있으며, 이는 쉽게 탐지되지 않을 수 있다. 바이너리 패치의 일반적인 표적은 다음과 같습니다 소프트웨어에서 라이선스 검사 제거 애플리케이션 제한 우회 광고 비활성화 ... Read More
-
iOS DVIA-v2 | Application Patching (Alert)
취약점 개요 바이너리 코드 패치는 공격자가 코드의 나머지 기능은 그대로 유지하면서 프로그램 코드의 특정 부분을 변경하는 일반적이고 효과적인 방법으로 소스 코드 없이도 프로그램을 제자리에서 조작할 수 있다. 공격자는 잘 알려진 디스어셈블러 또는 후킹 도구를 사용하여 코드를 이해하고 바이너리 패치를 구현할 수 있다. 그러나 다른 비표준 기술을 사용하여 바이너리 패치를 구현할 수도 있으며, 이는 쉽게 탐지되지 않을 수 있다. 바이너리 패치의 일반적인 표적은 다음과 같습니다 소프트웨어에서 라이선스 검사 제거 애플리케이션 제한 우회 광고 비활성화 ... Read More
-
iOS DVIA-v2 | Application Patching (Jailbreak)
취약점 개요 바이너리 코드 패치는 공격자가 코드의 나머지 기능은 그대로 유지하면서 프로그램 코드의 특정 부분을 변경하는 일반적이고 효과적인 방법으로 소스 코드 없이도 프로그램을 제자리에서 조작할 수 있다. 공격자는 잘 알려진 디스어셈블러 또는 후킹 도구를 사용하여 코드를 이해하고 바이너리 패치를 구현할 수 있다. 그러나 다른 비표준 기술을 사용하여 바이너리 패치를 구현할 수도 있으며, 이는 쉽게 탐지되지 않을 수 있다. 바이너리 패치의 일반적인 표적은 다음과 같습니다 소프트웨어에서 라이선스 검사 제거 애플리케이션 제한 우회 광고 비활성화 ... Read More
-
iOS DVIA-v2 | Application Patching (Login)
취약점 개요 바이너리 코드 패치는 공격자가 코드의 나머지 기능은 그대로 유지하면서 프로그램 코드의 특정 부분을 변경하는 일반적이고 효과적인 방법으로 소스 코드 없이도 프로그램을 제자리에서 조작할 수 있다. 공격자는 잘 알려진 디스어셈블러 또는 후킹 도구를 사용하여 코드를 이해하고 바이너리 패치를 구현할 수 있다. 그러나 다른 비표준 기술을 사용하여 바이너리 패치를 구현할 수도 있으며, 이는 쉽게 탐지되지 않을 수 있다. 바이너리 패치의 일반적인 표적은 다음과 같습니다 소프트웨어에서 라이선스 검사 제거 애플리케이션 제한 우회 광고 비활성화 ... Read More
-
iOS DVIA-v2 | Side Channel Data Leakage (Screen Shot)
취약점 개요 부채널 데이터 유출은 사용되는 어플리케이션의 주 기능이 아닌 타 기능을 통해 데이터가 유출되는 취약점을 말한다. 의도하지 않은 데이터 유출은 개발자가 실수로 모바일 디바이스의 다른 앱이 쉽게 액세스할 수 있는 위치에 민감한 정보나 데이터를 저장할 때 발생한다. 개발자의 코드가 사용자 또는 백엔드에서 제공한 민감한 정보를 처리할 때 이 과정에서 개발자가 알지 못하는 부작용으로 인해 해당 정보가 모바일 디바이스의 안전하지 않은 위치에 배치되어 디바이스의 다른 앱이 공개적으로 액세스할 수 있게 된다. 일반적으로 이러한 부작용은 기본 모바일 디바이스의 운영 체제(OS)에서 발생하며 공격자는 간단한 ... Read More
-
iOS DVIA-v2 | Side Channel Data Leakage (Pasteboard)
취약점 개요 부채널 데이터 유출은 사용되는 어플리케이션의 주 기능이 아닌 타 기능을 통해 데이터가 유출되는 취약점을 말한다. 의도하지 않은 데이터 유출은 개발자가 실수로 모바일 디바이스의 다른 앱이 쉽게 액세스할 수 있는 위치에 민감한 정보나 데이터를 저장할 때 발생한다. 개발자의 코드가 사용자 또는 백엔드에서 제공한 민감한 정보를 처리할 때 이 과정에서 개발자가 알지 못하는 부작용으로 인해 해당 정보가 모바일 디바이스의 안전하지 않은 위치에 배치되어 디바이스의 다른 앱이 공개적으로 액세스할 수 있게 된다. 일반적으로 이러한 부작용은 기본 모바일 디바이스의 운영 체제(OS)에서 발생하며 공격자는 간단한 ... Read More
-
iOS DVIA-v2 | Side Channel Data Leakage (Device Logs)
취약점 개요 부채널 데이터 유출은 사용되는 어플리케이션의 주 기능이 아닌 타 기능을 통해 데이터가 유출되는 취약점을 말한다. 의도하지 않은 데이터 유출은 개발자가 실수로 모바일 디바이스의 다른 앱이 쉽게 액세스할 수 있는 위치에 민감한 정보나 데이터를 저장할 때 발생한다. 개발자의 코드가 사용자 또는 백엔드에서 제공한 민감한 정보를 처리할 때 이 과정에서 개발자가 알지 못하는 부작용으로 인해 해당 정보가 모바일 디바이스의 안전하지 않은 위치에 배치되어 디바이스의 다른 앱이 공개적으로 액세스할 수 있게 된다. 일반적으로 이러한 부작용은 기본 모바일 디바이스의 운영 체제(OS)에서 발생하며 공격자는 간단한 ... Read More
-
iOS DVIA-v2 | Side Channel Data Leakage (Keystroke Logging)
취약점 개요 부채널 데이터 유출은 사용되는 어플리케이션의 주 기능이 아닌 타 기능을 통해 데이터가 유출되는 취약점을 말한다. 의도하지 않은 데이터 유출은 개발자가 실수로 모바일 디바이스의 다른 앱이 쉽게 액세스할 수 있는 위치에 민감한 정보나 데이터를 저장할 때 발생한다. 개발자의 코드가 사용자 또는 백엔드에서 제공한 민감한 정보를 처리할 때 이 과정에서 개발자가 알지 못하는 부작용으로 인해 해당 정보가 모바일 디바이스의 안전하지 않은 위치에 배치되어 디바이스의 다른 앱이 공개적으로 액세스할 수 있게 된다. 일반적으로 이러한 부작용은 기본 모바일 디바이스의 운영 체제(OS)에서 발생하며 공격자는 간단한 ... Read More
-
iOS DVIA-v2 | Side Channel Data Leakage (Cookies)
취약점 개요 부채널 데이터 유출은 사용되는 어플리케이션의 주 기능이 아닌 타 기능을 통해 데이터가 유출되는 취약점을 말한다. 의도하지 않은 데이터 유출은 개발자가 실수로 모바일 디바이스의 다른 앱이 쉽게 액세스할 수 있는 위치에 민감한 정보나 데이터를 저장할 때 발생한다. 개발자의 코드가 사용자 또는 백엔드에서 제공한 민감한 정보를 처리할 때 이 과정에서 개발자가 알지 못하는 부작용으로 인해 해당 정보가 모바일 디바이스의 안전하지 않은 위치에 배치되어 디바이스의 다른 앱이 공개적으로 액세스할 수 있게 된다. 일반적으로 이러한 부작용은 기본 모바일 디바이스의 운영 체제(OS)에서 발생하며 공격자는 간단한 ... Read More
-
iOS DVIA-v2 | Anti Debugging
취약점 개요 앱 안티 디버깅은 특정 모바일 앱의 디버깅을 감지하고 방지하기 위한 기술 및 메커니즘의 사용을 의미합니다. 앱을 디버깅하면 실행 중 동작을 분석하고 이해할 수 있으므로 문제 해결, 테스트 및 리버스 엔지니어링 목적에 도움이 될 수 있습니다. 그러나 공격자가 앱의 코드와 동작을 분석하여 취약성을 발견하거나 중요한 데이터를 훔치거나 익스플로잇을 개발하는 데 사용할 수도 있습니다. 앱 디버깅을 방지하기 위해 앱 개발자는 코드 난독화, 함수 포인터 조작, 중단점 감지 및 제어 흐름 난독화와 같은 다양한 디버깅 방지 기술을 구현할 수 있습니다. 이러한 기술은 공격자가 앱의 코드와 동작을 이해하기 어렵... Read More
-
iOS DVIA-v2 | Runtime Manipulation - 3
취약점 개요 런타임 조작 취약점이란 어플리케이션이 실행될 때 모든 실행 로직 및 정보는 메모리에 올라가있다. 이 때 메모리의 값을 조작하여 함수의 흐름을 조작하거나 정보 유출이 가능하게 되는 취약점이다. 이를 통해 인스턴스 변수 수정, 로컬 로그인 검사 우회, 강제 핀 코드 사용이 가능하며 데이터를 조작함으로써 비즈니스 프로세스, 조직의 이해 및 의사 결정에 영향을 미치려고 시도할 수 있다. 취약점 실습 실습 환경 : iOS 14.6, iPhone 8 좌측 상단 메뉴 > Runtime Manipulation Enter correct 5 digit numberic ... Read More
-
iOS DVIA-v2 | Runtime Manipulation - 2
취약점 개요 런타임 조작 취약점이란 어플리케이션이 실행될 때 모든 실행 로직 및 정보는 메모리에 올라가있다. 이 때 메모리의 값을 조작하여 함수의 흐름을 조작하거나 정보 유출이 가능하게 되는 취약점이다. 이를 통해 인스턴스 변수 수정, 로컬 로그인 검사 우회, 강제 핀 코드 사용이 가능하며 데이터를 조작함으로써 비즈니스 프로세스, 조직의 이해 및 의사 결정에 영향을 미치려고 시도할 수 있다. 취약점 실습 실습 환경 : iOS 14.6, iPhone 8 좌측 상단 메뉴 > Runtime Manipulation 아이디와 패스워드를 입력하고 Login Method 2을... Read More
-
iOS DVIA-v2 | Runtime Manipulation - 1
취약점 개요 런타임 조작 취약점이란 어플리케이션이 실행될 때 모든 실행 로직 및 정보는 메모리에 올라가있다. 이 때 메모리의 값을 조작하여 함수의 흐름을 조작하거나 정보 유출이 가능하게 되는 취약점이다. 이를 통해 인스턴스 변수 수정, 로컬 로그인 검사 우회, 강제 핀 코드 사용이 가능하며 데이터를 조작함으로써 비즈니스 프로세스, 조직의 이해 및 의사 결정에 영향을 미치려고 시도할 수 있다. 취약점 실습 실습 환경 : iOS 14.6, iPhone 8 좌측 상단 메뉴 > Runtime Manipulation 아이디와 패스워드를 입력하고 Login Method 1을... Read More
-
iOS DVIA-v2 | Excessive Permissions
취약점 개요 불필요한 권한 취약점이란 앱에서 사용하지도 않는 불필요한 권한 사용 시 이를 통한 피해 사례가 발생할 수 있기에 과도한 권한 사용을 지양하는 것이다. 정상적인 앱뿐만 아니라 악성 앱도 이러한 스마트폰 기능에 접근할 수 있기 때문이다. 가령 악성 앱에 카메라 기능을 허용한다면 사용자의 사생활을 감시하는 용도로 쓰일 수 있고, 주소록 접근 권한을 허용한다면 이를 탈취해 지인을 가장한 보이스피싱이나 스미싱에 악용될 수도 있다. 이 때문에 사용자는 앱 설치 시 각 앱이 적절한 권한을 요구하는지 확인하고, 지나치게 많은 권한을 요구한다면 해당 앱을 사용하지 않는 것이 좋다. 간단한 예를 들면 웹툰 ... Read More
-
iOS DVIA-v2 | JailBreak Detection - 5
취약점 개요 iOS 운영체제 탈옥이란, 유닉스(Unix)로 만들어진 iOS의 샌드박스 제한을 풀어서, 임의로 시스템 상의 코드를 수정하거나 번경하는 행위를 말합니다. 즉 iOS 운영체제의 제한을 풀어서 사용자가 기능을 추가하거나, 숨겨진 기능을 불러온다는 것입니다. 탈옥은 일반적으로 iOS 운영 체제의 보안 취약점을 악용하여 보안 조치를 우회하여 사용자가 일반적으로 제한되는 시스템 파일 및 설정에 액세스할 수 있도록 합니다. 장치가 탈옥되면 사용자는 타사 소스에서 앱을 설치하고, 장치의 모양과 기능을 사용자 지정하고, 사전 설치된 앱 및 Apple에서 부과한 기타 제한 사항을 제거할 수 있습니다. 탈옥... Read More
-
iOS DVIA-v2 | JailBreak Detection - 4
취약점 개요 iOS 운영체제 탈옥이란, 유닉스(Unix)로 만들어진 iOS의 샌드박스 제한을 풀어서, 임의로 시스템 상의 코드를 수정하거나 번경하는 행위를 말합니다. 즉 iOS 운영체제의 제한을 풀어서 사용자가 기능을 추가하거나, 숨겨진 기능을 불러온다는 것입니다. 탈옥은 일반적으로 iOS 운영 체제의 보안 취약점을 악용하여 보안 조치를 우회하여 사용자가 일반적으로 제한되는 시스템 파일 및 설정에 액세스할 수 있도록 합니다. 장치가 탈옥되면 사용자는 타사 소스에서 앱을 설치하고, 장치의 모양과 기능을 사용자 지정하고, 사전 설치된 앱 및 Apple에서 부과한 기타 제한 사항을 제거할 수 있습니다. 탈옥... Read More
-
iOS DVIA-v2 | JailBreak Detection - 3
취약점 개요 iOS 운영체제 탈옥이란, 유닉스(Unix)로 만들어진 iOS의 샌드박스 제한을 풀어서, 임의로 시스템 상의 코드를 수정하거나 번경하는 행위를 말합니다. 즉 iOS 운영체제의 제한을 풀어서 사용자가 기능을 추가하거나, 숨겨진 기능을 불러온다는 것입니다. 탈옥은 일반적으로 iOS 운영 체제의 보안 취약점을 악용하여 보안 조치를 우회하여 사용자가 일반적으로 제한되는 시스템 파일 및 설정에 액세스할 수 있도록 합니다. 장치가 탈옥되면 사용자는 타사 소스에서 앱을 설치하고, 장치의 모양과 기능을 사용자 지정하고, 사전 설치된 앱 및 Apple에서 부과한 기타 제한 사항을 제거할 수 있습니다. 탈옥... Read More
-
iOS DVIA-v2 | JailBreak Detection - 2
취약점 개요 iOS 운영체제 탈옥이란, 유닉스(Unix)로 만들어진 iOS의 샌드박스 제한을 풀어서, 임의로 시스템 상의 코드를 수정하거나 번경하는 행위를 말합니다. 즉 iOS 운영체제의 제한을 풀어서 사용자가 기능을 추가하거나, 숨겨진 기능을 불러온다는 것입니다. 탈옥은 일반적으로 iOS 운영 체제의 보안 취약점을 악용하여 보안 조치를 우회하여 사용자가 일반적으로 제한되는 시스템 파일 및 설정에 액세스할 수 있도록 합니다. 장치가 탈옥되면 사용자는 타사 소스에서 앱을 설치하고, 장치의 모양과 기능을 사용자 지정하고, 사전 설치된 앱 및 Apple에서 부과한 기타 제한 사항을 제거할 수 있습니다. 탈옥... Read More
-
iOS DVIA-v2 | JailBreak Detection - 1
취약점 개요 iOS 운영체제 탈옥이란, 유닉스(Unix)로 만들어진 iOS의 샌드박스 제한을 풀어서, 임의로 시스템 상의 코드를 수정하거나 번경하는 행위를 말합니다. 즉 iOS 운영체제의 제한을 풀어서 사용자가 기능을 추가하거나, 숨겨진 기능을 불러온다는 것입니다. 탈옥은 일반적으로 iOS 운영 체제의 보안 취약점을 악용하여 보안 조치를 우회하여 사용자가 일반적으로 제한되는 시스템 파일 및 설정에 액세스할 수 있도록 합니다. 장치가 탈옥되면 사용자는 타사 소스에서 앱을 설치하고, 장치의 모양과 기능을 사용자 지정하고, 사전 설치된 앱 및 Apple에서 부과한 기타 제한 사항을 제거할 수 있습니다. 탈옥... Read More
-
iOS DVIA-v2 | 단말기 내 중요 정보 저장 (Yap Database)
취약점 개요 모바일 진단 항목 중 하나인 단말기 내 중요정보 저장이다. 안드로이드를 비롯하여 iOS에 설치된 스마트폰이나 태블릿과 같은 기기에서 사용자의 중요한 정보가 저장되는 방식과 관련된 보안 취약점을 진단한다. 개발자들은 단말기에 저장될 데이터의 크기, 중요도, 기간 등을 고려해서 운영체제가 제공하고 있는 다양한 저장소에 데이터를 보관한다. iOS 기기에는 다양한 유형의 중요한 정보가 저장될 수 있다. 이 정보에는 사용자의 개인 식별 정보, 금융 정보, 의료 정보, 회사 비즈니스 정보 등이 포함될 수 있다. 따라서 이러한 정보가 노출되거나 악용될 경우 사용자의 프라이버시나 안전이 위협 받을 수 있다. ... Read More
-
iOS DVIA-v2 | 단말기 내 중요 정보 저장 (Realm)
취약점 개요 모바일 진단 항목 중 하나인 단말기 내 중요정보 저장이다. 안드로이드를 비롯하여 iOS에 설치된 스마트폰이나 태블릿과 같은 기기에서 사용자의 중요한 정보가 저장되는 방식과 관련된 보안 취약점을 진단한다. 개발자들은 단말기에 저장될 데이터의 크기, 중요도, 기간 등을 고려해서 운영체제가 제공하고 있는 다양한 저장소에 데이터를 보관한다. iOS 기기에는 다양한 유형의 중요한 정보가 저장될 수 있다. 이 정보에는 사용자의 개인 식별 정보, 금융 정보, 의료 정보, 회사 비즈니스 정보 등이 포함될 수 있다. 따라서 이러한 정보가 노출되거나 악용될 경우 사용자의 프라이버시나 안전이 위협 받을 수 있다. ... Read More
-
iOS DVIA-v2 | 단말기 내 중요 정보 저장 (Plist)
취약점 개요 모바일 진단 항목 중 하나인 단말기 내 중요정보 저장이다. 안드로이드를 비롯하여 iOS에 설치된 스마트폰이나 태블릿과 같은 기기에서 사용자의 중요한 정보가 저장되는 방식과 관련된 보안 취약점을 진단한다. 개발자들은 단말기에 저장될 데이터의 크기, 중요도, 기간 등을 고려해서 운영체제가 제공하고 있는 다양한 저장소에 데이터를 보관한다. iOS 기기에는 다양한 유형의 중요한 정보가 저장될 수 있다. 이 정보에는 사용자의 개인 식별 정보, 금융 정보, 의료 정보, 회사 비즈니스 정보 등이 포함될 수 있다. 따라서 이러한 정보가 노출되거나 악용될 경우 사용자의 프라이버시나 안전이 위협 받을 수 있다. ... Read More
-
iOS DVIA-v2 | 단말기 내 중요 정보 저장 (KeyChain)
취약점 개요 모바일 진단 항목 중 하나인 단말기 내 중요정보 저장이다. 안드로이드를 비롯하여 iOS에 설치된 스마트폰이나 태블릿과 같은 기기에서 사용자의 중요한 정보가 저장되는 방식과 관련된 보안 취약점을 진단한다. 개발자들은 단말기에 저장될 데이터의 크기, 중요도, 기간 등을 고려해서 운영체제가 제공하고 있는 다양한 저장소에 데이터를 보관한다. iOS 기기에는 다양한 유형의 중요한 정보가 저장될 수 있다. 이 정보에는 사용자의 개인 식별 정보, 금융 정보, 의료 정보, 회사 비즈니스 정보 등이 포함될 수 있다. 따라서 이러한 정보가 노출되거나 악용될 경우 사용자의 프라이버시나 안전이 위협 받을 수 있다. ... Read More
-
iOS DVIA-v2 | 단말기 내 중요 정보 저장 (NSUserDefaults)
취약점 개요 모바일 진단 항목 중 하나인 단말기 내 중요정보 저장이다. 안드로이드를 비롯하여 iOS에 설치된 스마트폰이나 태블릿과 같은 기기에서 사용자의 중요한 정보가 저장되는 방식과 관련된 보안 취약점을 진단한다. 개발자들은 단말기에 저장될 데이터의 크기, 중요도, 기간 등을 고려해서 운영체제가 제공하고 있는 다양한 저장소에 데이터를 보관한다. iOS 기기에는 다양한 유형의 중요한 정보가 저장될 수 있다. 이 정보에는 사용자의 개인 식별 정보, 금융 정보, 의료 정보, 회사 비즈니스 정보 등이 포함될 수 있다. 따라서 이러한 정보가 노출되거나 악용될 경우 사용자의 프라이버시나 안전이 위협 받을 수 있다. ... Read More
-
iOS DVIA-v2 | 단말기 내 중요 정보 저장 (CouchBase)
취약점 개요 모바일 진단 항목 중 하나인 단말기 내 중요정보 저장이다. 안드로이드를 비롯하여 iOS에 설치된 스마트폰이나 태블릿과 같은 기기에서 사용자의 중요한 정보가 저장되는 방식과 관련된 보안 취약점을 진단한다. 개발자들은 단말기에 저장될 데이터의 크기, 중요도, 기간 등을 고려해서 운영체제가 제공하고 있는 다양한 저장소에 데이터를 보관한다. iOS 기기에는 다양한 유형의 중요한 정보가 저장될 수 있다. 이 정보에는 사용자의 개인 식별 정보, 금융 정보, 의료 정보, 회사 비즈니스 정보 등이 포함될 수 있다. 따라서 이러한 정보가 노출되거나 악용될 경우 사용자의 프라이버시나 안전이 위협 받을 수 있다. ... Read More
-
iOS DVIA-v2 | 단말기 내 중요 정보 저장 (CoreData)
취약점 개요 모바일 진단 항목 중 하나인 단말기 내 중요정보 저장이다. 안드로이드를 비롯하여 iOS에 설치된 스마트폰이나 태블릿과 같은 기기에서 사용자의 중요한 정보가 저장되는 방식과 관련된 보안 취약점을 진단한다. 개발자들은 단말기에 저장될 데이터의 크기, 중요도, 기간 등을 고려해서 운영체제가 제공하고 있는 다양한 저장소에 데이터를 보관한다. iOS 기기에는 다양한 유형의 중요한 정보가 저장될 수 있다. 이 정보에는 사용자의 개인 식별 정보, 금융 정보, 의료 정보, 회사 비즈니스 정보 등이 포함될 수 있다. 따라서 이러한 정보가 노출되거나 악용될 경우 사용자의 프라이버시나 안전이 위협 받을 수 있다. ... Read More
-
CVE-2022-30190 | Follina
취약점 개요 해당 취약점은 MS-MSDT URL 프로토콜을 사용할 때 msdt.exe를 통해 원격 코드 실행이 가능하다. 윈도우에서 응용 프로그램 및 HTML 링크가 사용자 지정 검색 기능인 search-ms라는 URI 프로토콜 핸들러를 지원하기 때문에 발생할 수 있다. Microsoft 측에서는 현재 KB5014699 패치로 문제를 수정하였다고 하지만 취약점을 이용한 공격은 지속적으로 이루어지고 있다. 악성 샘플은 주로 MS Office 문서 파일을 통해 공격을 시작하게 되는데 악성 docx 파일에는 또 다른 악성 html 파일을 다운로드 하는 URL이 삽입되어있다. 해당 html 파일 내에는 ... Read More
-
CVE-2020-0796 | SMBGhost
취약점 개요 지난 Wannacry 랜셈웨어 사태 시 수많은 피해를 발생시킨 SMB 프로토콜에서 재등장한 취약점이다. 기존 취약점은 SMBv1, SMBv2의 취약점이었지만 이번 SMBGhost는 SMBv3에서 발생한 취약점으로 원격 코드 실행이 가능한 취약점으로 알려졌다. SMBGhost로 인한 블루스크린 현상이나 권한 상승, RCE은 COMPRESSION_TRANSFORM_HEADER의 OriginalCompressedSegmentSize 값을 조작해서 발생하는 Interger Overflow 때문이다. OriginalCompressedSegmentSize에 저장 가능한 값보다 큰 값을 넣는다. 그러면... Read More
-
Dreamhack | I can Read!
본 문제는 dreamhack.io를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 문제 분석 main SSTI 제공되는 문제 링크를 접속하면 HELLO만 출력된다. 제공 받은 파일을 통해 분석을 진행하도록 합니다. # main.py from flask import Flask,render_template, render_template_string app = Flask(__name__) blacklist =[] @app.route('/') def index(): return render_template('index.html') @ap... Read More
-
MCH2022CTF | MySimpleLogin
해당 CTF는 직접 참여한 것이 아닌 Writeup이 제공 되어 이후에도 문제를 풀이할 수 있게 되었습니다. 공식 링크는 아래에 첨부되어있고, 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 분석 안전한 안드로이드 어플리케이션을 제작하였는데 플래그를 찾을 수 있겠냐? 실행시 패스워드 입력할 수 있는 EditText가 존재한다. public class MainActivity extends ActionBarActivity { private Button btnOK; private EditText edtPassword; private TextView lblPass... Read More
-
Dreamhack | ejs@3.1.8
본 문제는 dreamhack.io를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 문제 풀이 Welcome ! <%= locals?.name %> index.ejs : name 파라미터를 이용한 Templete Page const express = require('express'); var path = require('path'); const app = express(); const port = 3000; app.set('views', path.join(__dirname, '/templates')); app.set... Read More
-
Dreamhack | web-HTTP-CLI
본 문제는 dreamhack.io를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 문제 풀이 def get_host_port(url): return url.split('://')[1].split('/')[0].lower().split(':') with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.bind(('', 8000)) s.listen() while True: try: cs, ca = s.accept() ... Read More
-
Dreamhack | weblog-1
본 문제는 dreamhack.io를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 문제에서 제공하는 소스 코드와 로그 파일을 분석하여 FLAG를 찾는 것으로 되어 있다. 페이지를 들어가면 퀴즈가 나오며 공격자가 탈취한 admin의 pw를 입력하는 것이다. 즉 로그에는 공격자가 admin의 pw를 탈취한 흔적을 찾아 내는 것임을 알 수 있다. 총 5개의 문제가 존재하는 것으로 보인다. 문제 풀이 Level 0 172.17.0.1 - - [02/Jun/2020:09:08:28 +0000] "POST /login.php HTTP/1.1"... Read More
-
Dreamhack | Flask-Dev
본 문제는 dreamhack.io를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 문제에서 제공하는 소스 코드와 로그 파일을 분석하여 FLAG를 찾는 것으로 되어 있다. 처음으로 Level 4에 도전하는 거라 참고의 참고를 거쳐서 겨우 풀게 되었다. 접속하면 Hello !를 제외한 아무것도 없고 이젠 제공해준 app.py를 확인해야 할 것으로 보인다. 문제 풀이 #!/usr/bin/python3 from flask import Flask import os app = Flask(__name__) app.secret_key = os.ur... Read More
-
Dreamhack | sql injection bypass WAF Advanced
본 문제는 dreamhack.io를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 Web Application Firewall을 우회하여 SQL Injection을 시도해야하는 문제라 설명이 있다. 문제 풀이 접속하면 기본 SQL 문법이 나오며 uid에 대한 입력이 가능하다. USE `users`; CREATE TABLE user( idx int auto_increment primary key, uid varchar(128) not null, upw varchar(128) not null ); INSERT INTO user(... Read More
-
Dreamhack | simple_sqli_chatgpt
본 문제는 dreamhack.io를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 로그인 서비스를 진행하는 페이지로 SQL Injection 공격을 이용하는 문제이다. 해당 문제를 서비스가 어떻게 이루어지는지에 대한 app.py 파일을 제공하고 있다. 문제 풀이 서비스 접속 시 userlevel을 제외한 어떠한 입력 포인트도 존재하지 않다. 그렇다면 이 포인트를 이용한 SQLi를 진행하게 될 것으로 보이는데 제공해주는 app.py 파일을 확인해보도록 한다. app.py DATABASE = "database.db" if os.path... Read More
-
Reversing | Dreamhack Inject ME!!!
본 문제는 dreamhack.io를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 해당 문제에 대한 파일은 DLL 파일 하나이며 해당 DLL파일을 조건에 맞춰 로드시키라고 되어 있는 문제입니다. 주어진 DLL 파일을 임의의 파일을 통해 로드시키면 될 것으로 보입니다. prob_rev.dll BOOL __stdcall DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { if ( fdwReason == 1 ) sub_1800011A0(hinstDLL); return ... Read More
-
Reversing | Dreamhack rev-basic-9
본 문제는 dreamhack.io를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 해당 프로그램을 통해 문자열 입력을 받아 옳은 입력 값임을 증명해야한다. 바이너리 분석을 위해 IDA를 사용하겠습니다. 분석 int __cdecl main(int argc, const char **argv, const char **envp) { char v4[256]; // [rsp+20h] [rbp-118h] BYREF memset(v4, 0, sizeof(v4)); sub_1400012E0("Input : ", argv, envp); sub_14... Read More
-
Reversing | Dreamhack rev-basic-8
본 문제는 dreamhack.io를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 해당 프로그램을 통해 문자열 입력을 받아 옳은 입력 값임을 증명해야한다. 바이너리 분석을 위해 IDA를 사용하겠습니다. 분석 int __cdecl main(int argc, const char **argv, const char **envp) { char v4[256]; // [rsp+20h] [rbp-118h] BYREF memset(v4, 0, sizeof(v4)); sub_1400011B0("Input : ", argv, envp); sub_14... Read More
-
Reversing | Dreamhack rev-basic-7
본 문제는 dreamhack.io를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 해당 프로그램을 통해 문자열 입력을 받아 옳은 입력 값임을 증명해야한다. 바이너리 분석을 위해 IDA를 사용하겠습니다. 분석 int __cdecl main(int argc, const char **argv, const char **envp) { char v4[256]; // [rsp+20h] [rbp-118h] BYREF memset(v4, 0, sizeof(v4)); sub_140001120("Input : ", argv, envp); sub_14... Read More
-
Reversing | Dreamhack rev-basic-6
본 문제는 dreamhack.io를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 해당 프로그램을 통해 문자열 입력을 받아 옳은 입력 값임을 증명해야한다. 바이너리 분석을 위해 IDA를 사용하겠습니다. 분석 int __cdecl main(int argc, const char **argv, const char **envp) { char v4[256]; // [rsp+20h] [rbp-118h] BYREF memset(v4, 0, sizeof(v4)); sub_1400011B0("Input : ", argv, envp); sub_14... Read More
-
Reversing | Dreamhack rev-basic-5
본 문제는 dreamhack.io를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 해당 프로그램을 통해 문자열 입력을 받아 옳은 입력 값임을 증명해야한다. 바이너리 분석을 위해 IDA를 사용하겠습니다. 분석 int __cdecl main(int argc, const char **argv, const char **envp) { char v4[256]; // [rsp+20h] [rbp-118h] BYREF memset(v4, 0, sizeof(v4)); sub_1400011C0("Input : ", argv, envp); sub_14... Read More
-
Dreamhack | login-1
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 이번엔 로그인 서비스에 대해서 admin 권한의 계정으로 로그인하라는 것으로 어떠한 취약점을 기반으로 할 지에 대해서는 무지한 상태입니다. 문제 풀이 로그인 Form과 등록, 비밀번호 찾기가 가능한 서비스로 되어 있다. 보자마자 exploit할 방법을 생각해보니 Brute Force SQL injection 비밀번호 찾기 우회 중복 계정 등록 이 네 가지 방법이 떠올랐지만 Brute... Read More
-
Dreamhack | session
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 쿠키와 세션을 통해서 admin 계정으로 로그인에 성공하면 플래그를 획득한다는 것으로 보았을 때 세션쿠키값을 변조하여 admin으로 로그인하면 될 것으로 예상한다. 문제 풀이 로그인할 수 있는 화면이 Form이 존재하며 해당 계정은 아래처럼 두 개가 존재합니다. users = { 'guest': 'guest', 'user': 'user1234', 'admin': FLAG } guest 계정으로 로그인하게 되면 Hello guest, ... Read More
-
Dreamhack | proxy-1
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 해당 문제에서는 어떠한 취약점을 이용해서 문제 풀이하는지 서술되어 있지 않다. 하지만 Raw Socket Sender 서비스를 보았을 때 소켓 통신을 이용한 문제인 것을 짐작할 수 있다. app.py #!/usr/bin/python3 from flask import Flask, request, render_template, make_response, redirect, url_for import socket app = Flask(__name__) try: F... Read More
-
Dreamhack | php-1
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 이번 문제는 LFI 취약점을 이용하여 플래그를 획득하는 문제이다. LFI 취약점은 Local File Inclusion으로 공격 대상이 되는 서버에 존재하고 있는 파일을 가져와 정보 유출이 가능한 공격이다. 서버에서 include() 사용 시 유저 입력에 대해 적절한 필터링이 이루어지지 않을 때 로컬 파일을 사용할 수 있게 된다. 문제 풀이 <img src ="https://user-images.githubusercontent.com/78135526/2361... Read More
-
Dreamhack | pathtraversal
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 해당 문제는 Path Traversal 취약점을 이용해서 플래그를 획득하는 문제입니다. 접속하기에 앞서 해당 취약점이 무엇인지 알고 들어가겠습니다. Path Traversal Path traversal(Directory traversal)은 서비스에서 사용자로부터 받은 입력이 path 형태의 백엔드에서 처리 로직을 가지는 경우, 이를 조작하여 공격자가 원하는 경로로 접근하여 동작을 수행하는 공격기법을 의미합니다. 보통 File을 처리하는 과정에서 가장 많이 발생하며... Read More
-
API Hooking
API ? API란 Application Programming Interface로 운영체제가 응용 프로그램을 위해 제공하는 함수의 집합으로 응용 프로그램과 디바이스를 연결해주는 역할이다. 일반 응용 프로그램은 메모리, 파일, 네트워크 등 시스템 자원을 사용하고 싶어도 직접 접근할 수 없다. 이러한 자원은 운영체제가 보안이나 효율 등 면에서 응용 프로그램이 접근할 수 없도록 차단하기 위해 직접 관리한다. 해당 자원을 사용하기 위해 Win32 API를 이용하게 되며 이러한 API 함수가 없으면 시스템 자원에 접근 할 수 있는 프로그램을 만들 수 없게 된다. 윈도우 응용 프로그램은 상당히 많은 DLL을 로딩하게 ... Read More
-
DLL Hijacking
DLL Hijacking 정의 Harness를 이용한 WinAFL에서 DLL을 제작하면서 DLL이 무엇인지를 설명했습니다. DLL은 Dynamic Link Library로 여러 프로그램에서 동시에 사용할 수 있는 코드와 데이터를 포함한 라이브러리로, 어떤 프로그램을 실행할 때 거의 필수적으로 참조하는 것이 동적 라이브러리 파일인 DLL이다. 이 DLL 파일을 공격자가 악의적인 코드로 제작하여 프로그램이 실행될 때 참조하게 만듬으로써 공격자가 원하는 기능이 수행되게 되는 것을 DLL 하이재킹(DLL Hijacking)이라고 한다. 어느 한 프로그램이 DLL을 참조하기 위해서 디렉토리를 탐색하며 파일을 찾게 되... Read More
-
Harness를 이용한 WinAFL
저번 내용에서는 단순히 함수의 offset을 가지고 Fuzzing을 시도해봤습니다. 많은 프로그램들이 Windows 대상이다 보니 WinAFL을 사용했는데 이전처럼 단순히 함수의 offset을 가지고 퍼징하기에는 어려움이 있습니다. 왜냐? 한번쯤은 보셨을 법한 DLL이라는 내용이 있기 때문입니다. DLL이 무엇인지 간단히 집고 넣어 가겠습니다. DLL Dynamic Link Library로 여러 프로그램에서 동시에 사용할 수 있는 코드와 데이터를 포함한 라이브러리입니다. 메모장, 그림판, 한글 워드와 같이 다양한 윈도우용 프로그램을 보면 파일 열기와 같은 기능이 있는데 이를 누를 시 어떤 파일을 ... Read More
-
WinDbg 디버깅
What is WinDbg ? 마이크로소프트에서 만든 윈도우 디버깅 프로그램으로 Windows DDK(드라이버 개발 SDK) 설치 시 기본적으로 제공된다. 이 프로그램은 윈도우 커널을 디버깅하여 버그를 찾는데 사용하는데, 기존 CTF pwnable 문제 풀이할 때에는 Linux 환경의 ELF 파일을 많이 사용했다. 윈도우 관련 프로그램 리버싱을 준비하면서 윈도우 환경에 맞는 디버거를 사용하기에는 이를 사용한다. 2017년에 UI가 전체적으로 바뀌며 Windows DDK 별도 설치 없이 Micro Store에서 쉽게 설치가 가능하다. Install 앞서 말씀드린 바와 같이 Microsoft Stor... Read More
-
WinAFL 설치 및 사용
WinAFL ? WinAFL을 설명하기 앞서 AFL이 무엇인지 말씀드리겠습니다. AFL(American Fuzzy Lob)은 Coverage-Guided 퍼징 툴입니다. 기존 AFL은 리눅스 환경만을 위해 만들어졌기에 Windows 환경에서는 구조상 차이로 인해 이용하지 못했다. 이후 Windows에서 AFL을 동작할 수 있게 만든 것이 WinAFL입니다. 이전에 설명드린 것과 마찬가지로 총 5가지의 방식으로 루틴을 진행하기에 빠른 퍼징 속도를 자랑합니다. 이처럼 가장 많이 사용되고 있는 운영체제는 Windows로 많은 이용자가 Windows를 사용하여 이에 대한 프로그램을 사용하고 있습니다.... Read More
-
What is Fuzzing?
Fuzzing ? Fuzzing은 불리는 자동화된 소프트웨어 테스트의 기술에 일종으로, 퍼징 대상의 프로그램에 Untrust Input에 무작위 데이터를 대입하여 예기치 못한 반응, 즉 Crash, 메모리 누수등 취약점을 발생시키는 테스트 기법입니다. Untrusted Input에 모든 테스트 내용을 사람이 직접 입력하기에는 너무나도 많은 시간이 낭비되므로 자동화시켜서 테스트할 수 있는 AFL과 libFuzzer와 같이 쉬운 퍼징 프레임워크을 이용하여 Fuzzing을 진행해 효율적이며 빠르게 취약점을 찾을 수 있습니다. Fuzzing 테스트 이후 검출된 Crash, 메모리 누수등에 대한 결과 값, 파일... Read More
-
Reversing | Dreamhack rev-basic-4
본 문제는 dreamhack.io를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 해당 프로그램을 통해 문자열 입력을 받아 옳은 입력 값임을 증명해야한다. 바이너리 분석을 위해 IDA를 사용하겠습니다. 분석 int __cdecl main(int argc, const char **argv, const char **envp) { char v4[256]; // [rsp+20h] [rbp-118h] BYREF memset(v4, 0, sizeof(v4)); sub_1400011B0("Input : ", argv, envp); sub_14... Read More
-
Reversing | Dreamhack rev-basic-3
본 문제는 dreamhack.io를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 해당 프로그램을 통해 문자열 입력을 받아 옳은 입력 값임을 증명해야한다. 바이너리 분석을 위해 IDA를 사용하겠습니다. 분석 int __cdecl main(int argc, const char **argv, const char **envp) { char v4[256]; // [rsp+20h] [rbp-118h] BYREF memset(v4, 0, sizeof(v4)); sub_1400011B0("Input : ", argv, envp); sub_14... Read More
-
Reversing | Dreamhack rev-basic-2
본 문제는 dreamhack.io를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 해당 프로그램을 통해 문자열 입력을 받아 옳은 입력 값임을 증명해야한다. 바이너리 분석을 위해 IDA를 사용하겠습니다. 분석 int __cdecl main(int argc, const char **argv, const char **envp) { char v4[256]; // [rsp+20h] [rbp-118h] BYREF memset(v4, 0, sizeof(v4)); sub_1400011B0("Input : ", argv, envp); sub_14... Read More
-
Reversing | Dreamhack rev-basic-1
본 문제는 dreamhack.io를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 해당 프로그램을 통해 문자열 입력을 받아 옳은 입력 값임을 증명해야한다. 바이너리 분석을 위해 IDA를 사용하겠습니다. 분석 int __cdecl main(int argc, const char **argv, const char **envp) { char v4[256]; // [rsp+20h] [rbp-118h] BYREF memset(v4, 0, sizeof(v4)); sub_140001190("Input : ", argv, envp); sub_14... Read More
-
Reversing | Dreamhack rev-basic-0
본 문제는 dreamhack.io를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 해당 프로그램을 통해 문자열 입력을 받아 옳은 입력 값임을 증명해야한다. 바이너리 분석을 위해 IDA를 사용하겠습니다. 분석 int __cdecl main(int argc, const char **argv, const char **envp) { char v4[256]; // [rsp+20h] [rbp-118h] BYREF memset(v4, 0, sizeof(v4)); sub_140001190("Input : ", argv, envp); sub_14... Read More
-
SQL 정보 수집
본 내용은 Dreamhack [WHA] ExploitTech: System Table Fingerprinting을 통해서 학습할 수 있습니다. Oracle, MySQL, MSSQL등 테스트용 사이트를 해당 링크를 클릭하시면 해볼 수 있습니다. 들어가기 앞서 모의해킹을 진행하면서 SQLi에 대한 시나리오를 진행하게 된다면 해당 시스템에서 어떠한 종류의 DB를 사용하고 있는지, 어떠한 테이블과 칼럼이 존재하는지 정보 수집이 필요하다. 데이터베이스의 종류는 대표적으로 MySQL, MSSQL, Oracle, PostgreSQL, SQLite가 있다. (NoSQL도 있지만 추후에 다루겠습니다.) 데이터베이... Read More
-
Dreamhack | blind sql injection advanced
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 해당 문제는 SQL 심화 과정에 대한 문제입니다. Blind SQLi문제로 심화된 과정입니다. 관리자의 비밀번호는 아스키코드, 한글로 이루어져 있다보니 인코딩에 유의해서 해결해야합니다. EditText를 통해서 입력되는 값이 아래의 쿼리로 진행되는 것을 문제에서 알려줍니다. SELECT * FROM user WHERE uid='{uid}'; 입력했던 값이 GET 메소드를 이용해 uid 변수에 들어가고 입력 값에 따라 쿼리도 변하는 것을 알 수 있습... Read More
-
Dreamhack | error based sql injection
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 해당 문제는 SQL 심화 과정에 대한 문제입니다. 간단한 Error Base SQLi 문제라 합니다. EditText를 통해서 입력되는 값이 아래의 쿼리로 진행되는 것을 문제에서 알려줍니다. SELECT * FROM user WHERE uid='{uid}'; 입력했던 값이 GET 메소드를 이용해 uid 변수에 들어가고 입력 값에 따라 쿼리도 변하는 것을 알 수 있습니다. 문제 풀이 제공되는 파일에는 init.sql, app.py 두 가지가 있기... Read More
-
Dreamhack | blind-command
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 해당 문제에 대해서는 단순히 FLAG 파일을 읽으라는 내용만 존재한다. 접속 시 ?cmd=[cmd]의 문자만 출력하고 있다. cmd라는 변수를 이용해서 GET 메소드로 입력 값을 받는 것처럼 보이기에 시도하면 아래와 같이 그대로 다시 출력한다. 자세한 내용을 위해 제공하는 파일을 읽어볼 필요가 있다. 문제 풀이 from flask import Flask, request import os app = Flask(__name__) @app.route... Read More
-
Dreamhack | web-ssrf
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 해당 커리큘럼은 SSRF으로 서버 사이드 요청 위조로 클라이언트의 요청을 서버 측 요청으로 위조하여 내부망에 접근하는 것입니다. 이 취약점을 이용하여 /app/flag.txt를 읽어오면 된다. 문제 풀이 접속하면 Image Viewer가 존재하는데 접속하면 이미지의 경로 입력이 있으며 View 버튼을 클릭할 경우 해당 그림을 출력해준다. Image Viewer를 통해서 없을 것으로 예상되는 아무 파일명을 입력한 결과 Not Found X에 해당하는... Read More
-
Dreamhack | File Download 1
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 해당 커리큘럼은 File Vulnerability으로 파일을 업로드하거나 다운로드할 때 발생되는 취약점에 대해서 나옵니다. 문제에서 다운로드 취약점임을 밝혔고 flag.py 파일을 다운로드 받으면 FLAG를 알 수 있다고 했습니다. 문제 풀이 우리의 메모를 업로드 하라고 했습니다. Upload My Memo를 통해 업로드 하면 어떠한 일이 벌어지는지 확인해보겠습니다. UPLOAD PAGE 파일명을 hello라 하고 안에 내용을 test라 했을 때... Read More
-
Dreamhack | Image Storage
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 해당 커리큘럼은 File Vulnerability으로 파일을 업로드하거나 다운로드할 때 발생되는 취약점에 대해서 나옵니다. 문제 풀이 메인 페이지는 이미지를 업로드하고 이미지 파일을 공유해보라는 글만 존재한다. 일단 업로드가 가능하다는 것에서 웹 쉘을 업로드하여 플래그를 읽으면 될 것으로 예상된다. UPLOAD PAGE 파일을 받아와 업로드가 가능하다. 현재는 확장자 jpg인 이미지 파일을 업로드하였을 때 ./uploads/ 경로에 업로드되는 것... Read More
-
KnightCTF 2023 | Networking
The most awaited international CTF from Bangladesh! KnightCTF 2023 is a jeopardy CTF competition for Cyber Security professionals and students or those who are interested in security. There will be challenges in various categories like PWN, Reversing, Web, Cryptography etc. Tons as well as tons of thankfulness along with an appreciation for... Read More
-
Android | Uncrackable Lv 2
이번에 학습해볼 내용의 APK 파일은 OWASP에서 배포한 UnCrackable-Level2.apk 파일이다. 의도적으로 취약하게 만든 파일로 진단 공부할 때 용이하게 이용된다. OWASP UnCrackable-Level2.apk C:\Users\users>adb install UnCrackable-Level2.apk Performing Streamed Install Success 루팅 탐지 우회 Uncrackable1과 같이 해당 파일을 실행시키면 아래와 같이 Root detected! 다이얼로그가 나오고 OK 버튼을 누르면 프로세스가 종료되는 것을 알 수 있다. Frida를 이용... Read More
-
Android | Uncrackable Lv 1
루팅 탐지 우회 루팅 탐지 우회에서 진단할 APK 파일은 OWASP에서 배포한 UnCrackable-Level1.apk 파일이다. 의도적으로 취약하게 만든 파일로 진단 공부할 때 용이하게 이용된다. OWASP UnCrackable-Level1.apk 파일을 다운받고 CMD를 다운로드 받은 경로로 이동한다. C:\Users\users>adb install UnCrackable-Level1.apk Performing Streamed Install Success adb 명령어를 통해 단말기에 다운받은 파일을 install 해주고 Success가 나오면 단말기에는 정상적으로 다운이 된 것을 알 수... Read More
-
CTFd 환경 구축
CTF(Capture The Flag) 대회를 해보면서 교내 동아리에서 신입 부원 및 동아리의 적극적인 활동을 위해 교내용 CTF를 구축하기로 하였다. 이에 CTFd라는 오픈소스 프레임워크를 이용하였다. 사용하면서 웹 문제의 경우 단순히 apache를 이용해 간단히 포트포워딩이 가능했지만, pwnable 문제의 경우 nc(netcat)를 이용하는 것이 대다수이기에 어려움을 겪었다. apache에 대한 내용은 아래 링크를 통해 설명해두었으니 확인해주시면 되겠습니다. peoplstar’s Note CTFd와 pwnable nc 구축 모두 docker를 사용하기에 설치부터 진행하겠습니다. CTFd... Read More
-
Apache2 Install & Multiple Ports
Apache HTTP Server는 오픈 소스 소프트웨어 그룹인 아파치 소프트웨어 재단에서 만드는 웹 서버 프로그램이다. 팀 버너스 리가 만든 최초의 웹 서버 프로그램인 “NCSA HTTPd”를 기반으로 만들어졌다. 팀 버너스 리의 NCSA HTTPd는 유닉스 기반으로 만들어졌기에, 아파치 HTTP 서버는 NCSA HTTPd를 리눅스에서도 돌리는 것을 목표로 만들어진 프로그램이다. 그 이후 리눅스와 함께 퍼져나갔고, 리눅스가 서버 OS의 최다 점유율을 차지하자 아파치도 자연스럽게 최다 점유율을 차지하게 되었다. 현재 거의 모든 리눅스 배포판이 이 아파치를 지원한다. Install sudo apt-ge... Read More
-
Jadx 설치
Jadx 안드로이드 Dex 및 APK 파일에서 자바 소스 코드를 생성해 보여는 CLI 및 GUI 도구인 jadx 프로그램이다. 안드로이드 apk 분석 디컴파일러인 jadx-gui 디컴파일러는 기존 jd-gui의 불편한 점(dex2jar를 이용한 dex→jar 변환)을 개선하여, dex2jar 도구의 없이도 apk 디컴파일이 가능하다. 또한, 소스코드 뿐만 아니라 리소스 부분도 확인이 가능하도록 기능을 확장하였다. jadx는 Git Release에서 원하는 버전을 다운받아서 사용하시면 됩니다. jadx github 또한, jadx는 JRE(Java Runtime Environmenet... Read More
-
Frida Install
Frida Frida는 JS Injection을 이용해 Native App에 대해 후킹이 가능한 파이썬 라이브러리로 iOS, Android 등 모바일 분석 때문에 알려져 있지만 다른 플랫폼에서도 사용 가능하다. Core 부분은 C와 Google V8 Engine으로 작성 되었지만 대부분의 구현체는 Python이다. 또한 여러 언어에 대한 API을 지원하니 추가로 개발해서 사용하면 좋다고 알려져 있다. Install Frida는 파이썬 라이브러리이기에 파이썬은 기본적으로 깔려 있어야 합니다. 파이썬 설치는 상당히 쉽고 쉽게 찾을 수 있으므로 파이썬 설치 과정은 생략하겠습니다. Frida를 활용할 환경... Read More
-
Android rooting guide
안드로이드 앱 모의해킹을 하기 위해 Nox를 사용할 계획이였지만, Nox도 wsl를 이용한 가상화를 사용하기에 이미 Docker를 위한 wsl를 사용 중이라 충돌이 일어나게 된다. 따라서, 별도의 공기계를 구입하여 안드로이드 앱 모의해킹을 하려 한다. 이를 위해서는 루팅이라는 작업을 해야 한다. 루팅 Root는 트리의 일부일뿐만 아니라 사용자가 시스템을 완전히 제어 할 수 있는 권한 (일종의 관리 계정)을 제공하는 유닉스 시스템 계정의 전통적인 이름을 의미합니다. Android의 운영 체제는 Linux 코어를 기반으로 하며 root라는 사용자(관리자)가 있으며 모든 파일에 무제한으로 액세스 할 수 있으며 수... Read More
-
Dreamhack | Command Injection 1
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 해당 커리큘럼은 Command Injection으로 기존 제공하는 서비스에 임의의 Command를 삽입하는 공격이다. 문제 풀이 처음 접속했을 때의 화면으로 Welcome this is ping playground!를 출력하며 육안으로 들어갈 수 있는 곳은 Ping 하나로 보인다. 해당 페이지로 이동해보겠습니다. Host 입력란이 나오고 Ping을 보낼 수 있을 것으로 보인다. Hint로 되어 있는 8.8.8.8으로 Ping을 보내보겠습니다. ... Read More
-
Dreamhack | Mango
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 해당 커리큘럼은 NoSQL Injection으로 Not Only SQL Injection이다. NoSQL로 대표적인 MongoDB를 Injection하는 문제입니다. {‘uid’: ‘admin’, ‘upw’: ‘DH{32alphanumeric}’}로 기본적인 힌트를 제공한 상태입니다. 문제 풀이 처음 접속했을 때의 화면이다. /login?uid=guest&upw=guest의 힌트가 있기에 http://host3.dreamhack.games:22541... Read More
-
Webhacking.kr | Level 21
본 문제는 webhacking.kr를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 접속부터 해당 문제는 BLIND SQL INJECTION임을 알려준다. 결국 우리는 해당 기법을 통해 아래 Result 값으로 참인지 거짓인지를 판별하여 ID와 PW를 구해야 할 것으로 보인다. 문제 풀이 참일 수 없는 ID : guest, PW : guest를 넣고 제출하면 결과는 login success인 것을 알 수 있다. ID : admin, PW : admin도 가능하다.(admin 계정 로그인이 주 문제 일 것으로 보인다.) 참일... Read More
-
Dreamhack | Off By One_001
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 문제는 dreamhack.io를 들어가시면 확인할 수 있습니다. Off-by-one 취약점은 경계 검사에서 하나의 오차가 있을 때 발생하는 취약점입니다. 이는 버퍼의 경계 계산 혹은 반복문의 횟수 계산 시 < 대신 <=을 쓰거나, 0부터 시작하는 인덱스를 고려하지 못할 때 발생합니다. 문제 풀이 #include <stdio.h> #include <stdlib.h> #include <signal.h> #include <un... Read More
-
Dreamhack | Simple SQLi
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 문제는 dreamhack.io를 들어가시면 확인할 수 있습니다. 접속 시 로그인 페이지 하나와 About, Contact Fragment가 존재한다. 로그인 서비스를 통해 SQLi를 하여 FLAG를 가져오면 될 것으로 보인다. 문제 풀이 #!/usr/bin/python3 from flask import Flask, request, render_template, g import sqlite3 import os import binascii app = Flas... Read More
-
Dreamhack | Off By One_000
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 문제는 dreamhack.io를 들어가시면 확인할 수 있습니다. Off-by-one 취약점은 경계 검사에서 하나의 오차가 있을 때 발생하는 취약점입니다. 이는 버퍼의 경계 계산 혹은 반복문의 횟수 계산 시 < 대신 <=을 쓰거나, 0부터 시작하는 인덱스를 고려하지 못할 때 발생합니다. 문제 풀이 #include <stdio.h> #include <stdlib.h> #include <signal.h> #include <un... Read More
-
Dreamhack | CSRF-1
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 문제는 dreamhack.io를 들어가시면 확인할 수 있습니다. 접속 시 vuln page, memo, notice flag, flag 총 4개의 링크가 있는 것을 알 수 있다. 문제 풀이 vuln page vuln(xss)page : 해당 URL을 보면 http://host3.dreamhack.games:20599/vuln?param=%3Cscript%3Ealert(1)%3C/script%3E로 되어 있다. 하지만, 어떠한 이유인지 스크립트... Read More
-
Dreamhack | CSRF-2
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 문제는 dreamhack.io를 들어가시면 확인할 수 있습니다. 접속시 please login이 나오고 로그인을 할 수 있는 링크, vuln page, flag 총 3개의 링크가 있는 것을 알 수 있다. 문제 풀이 vuln page vuln(xss)page : 해당 URL을 보면 http://host3.dreamhack.games:20599/vuln?param=%3Cscript%3Ealert(1)%3C/script%3E로 되어 있다. 하지만,... Read More
-
Dreamhack | XSS-2
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 문제는 dreamhack.io를 들어가시면 확인할 수 있습니다. 해당 문제는 드림핵 Cross Site Script 로드맵에 등장하는 두번째 문제로 같은 내용을 담고 있다. 이번에도 접속했을 때 위 처럼 3개의 링크가 존재하는 것을 알 수 있다. 문제 풀이 vuln(xss)page : 해당 링크를 접속하면 1 이라는 Alert가 뜨는데 해당 URL을 보면 http://host3.dreamhack.games:23964/vuln?param=%3C... Read More
-
Dreamhack | XSS-1
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 문제는 dreamhack.io를 들어가시면 확인할 수 있습니다. 해당 문제는 드림핵 Cross Site Script 로드맵에 등장하는 첫번째 문제이다. 접속 정보와 해당 서버를 구성하는 app.py 파일이 존재한다. XSS 취약점을 이용해서 flag를 가져와야한다. 접속했을 때 위 처럼 3개의 링크가 존재하는 것을 알 수 있다. 문제 풀이 vuln(xss)page : 해당 링크를 접속하면 1 이라는 Alert가 뜨는데 해당 URL을 보면 ... Read More
-
Webhacking.kr | Level 20
본 문제는 webhacking.kr를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 접속하면 입력해야 할 nickname, comment, captcha 세 부분이 존재하는데 최상단을 보면 time limit : 2 second 시간 제한은 2초로 되어 있다. captcha로 인해서 2초내에 입력은 불가능할 것으로 보인다. 따라서, python requests를 이용해 해당 값을 자동으로 집어넣고 Submit하는 Exploit을 작성해보고자 한다. 문제 풀이 입력 값을 넣고 submit 하는것을 Burp Suite로 잡았을 때의 모... Read More
-
TUCTF | Shell Maze
TUCTF is a jeopardy-style Capture the Flag (CTF) competition designed for all ranges of experience. A jeopardy-style CTF is a CTF where you earn your team points for solving a challenge that’s listed under a specific category with a specific point value. The end goal of each challenge is usually to get a string of text called a flag that’s usu... Read More
-
TUCTF | Leisurely Math
TUCTF is a jeopardy-style Capture the Flag (CTF) competition designed for all ranges of experience. A jeopardy-style CTF is a CTF where you earn your team points for solving a challenge that’s listed under a specific category with a specific point value. The end goal of each challenge is usually to get a string of text called a flag that’s usu... Read More
-
Docker & vscode Enviroment
CTF 대회 참여하면서 pwnable 역할을 맡고 대회 문제를 풀다 보면 환경 문제로 실행 조차 못하는 문제에 들이 닥치기 쉽다. 필자 또한, 문제 실행 조차 안돼서 접근조차 못한 경우가 많다. 또한, 익스플로잇 환경 조차 다르게 되어 다시 짜야 하는 경우가 발생했는데, 이번 기회를 통해 Docker 환경을 갖추고 편하게 접근하려고 한다. Window 경우 Docker Desktop을 설치를 할 때, WSL 2를 활용하게 된다. WSL 2 부터 차근차근 설치해보도록 하겠습니다. WSL 2 WSL를 간단하게 표현하자면 MS(마이크로소프트)에서 제공하는 Windows에서 리눅스 커널을 사용할 수 있게 해주... Read More
-
Webhacking.kr | Level 19
본 문제는 webhacking.kr를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 id는 default로 admin으로 되어 있으며 그대로 제출하면, you are not admin 문구와 함께 GET 방식으로 ?id=admin이 넘어간다. 문제 풀이 id를 임의로 변경하여 다시 제출해보겠습니다. hella ‘id’와 함께 로그아웃 버튼이 생기며 URL에는 기존 URL과 다를게 없다. 이렇게 어느 한 값을 넣고 URL의 변동 없이 변화하는 것을 보고, 쿠키에 다른 값이 생기는 지 확인해보니 아래와 같았다. 원래 없던 u... Read More
-
GCHD | Left Right v2
본 문제는 강원도 사이버 해킹방어대회 본선 문제입니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 해당 문제 풀이 하는데에 있어서 도움을 주신 wyv3rn님께 감사드립니다 (아저씨의 흔한 취미. wyv3rn#1249) 문제 분석 checksec 모든 보호기법이 적용되어 있고, Full Relro 우회를 위해 free() hook overwrite 시나리오를 계획하고 있다. main int __cdecl main(int argc, const char **argv, const char **envp) { size_t v3; // rax char buf[40]; // [rs... Read More
-
SSH brute force attack
It is illegal to practice on unauthorized systems. This is for learning, so please use a virtual machine to study. 정의 SSH(Secure Shell)는 원격지 호스트 컴퓨터에 접속하기 위해 사용되는 인터넷 프로토콜이다. 뜻 그대로 보안 셸이다. 기존의 유닉스 시스템 셸에 원격 접속하기 위해 사용하던 텔넷은 암호화가 이루어지지 않아 계정 정보가 탈취될 위험이 높으므로, 여기에 암호화 기능을 추가하여 1995년에 나온 프로토콜이다.(SSH는 암호화 기법을 사용하기 때문에, 통신이 노출된다고 하더라도 이해할 수 없는 암호화... Read More
-
Dreamhack | Basic Exploitation 003
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 문제는 dreamhack.io를 들어가시면 확인할 수 있습니다. Format String Bug 커리큘럼이다. 포맷 스트링은 필요로 하는 인자의 개수와 함수에 전달된 인자의 개수를 비교하는 루틴이 없기에 악의적으로 다수의 인자를 요청하여 레지스터나 스택의 값을 읽어낼 수 있다. 또한, 다양한 형식지정자를 활용하여 원하는 위치의 스택 값을 읽거나, 스택에 임의 값을 쓰는 것도 가능하다. 이전 문제와 다르게 Reference가 RAO로 되어 있다. 문제 풀이 #incl... Read More
-
Dreamhack | Basic Exploitation 002
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 문제는 dreamhack.io를 들어가시면 확인할 수 있습니다. Format String Bug 커리큘럼이다. 포맷 스트링은 필요로 하는 인자의 개수와 함수에 전달된 인자의 개수를 비교하는 루틴이 없기에 악의적으로 다수의 인자를 요청하여 레지스터나 스택의 값을 읽어낼 수 있다. 또한, 다양한 형식지정자를 활용하여 원하는 위치의 스택 값을 읽거나, 스택에 임의 값을 쓰는 것도 가능하다. 문제 풀이 #include <stdio.h> #include <st... Read More
-
Dreamhack | out of bound
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 문제는 dreamhack.io를 들어가시면 확인할 수 있습니다. Out of Bound라는 커리큘럼이다. 이번 문제는 배열에 대한 접근 관련 인덱스 점검이 발생하지 않을 시 일어나는 취약점을 가지고 해당 문제를 풀이하게 될 것이다. 문제 풀이 #include <stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h> #include <string.h>... Read More
-
Dreamhack | hook
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 문제는 dreamhack.io를 들어가시면 확인할 수 있습니다. 문제 풀이 이번 문제도 Full RELRO로 인해서 Now binding, 프로그램이 실행될 때 해당 프로그램에서 사용되는 함수들의 주소를 읽어와 GOT 영역에 저장하기에, GOT Overwrite가 불가능하다. 또한, Canary가 있기에 leak이 가능할 지 확인을 해야한다. #include <stdio.h> #include <stdlib.h> #include <signal.... Read More
-
Dreamhack | one shot
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 문제는 dreamhack.io를 들어가시면 확인할 수 있습니다. 이 문제는 Hook Overwrite 로드맵에서 One-shot gadget을 활용하는 문제입니다. 문제 풀이 Full RELRO로 인해서 Now binding, 프로그램이 실행될 때 해당 프로그램에서 사용되는 함수들의 주소를 읽어와 GOT 영역에 저장하기에, GOT Overwrite가 불가능하다. #include <stdio.h> #include <stdlib.h> #include... Read More
-
Dreamhack | fho
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 문제는 dreamhack.io를 들어가시면 확인할 수 있습니다. 이 문제는 Hook Overwrite 로드맵에서 내용을 이해했는지 확인차 푸는 문제입니다. 모든 보호기법이 설정되어 있는 것을 알 수 있다. 문제 풀이 Full RELRO로 인해서 Now binding, 프로그램이 실행될 때 해당 프로그램에서 사용되는 함수들의 주소를 읽어와 GOT 영역에 저장하기에, GOT Overwrite가 불가능하다. 하지만, C언어의 동적 할당과 해제를 담당하는 mallo... Read More
-
Webhacking.kr | Level 18
본 문제는 webhacking.kr를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 SQL INJECTION이란 타이틀과 우리가 입력한 값을 제출하는 form이 존재하며 결과 값을 출력해주는 것과 같은 RESULT가 존재한다. view-source를 통해 어떠한 로직인지 확인해보겠습니다. 문제 풀이 <?php if($_GET['no']){ $db = dbconnect(); if(preg_match("/ |\/|\(|\)|\||&|select|from|0x/i",$_GET['no'])) exit("no hack"); $r... Read More
-
Dreamhack | sint
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 문제는 dreamhack.io를 들어가시면 확인할 수 있습니다. 이 문제는 Integer Issues라 하는 Reference를 가지고 있고 보호기법으로 보면 NX bit만 활성화 되어 있는 것을 알 수 있다. 문제 풀이 #include <stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h> void alarm_handler() { puts("TIM... Read More
-
Webhacking.kr | Level 17
본 문제는 webhacking.kr를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 우리가 입력한 값을 넘기는 form 형태가 존재하고 소스코드를 봐야 기능을 알 수 있을 것 같다. 문제 풀이 <script> unlock=100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-... Read More
-
Webhacking.kr | Level 16
본 문제는 webhacking.kr를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 해당 문제를 들어가면 *가 표기되어 있고, 그 어떠한 것도 볼 수가 없다. 소스코드를 보며 어떤 식의 문제인지 파악해보겠습니다. 문제 풀이 <body bgcolor="black" onload="kk(1,1)" onkeypress="mv(event.keyCode)"> <font color="silver" id="c"></font> <font color="yellow" size="100" style="position:relati... Read More
-
Webhacking.kr | Level 15
본 문제는 webhacking.kr를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 Level 15를 들어가기 위해서 클릭하면 Alert창과 함께 처음 화면으로 리다이렉트된다. 문제 풀이 Alert가 뜬다는 것은 <script>alert("Access_Denied")</script>가 맨 처음에 포함되어 있을 것을 예상된다. Chrome에서는 [디버거 - 자바스크립트 사용 중지]를 지원한다. Alert는 자바스크립트이기에 사용 중지한다면 해당 스크립트를 진행하지 않을 것이다. 그렇다면 본 링크로 이동이 가능할 것으로 보... Read More
-
Webhacking.kr | Level 14
본 문제는 webhacking.kr를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 초기 화면에는 어떠한 것도 없고 값을 전송하는 것만 있다. 따라서, 소스를 열어서 무슨 기능인지 파악해야한다. <form name="pw"> <input type="text" name="input_pwd"> <input type="button" value="check" onclick="ck()"> </form> <script> function ck(){ var ul=docu... Read More
-
Dreamhack | Basic_ROP_x86
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 문제는 dreamhack.io를 들어가시면 확인할 수 있습니다. 리턴 지향 프로그래밍 과정에 속한 문제이다. 따라서 해당 문제는 ROP로 진행하면 될 것이다. 문제 풀이 #include <stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h> void alarm_handler() { puts("TIME OUT"); exit(-1); } voi... Read More
-
GCHD | Simple Overflow
본 문제는 강원도 사이버 콘테스트 CTF에서 출제한 문제입니다. 문제 내용 해당 문제는 리턴 지향 프로그래밍이라는 제목으로 Pwnable 카테고리로 나왔다. 따라서, 이 문제는 풀이 방식이 정해져 있음을 알고 해당 파일을 모두 받아왔습니다. 소스 코드 없이 실행 파일만 존재해 실행을 반복하면서 로직을 파악했습니다. 하지만, libc의 버전 관련해서는 나오지 않고 미숙했던 탓에 해당 기간내에는 풀지 못하고 다시 한번 도전해 풀게 되었습니다. 문제 풀이 IDA Free 버전을 이용하여 해당 파일을 디컴파일링한 내용입니다. len : 16 이상일 경우 puts(too lon... Read More
-
Dreamhack | ROP
본 내용은 Dreamhack을 통해 보실 수 있습니다. 제가 문제를 풀이해보면서 이해 해온 내용을 토대로 해당 이론을 진행하겠습니다. 틀린 부분이 있을 수도 있으므로, 다른 자료를 같이 검색해보면서 진행하시면 좋을 것으로 예상됩니다. ROP Return Oriented Programming(ROP)는 NX bit와 ASLR 같은 메모리 보호 기법을 우회하기 위한 공격기법으로, Return To Libc(RTL), RTL Chaning, GOT Overwrite 기법을 활용하여 콜 스택을 제어하는 공격 기법이다. 그리고 다수의 리턴 가젯을 연결해서 사용하여 기존 Return을 변경하여 프로그래밍 하듯이 필요로... Read More
-
Dreamhack | SSP-000
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 문제는 dreamhack.io를 들어가시면 확인할 수 있습니다. 해당 문제는 Dreamhack Pwnable 교육과정 중 Stack Canary 실습 문제이다. 따라서 문제에서 요구하는 바는 SSP 방어 기법을 위해하여 flag를 획득하는 것이다. 문제 풀이 #include <stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h> void alarm_hand... Read More
-
Dreamhack | RTL
본 내용은 Dreamhack을 통해 보실 수 있습니다. RTL RTL(Return To Library)는 공유 라이브러리에 있는 함수의 주소를 이용해서 바이너리에 존재하지 않는 함수를 이용할 수 있다. 주로 DEP 메모리 보호기법 및 NX bit 활성화시 우회하기 위해서 사용한다. 프로세스에 실행 권한이 있는 메모리 영역은 바이너리 코드 영역과 바이너리가 참조하는 라이브러리의 코드 영역이기 때문에 우회가 가능하다. 즉, Return Address를 라이브러리 내에 존재하는 함수의 주소로 바꿔 NX bit를 우회하는 공격이다. 실습 문제 Canary가 존재하며 NX bit가 활성화되어 있다.... Read More
-
Webhacking.kr | Level 12
본 문제는 webhacking.kr를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 접속 시 javascript challenge라는 문구만 있기에 개발자 도구를 이용하여 JavaScript 구문이 어떻게 되어 있는지 확인해보겠습니다. 문제 풀이 Webhacking Level 5와 유사해보입니다. 보기 어려우니 이전에 사용했던 beautifier를 이용해서 확인해보겠습니다. ゚ω゚ノ = /`m´)ノ ~┻━┻ / /*´∇`*/ ['_']; o = (゚ー゚) = _ = 3; c = (゚Θ゚) = (゚ー゚) - (゚ー゚); (゚Д゚) = (゚Θ... Read More
-
Dreamhack | Basic Exploitation 001
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 문제는 dreamhack.io를 들어가시면 확인할 수 있습니다. 환경 정보를 보면 NX가 활성화되어 있는 것을 알 수 있다. 그렇다는 것을 Shellcode를 대입하더라도 스택 영역에 실행 권한이 없어 Shellcode를 실행하지 못하고 종료하게 된다. 주어진 파일을 확인해보겠습니다. 문제 풀이 #include <stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h... Read More
-
Dreamhack | Basic Exploitation 000
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 문제는 dreamhack.io를 들어가시면 확인할 수 있습니다. 이 문제는 Shell Code 이후 실습 문제이다. 환경 정보를 보면 어떠한 보호 기법오 적용되어 있지 않은 것을 알 수 있다. 제공된 파일을 분석하면서 확인해보겠습니다. 문제 풀이 #include <stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h> void alarm_handler() {... Read More
-
Webhacking.kr | Level 11
본 문제는 webhacking.kr를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 첫 화면에는 Wrong과 view-source밖에 보이질 않아 view-source로 넘어갔다. DB 연결코드도 없고 매우 단순하기에 바로 소스코드 분석을 진행하면서 풀이를 해보겠습니다! 문제 풀이 <?php $pat="/[1-3][a-f]{5}_.*$_SERVER[REMOTE_ADDR].*\tp\ta\ts\ts/"; if(preg_match($pat,$_GET['val'])){ solve(11); } else echo("&... Read More
-
Webhacking.kr | Level 10
본 문제는 webhacking.kr를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 무슨 경주장 같은 이상한 페이지가 나오는데 O 이거를 Goal 라인을 넘겨야 하나 싶기도 하고…? 그 어느 것도 보이지 않아서 소스코드를 보기로 했습니다. 소스 코드 <a id = "hackme" style = "position:relative;left:0;top:0" onclick = "this.style.left=parseInt(this.style.left,10)+1+'px';if(this.style.left=='1600px')this.href='?go=... Read More
-
Webhacking.kr | Level 9
본 문제는 webhacking.kr를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 Password를 입력할 수 있는 TextArea와 클릭 할 수 있는 1, 2, 3이 존재한다. 1번 2번은 Banana다. 3번 column은 id와 no로 구성되어 있고 3번의 id가 password라 합니다. 즉, no=3의 id column 값을 구해야 한다. 문제 풀이 패스워드의 값을 무작위로 여러 번 입력했을 때 접근 시도를 막지 않았기 때문에 Brute Force로 해도 가능할 것으로 ... Read More
-
Dreamhack | Return To Shell
본 문제는 Dreamhack을 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 문제는 dreamhack.io를 들어가시면 확인할 수 있습니다. 이 문제는 Stack Canary 교육 과정에 포함되어 있어 풀이는 Canary 우회이며, ShellCode로 Return 시키는 문제입니다. r2s 파일은 64bit의 ELF이며, x86-64 아키텍처이므로 추후 스크립트에는 context.arch = "amd64"가 필요한 것을 알 수 있다. checksec를 통해서 Canary가 있는 것을 알 수 있다. 문제 풀이 // r2s.c #... Read More
-
Webhacking.kr | Level 8
본 문제는 webhacking.kr를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 hi guest와 함께 소스코드 보는 것 밖에는 없다. 소스 코드를 분석하면서 확인해보겠습니다. 소스 코드 $agent=trim(getenv("HTTP_USER_AGENT")); $ip=$_SERVER['REMOTE_ADDR']; $agent : getenv("HTTP_USER_AGENT")를 통해 사용자 웹 접속 환경 정보를 가져와 공백을 모두 제거한 String $ip : PHP의 예약 변수로써 접속자의 IP if(preg_match("/fro... Read More
-
Pwnable Ssp 001
Read More
-
Webhacking.kr | Level 7
본 문제는 webhacking.kr를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 Admin page라는 것과 함께 auth 버튼과 소스코드를 보는 것이 있다. auth를 누르면 Access_Denied!의 Alert가 뜬다. 그리고 URL을 보면 https://webhacking.kr/challenge/web-07/index.php ?val=1 Parameter를 GET 방식으로 val 변수에 대해서 넘겨주고 있는 것을 알 수 있다. view-source를 통해 소스코드를 먼저 보겠습니다. $go=$_GET['val']; if(!$go) {... Read More
-
Webhacking.kr | Level 6
본 문제는 webhacking.kr를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 아이디와 패스워드가 무엇인지 말해주고 소스볼 수 있는 곳이 나온다. 소스를 보면 다음과 같다. if(!$_COOKIE['user']){ $val_id="guest"; $val_pw="123qwe"; for($i=0;$i<20;$i++){ $val_id=base64_encode($val_id); $val_pw=base64_encode($val_pw); } $val_id=str_replace("1","!",$val_id); $... Read More
-
Webhacking.kr | Level 5
본 문제는 webhacking.kr를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 접속하면 위 처럼 로그인과 회원가입에 대한 버튼이 있다. 우선 로그인을 들어가보겠습니다. 로그인할 수 있는 부분이 있다. 아무거나 대입해보면 Wrong Password가 안내를 해준다. SQLi를 해보면 될 것으로 예상되고, 회원가입으로 가보겠습니다. …? 누르자 마자 접근 불가라는 Alert가 나온다. 해당 Join 버튼은 무조건 접근 불가라는 Alert를 띄우는 Script가 되어 있다. 또한, move 함수를 보면 현재 디렉토리에서 m... Read More
-
Webhacking.kr | Level 4
본 문제는 webhacking.kr를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 패스워드를 입력하는 Textarea가 있다. 아무 값을 입력하고 제출하면 Alert창도 없이 새로고침 되면서 위 String이 변경된다. 위에는 암호화가 되어 있는듯한(?) 문자열이 있다. 소스 보기란이 있으니 소스를 본다. 소스 보기 <?php sleep(1); // anti brute force if((isset($_SESSION['chall4'])) && ($_POST['key'] == $_SESSION['chall4'])) sol... Read More
-
Webhacking.kr | Level 3
본 문제는 webhacking.kr를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 들어가면 이러한 것이 나오는데 소스코드를 봐도 이거를 제외하고는 아무것도 없다. 그래서 노노그램이라는 퍼즐게임을 일단 풀어봤다. 클리어 했다면서 로그를 위해 이름을 찍으라는데 입력해보겠습니다. 입력하면 이름과 수상한 답, 그리고 공인 IP가 찍힌다. 문제 풀이 URL을 보면 이상한 파라미터들이 난무해있다. https://webhacking.kr/challenge/web-03/index.php? _1=1&_2=0&_3=1&_... Read More
-
Webhacking.kr | Level 2
본 문제는 webhacking.kr를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 들어가면 제한된 구역이라며 자신의 IP를 남기고 있다고 하네요. 소스 코드 Cookie에 time값이 있는데 주석에 나온 시간은 현재 시간과 맞지 않는 것을 알 수 있다. 그리고 admin.php에 접속이 가능할 것으로 보인다! 접속하면 패스워드를 입력할 수 있는 Textarea가 존재한다. 문제 풀이 SQL 인젝션으로 가능할 것 같아서 OR 1=1 --를 비롯한 대부분의 인젝션을 진행했지만 아무 것도 나오지 않았다. PHP 파일로 존재하므... Read More
-
The old version of KISEC
본 내용 및 실습 환경은 KISEC, 케이쉴드 주니어 교육 과정에 있음을 알려드립니다. 이번에는 한국인터넷진흥원(KISA)에서 제공하는 보안 취약점 및 침해사고 대응의 주요 정보 통신 기반 시설 기술적 취약점 분석 평가 상세 가이드를 중점으로 모의해킹 및 취약점 진단을 진행 하려합니다. 해당 가이드를 보면 여러 항목이 있지만 Web을 기반으로 진단하므로 Web에 대한 개요를 살펴 보면서 진행하겠습니다. 해당 가이드는 링크를 통해서 볼 수 있습니다. 정보 수집 정보 수집 개요는 해당 가이드에 명시 된 바는 없지만 fngs.kr를 모의해킹 하면서 알아봤던 정보 수집을 간단하게 복습하는 차원에서 보겠습니... Read More
-
File Download
본 내용 및 실습 환경은 KISEC, 케이쉴드 주니어 교육 과정에 있음을 알려드립니다. 파일 다운로드 취약점 파일 다운로드 기능이 존재하는 웹에서 파일 다운로드 시 파일의 경로 및 파일명을 파라미터로 받아 처리하는 경우 이를 적절히 필터링 하지 않으면 공격자가 이를 조작하여 허용되지 않은 파일을 다운 받을 수 있고 임의의 위치에 있는 파일을 열람하거나 다운받는 것이 가능해지는 취약점이다. 위 그림으로 설명드리면 정상적으로 해당 웹에서 파일 다운로드 받을 수 있는 항목으로는 운동화.png, 북한산풍경.png 이러한 것이 될 것이다. 하지만, 파일 다운로드 받을 때 생기는 URL을 임의로 수정하여 /et... Read More
-
fngs.kr | 7. 정보유출 및 방어회피
본 내용 및 실습 환경은 KISEC, 케이쉴드 주니어 교육 과정에 있음을 알려드립니다. 이전 내용 리버스 쉘을 통한 접근 및 백도어 텔넷을 통한 추가적 움직임을 진행했다. ROOT 권한까지 진행했습니다. Exfiltration 정보 유출은 공격자가 네트워크에서 데이터를 훔치는 데 사용할 수 있는 기술로 구성됩니다. 일단 데이터를 수집하면 공격자는 데이터를 제거하는 동안 탐지를 피하기 위해 종종 패키지를 만듭니다. 여기에는 압축 및 암호화가 포함될 수 있습니다. 대상 네트워크에서 데이터를 가져오는 기술에는 일반적으로 명령 및 제어 채널 또는 대체 채널을 통해 데이터를 전송하는 것이 포함되며 전송에 크기 제한... Read More
-
fngs.kr | 6. 권한 상승 및 Lateral Movement
본 내용 및 실습 환경은 KISEC, 케이쉴드 주니어 교육 과정에 있음을 알려드립니다. 이전 내용 웹 쉘을 통해 2차 침투를 위한 리버스 쉘을 커널 버전이 취약한 것을 확인했다. 이번에는 권한 상승인 Privilege Escalation 전략을 사용할 것이다. Privilege Escalation 공격자는 더 높은 수준의 권한을 얻으려고 합니다. 웹 쉘로 접근 했을 때는 관리자 권한이 아니고 제한적(제 3자의 권한)이기에 권한 상승을 통한 추가 공격을 진행할 것이다. 권한 상승은 공격자가 시스템 또는 네트워크에 대한 더 높은 수준의 권한을 얻기 위해 사용하는 기술로 구성됩니다. 공격자는 종종 권한 없는... Read More
-
fngs.kr | 5. 실행 및 발견
본 내용 및 실습 환경은 KISEC, 케이쉴드 주니어 교육 과정에 있음을 알려드립니다. 이전 내용 웹 쉘로 지속 가능한 상태를 만들어 뒀다. 하지만 2차 침투를 위해 리버스 쉘을 실행하고, 추가적인 웹 서버 내부 시스템 정보를 수집할 것이다. Execution 실행은 공격자가 제어하는 코드가 로컬 또는 원격 시스템에서 실행되도록 하는 기술로 구성됩니다. 악성 코드를 실행하는 기술은 종종 다른 모든 전술의 기술과 결합되어 네트워크 탐색이나 데이터 도용과 같은 더 광범위한 목표를 달성합니다. 예를 들어 공격자는 원격 액세스 도구를 사용하여 원격 시스템 검색을 수행하는 PowerShell 스크립트를 실행할 ... Read More
-
fngs.kr | 4. 지속
본 내용 및 실습 환경은 KISEC, 케이쉴드 주니어 교육 과정에 있음을 알려드립니다. 이전 내용 관리자 계정에 대한 패스워드를 크랙하는데 성공했다. 하지만 해당 계정의 패스워드가 다시 변경 되어 재접근이 힘들 수가 있다. 따라서 지속적으로 접근하기 위한 방법이 필요하다. Persistence 지속성은 공격자는 다시 시작, 자격 증명 변경 및 액세스가 차단될 수 있다. 예를 들어, 담담자에 의해 관리자 권한으로 들어온 것이 들통나게 되어 관리자 패스워드 변경 및 접속 차단이 될 수가 있다. 이러한 기타 중단을 대비해 시스템에 대한 액세스를 지속하기 위해 사용하는 기술로 구성됩니다. Create Acco... Read More
-
fngs.kr | 3. 자격 증명 액세스
본 내용 및 실습 환경은 KISEC, 케이쉴드 주니어 교육 과정에 있음을 알려드립니다. 이전 내용 현재 데이터베이스에 대한 유저 패스워드를 SQLMAP을 통해 모두 가져 올 수 있었다. 하지만, 모든 패스워드는 해시 함수로 감추어져 있다. 이러한 해시 함수를 풀어야만 침투가 가능하므로 자격 증명 액세스 전략을 사용 할 것이다. Credential Access 공격자는 피해자의 계정 이름과 비밀번호를 도용하려고 한다. 자격 증명 액세스는 계정 이름 및 암호와 같은 자격 증명을 도용하는 기술로 구성됩니다. 자격 증명을 얻는 데 사용되는 기술에는 키로깅 또는 자격 증명 덤프가 포함됩니다. 해시값을 통해 자격 ... Read More
-
fngs.kr | 2. 초기접근
본 내용 및 실습 환경은 KISEC, 케이쉴드 주니어 교육 과정에 있음을 알려드립니다. 정보 정보 수집을 단계를 통해 해당 도메인에서 사용 중인 dev.fngs.kr을 침투할 것이다. 또한, like-dislike-counter 플러그인을 사용하는 것을 알 수 있었기에 해당 플러그인에 SQL injection을 시도할 것이다. 범위 : dev.fngs.kr Intial Access 공격자가 해당 서비스를 침입하려고 할 때, 다양한 진입 벡터를 사용하여 네트워크 내에서 초기 발판을 확보하는 기술로 구성됩니다. 발판을 마련하는 데 사용되는 기술에는 표적 스피어피싱 및 공개 웹 서버의 약점 악용이 포... Read More
-
fngs.kr | 1. 정보수집
본 내용 및 실습 환경은 KISEC, 케이쉴드 주니어 교육 과정에 있음을 알려드립니다. 모의해킹 대상 정보 개요 : fngs.kr 웹사이트 대상 모의침투 범위 : fngs.kr 및 *.fngs.kr 예시 .kr은 국제표준(ISO-3166-410)에 의해 대한민국 국민이 등록할 수 있는 영문 국가 최상위 도메인입니다. Domain 등록 정보(whois), nslookup DOMAIN 정보 수집 향후 공격을 계획하는데 사용할 수 있는 정보를 수집하기 위한 정찰 행동이다. MITRE ATT*CK 전략으로는 Reconnaissance가 있다. Recon... Read More
-
Webhacking.kr | Level 1
본 문제는 webhacking.kr를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 처음 화면은 이 처럼 아무것도 없다. 따라서 view_source를 통해 해당 문제 내용을 알아본다. 문제 풀이 <?php include "../../config.php"; if($_GET['view-source'] == 1){ view_source(); } if(!$_COOKIE['user_lv']){ SetCookie("user_lv","1",time()+86400*30,"/challenge/web-01/"); echo("<... Read More
-
TTPs
TTPs TTPs는 전술(Tactics), 기술(Techniques), 절차(Procedures)의 약어로 정수 값이나 스트링 값으로 편할할 수 없는 위협원들의 행위 자체를 의미한다. 이게 무슨 소리냐 하면, 보안 전문가들이 위협 행위자들의 공격을 행동, 프로세스, 전량 등을 분석 및 설명하는데 사용하며, 대응책 개발에 활용하는 것이다.(정보보호 컨설팅에서는 이 TTPs를 접목하여 보다 현실적인 위험 대응방안 수립이 가능한다.) 모의해킹을 공부할 때 기술을 보이는 대로 마구잡이로 공부하는 것이 아니라, TTPs를 기반으로 공부하는 것이 좋다. TTPs 목록 MITRE에 접속하면 실제 TTPs... Read More
-
모의해킹이란
모의해킹(Penetration Test) 모의해킹 또는 침투 테스트는 고객사와 협의 하에 고객사의 실 운영 서버 및 서비스를 해킹하는 직업이다. 모의해킹은 서로 합의가 된 상태로 합법적인 테스트가 진행하는 것이므로, 크래킹(악의적 목적)과 다른 것이다. 어떤 방식으로 침투할 수 있는지 테스트를 해야하기에 여러 해킹 기술을 가지고 있어야 한다. 모의해킹 범위 모의해킹을 수행하는 위치는 크게 외부 비인가자, 인가자, 내부 비인가자, 인가자로 구분할 수 있으며 각 구분에 따라 다르게 해석된다. 위치 내용 외부 비인가자 - ... Read More
-
Reversing | reversing.kr 3번 Easy Unpack
본 문제는 reversing.kr를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 Easy_UnpackMe.exe 파일을 실행하면 아무것도 나오지 않는다. 도대체 무엇을 하는 프로그램일지도 예상이 안되고, Az를 통해 문자열의 위치를 알 수도 없다. Readme.txt ReversingKr UnpackMe Find the OEP ex) 00401000 OEP? OEP란 Original Entry Point를 말한다. 패킹된 파일을 실행할 때 자동적으로 시스템 내부에서 언패킹을 한다. 언패킹이 끝나면 복구한 원본코드를 동작시켜야 하는데 ... Read More
-
Reversing | reversing.kr 2번 Easy Keygen
본 문제는 reversing.kr를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. Reversing.kr의 두번째 문제 Easy Keygen을 풀어보려한다. 이번에는 실행 파일과 텍스트 파일이 들어있다. 텍스트 파일의 내용을 확인해보고, 파일을 실행해보자. 문제 내용 Keygen.exe 파일을 실행하면 Name과 Serial을 입력하는게 나온다. 이렇게 보면 옳은 Name과 Serial을 찾아야 할 것 같은 느낌이 들 것이다. Readme.txt 파일을 읽어보면서 다른 내용이 있는지 확인해본다. Readme.txt Serial이 5B1349... Read More
-
pwnable.kr | Random
본 문제는 pwnable.kr를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 문제는 pwnable.kr를 들어가시면 확인할 수 있습니다. 프로그래밍에서 랜던한 값을 사용하는 법을 가르쳐 주신답니다. 열심히 풀어보도록 하죠! #include <stdio.h> int main(){ unsigned int random; random = rand(); // random value! unsigned int key=0; scanf("%d", &key); ... Read More
-
pwnable.kr | Passcode
본 문제는 pwnable.kr를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 문제는 pwnable.kr를 들어가시면 확인할 수 있습니다. 엄마가 로그인 시스템 기반 패스코드를 만들었다고 말해줬대요. 분명 컴파일할 때는 에러가 없었는데, 경고는 있었다네요. 무슨 문제 일지 SSH를 통해 들어가서 확인해보겠습니다! 문제 풀이 #include <stdio.h> #include <stdlib.h> void login(){ int passcode1; int passcode2; pri... Read More
-
pwnable.kr | FLAG
본 문제는 pwnable.kr를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 문제는 pwnable.kr를 들어가시면 확인할 수 있습니다. 아빠가 Packing된 선물은 가져왔다는데 열어보랍니다 ! 이번에 리버싱 과정이라는데 어떤 의미일지 확인해보겠습니다! wget 명령어로 각 파일을 다운 받고 flag를 실행해보려합니다. malloc() 함수와 strcpy()함수로 플래그를 가져온다는 데 pwndbg로 확인해보겠습니다. 문제 풀이 Main 함수의 어셈블리 Main을 가져오지 못했다? file flag를 해본다. flag... Read More
-
Reversing | reversing.kr 1번 Easy Crack
본 문제는 reversing.kr를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 필자는 CTF에서 리버싱을 맡게 되어 이번에 처음 입문하게 되었습니다. 리버싱에 대해 무지하지만 CTF 문제 풀이를 하면서 하면 어느정도 되지 않을까라는 생각에 맨 땅에 헤딩하듯이 시작했습니다. 아주 기초적인 어셈블리어를 독학하고, 이렇게 시작하게 되어서 많이 불안하지만 모두가 할 수 있다는 것을 이렇게 말씀드리고 싶습니다. 디버깅 프로그램은 수도 없이 많지만 저는 x64dbg를 이용했습니다. 해당 프로그램이 더 우수하다? 이런거는 첫 입문이라 모르지만 눈에 보여서 이것으로 실습을 진... Read More
-
pwnable.kr | BOF
본 문제는 pwnable.kr를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 문제는 pwnable.kr를 들어가시면 확인할 수 있습니다. 나나가 가장 흔한 소프트웨어 취약점은 bof라는데 정말이냐고 물어보네요. 이번 문제를 bof로 풀어보라는 것 같습니다! 저는 WSL2로 Ubuntu 20.04를 올리고 pwntools, pwndbg를 올려서 사용하고 있습니다! 이를 이용해서 문제를 풀어보도록 하겠습니다. wget 명령어로 각 파일을 다운 받고 bof.c를 열어보면 아래의 코드로 구성 되어 있습니다. #include <stdio.h&g... Read More
-
pwnable.kr | Collision
본 문제는 pwnable.kr를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 문제는 pwnable.kr를 들어가시면 확인할 수 있습니다. 아빠가 MD5 해시에 대해서 말해줬다네요. 문제는 일단 해시 관련인 거 같으므로 접속부터 해보겠습니다. 이번에도 flag를 보면 읽을 권한이 없다. col.c 파일을 분석해보고, ROOT 권한을 탈취하여 flag를 읽어야 할 것으로 예상된다. #include <stdio.h> #include <string.h> unsigned long hashcode = 0x21DD09E... Read More
-
File Upload
본 내용 및 실습 환경은 KISEC, 케이쉴드 주니어 교육 과정에 있음을 알려드립니다. 파일 업로드 취약점 주로 게시판 등에서 파일 업로드 기능을 악용하여 시스템 권한을 획득할 수 있는 취약점을 의미한다. 공격자는 서버 사이드 스크립트(PHP, JSP, .NET 등)을 이용하여 웹쉘(WebShell)을 제작한다. 확장자에 대한 검증 없이 파일 업로드 기능을 제공할 때 해당 취약점이 발생하게 된다. 악성 스크립트가 업로드 된 후, 서버상에서 스크립트를 실행하여 쉘을 획득하는 등의 행위로 서버를 장악할 수 있다. 해당 웹 쉘의 해당 확장자는 다음과 같다. 언어 ... Read More
-
SSRF
본 내용 및 실습 환경은 KISEC, 케이쉴드 주니어 교육 과정에 있음을 알려드립니다. 정의 서버 사이트 요청 위조(SSRF)는 사이트 간 요청 위조(CSRF)보다 훨씬 위험하다. 해당 공격은 공격자가 서버를 속여 무단으로 요청을 보내는 수법이다. 일반적으로 외부에서도 접근 가능하도록 웹 서버를 운영하는 조직은 공인 IP 주소를 부여하여 인터넷에 공개한다. 반면 조직 내부에서 사용하는 서버는 방화벽을 통해 외부 접근을 막거나 내부에서만 사용가능한 사설 IP를 할당하도록 한다. 즉, 서버끼리의 요청을 공격자가 위조하는 것이다. SSRF는 이번 2021 OWASP TOP 10에 새롭게 포... Read More
-
XSS
본 내용 및 실습 환경은 KISEC, 케이쉴드 주니어 교육 과정에 있음을 알려드립니다. 정의 크로스 사이트 스크립팅(Cross Site Scripting, XSS)은 공격자가 상대방의 브라우저에 스크립트가 실행되도록 해 사용자의 세션을 가로채거나, 웹사이트를 변조하거나, 악의적 콘텐츠를 삽입하거나, 피싱 공격을 진행하는 것을 말합니다. 크로스 사이트 스크립팅(이하 XSS)은 스크립트 언어와 취약한 코드를 공격 대상으로 하며, 해킹의 주요 목적은 사용자의 정보를 도용하는 것이며, 로그인 입력란을 감염시켜 로그인 세부 정보와 쿠키를 탈취하는 방식으로 진행됩니다. XSS는 2017년까지 OWASP TOP ... Read More
-
CSRF
본 내용 및 실습 환경은 KISEC, 케이쉴드 주니어 교육 과정에 있음을 알려드립니다. 정의 크로스 사이트 요청 위조(Cross Site Request Forgery, CSRF)는 서버가 실제 서비스 페이지를 통한 정상요청인지 확인하지 않고 처리하는 경우 악의적인 스크립트를 이용하여 다른 사용자의 권한으로 중요기능 실행, 패스워드 변경 등의 공격을 할 수 있는 취약점이다. 즉, 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격을 말한다. CSRF 공격는 서버대상으로 이루어진다. XSS와 CSRF의 차이점 XSS는 공격대상이 클라이언트... Read More
-
Blind SQL Injection
본 내용 및 실습 환경은 KISEC, 케이쉴드 주니어 교육 과정에 있음을 알려드립니다. 정의 Blind SQL Injection은 DB의 에러 페이지가 노출 되지 않거나, 취약점 존재를 판단하기 어려운 경우에 주로 사용한다고 봐도 무방하다. 정보를 직접적으로 알 수는 없더라도 참 / 거짓 쿼리의 대상의 반응을 통해 정보를 알아내는 공격이다. 기본적으로 '(싱글 쿼테이션), 또는 "(더블 쿼테이션), And 연산을 이용해 참과 거짓의 값을 판별하는 SQL Query를 진행시킨다. 실습 1. 기본 문법 SELECT * FROM TABLE1 WHERE ID = '1' AND 1 = 1 -- 참 SELECT ... Read More
-
pwnable.kr | FD
본 문제는 pwnable.kr를 통해서 풀어 보실 수 있습니다. 해답을 이해하며 생각을 해보면서 풀이 해보시길 바랍니다. 문제 내용 문제는 pwnable.kr를 들어가시면 확인할 수 있습니다. FD를 클릭하시면 아래와 같이 나올텐데 리눅스 환경에서는 ssh fd@pwnabler.kr -p 2222로 접속하고 패스워드는 guest로 접속하시면 됩니다. 접속하면 위와 같은 내용이 나올 겁니다. flag를 보면 읽을 권한이 없다. fd.c 파일을 분석해보고, ROOT 권한을 탈취하여 flag를 읽어야 할 것으로 예상된다. 문제 풀이 #include <stdio.h&... Read More
-
Union SQL Injection
본 내용 및 실습 환경은 KISEC, 케이쉴드 주니어 교육 과정에 있음을 알려드립니다. 정의 Union SQL Injection은 기존 정상 쿼리와 악성 쿼리를 합집합하여 해당 결과를 통합해 하나의 테이블로 보여주는 것이다. Union SQL Injection은 기존 정상 쿼리의 Select 칼럼 수와 Union Select 악성 쿼리의 Select 칼럼 수가 동일해야 하고, 각 칼럼은 순서별로 동일한 데이터 형식이어야 한다. 기본적으로 '(싱글 쿼테이션), 또는 "(더블 쿼테이션), Union을 이용해 비정상적인 SQL Query를 진행시킨다. 실습 1. 기본 문법 SELECT * FROM TABLE... Read More
-
Error-Based SQL Injection
본 내용 및 실습 환경은 KISEC, 케이쉴드 주니어 교육 과정에 있음을 알려드립니다. 정의 정상 작동하던 SQL Query에 고의적으로 오류를 발생시켜, 출력되는 에러의 내용을 통해 필요한 정보를 찾아낸다. 이러한 에러 출력은 2021년 OWASP TOP 10에 새롭게 등장할 정도로 위험한 취약점이라 알려져 있다. 기본적으로 '(싱글 쿼테이션), 또는 "(더블 쿼테이션), Group by와 Having 등을 이용해 비정상적인 SQL Query를 진행시킨다. 환경 쇼핑몰과 같은 환경으로 SQL Injection에 대해서는 보안 대책이 갖추어 지지 않은 환경이다. 실습 위 그림과 같이 S... Read More
-
GitBlog 만들기
안녕하세요 :). 저는 모든 내용을 Github에 올렸는데 그것 쫌 아닌거 같아서… 이렇게 GitHub 블로그를 만들면서 정리해보려합니다! 혼자 해보면서 몇 번을 지웠다가 생성했다가 했는지 모르겠네요 :( 설치부터 시작하겠습니다. Ruby 설치 GitBlog의 테마는 jekyll 테마를 사용하고, 이를 수정 및 관리를 하기 위해서는 Ruby 개발 환경을 세팅 해야 합니다! 아래 링크를 통해 루비를 다운 받고 설치 하시면 됩니다. 루비 설치 홈페이지로 바로 가고 싶다면? 설치 하실 때 Default로 되어 있는 대로 하시면 됩니다:) 저는 그냥 최신 버전으로 받았습니다!! 이후 터미널 창... Read More
-
시스템 해킹
I'll share the link i heard in the youtube lecture Link : Youtube 어셈블리어 ; helloworld.s section .data msg db "hello world" section .text global_start _start: mov rax, 1 mov rdi, 1 mov rsi, msg mov rdx, 12 syscall mov rax, 60 mov rdi, 0 syscall 어셈블리어란, 우리... Read More
