전체 글

Best Of Best 12기/seKUrity
Web Security

KU-CTF ForceLogin2

해당 문제는 로컬파일을 도커에 올려 풀이를 진행하였다. 해당 문제 소스부분이다. KU-CTF 중 ForceLogin1 문제와 매우 유사하지만 table항목이 추가적으로 있다는 점을 알 수 있다. 그리고 banlist도 약간 다르다는 것도 알 수 있다. source 부분 중에서도 table 항목에서 sql injection을 해야한다고 생각을 들었다. 그리고 출제자가 mssql이라는 것을 힌트를 얻어 문제를 풀어 보겠다. MS SQL 공식 문서를 이용해 찾던 중 위와 같은 구문이 있다는 것을 알 수 있었다. 그래서 위와 같은 형식을 이용해보기로 했다. (values (admin,1)+as+MyTable(id,password)&id=admin&pass=1이라는 구문을 얻을 수 있었다. 그리고 저번 1번 문제..

Web Security

KU-CTF ForceLogin1

해당 문제는 로컬파일을 도커에 올려 풀이를 진행하였다. 해당 문제 소스부분이다. 화면을 보면 banlist에 많은 내용들이 들어가있는 것을 알 수 있었다. source 부분 중에서도 id 항목에서 admin을 입력을 하고 password 부분에서 sql injection을 해야한다고 생각을 들었다. 그리고 출제자가 mysql이라는 것을 힌트를 얻어 문제를 풀어 보겠다. guest로 시도했더니 다음과 같은 플래그를 얻을 수 있었다. MYSQL 공식 문서를 이용해 찾던 중 위와 같은 구문이 있다는 것을 알 수 있었다. 그래서 위와 같은 형식을 이용해보기로 했다. sql test 사이트를 이용해 여러 구문들을 시도한 끝에 /loginAction?id=\&pass=UNION VALUES ROW(admin)#이라..

Web Security

KU-CTF ForceLength

해당 문제는 로컬파일을 도커를 통해 작성하였다. 1. cmd 명령어를 5글자 이상 입력하면 되지 않는 것을 알 수 있다. 2. string.puctuation이라는 것이 있게 된다면 안된다는 것도 알 수 있다. 3. 마지막으로 banlist 항목이 들어가면 안된다는 것을 알 수 있다. python의 puncatuation을 보았더니 많은 특수기호가 포함되어 있는 것을 확인하였다. http://localhost:5005/execute?cmd=>ls localhost:5005/execute?cmd= ls 다음과 같은 명령어를 입력하면 ls 명령어를 입력했을 때 ls명령어가 들어가있는 것을 확인할 수 있었다. wildcard를 사용하여 다음과 같은 명령어를 입력하면 결과를 얻을 수 있다. 별표를 ls로 대체하..

Web Security

KU-CTF PingService

해당 문제는 로컬파일을 도커에 올려 풀이를 진행하겠다. 해당 문제 소스부분이다. /source 부분중에 해당 부분을 보면 ping을 보내는 시스템 명령어가 있는 것을 알 수 있다. 그리고 이 구문의 형식을 맞춰준다면 시스템 명령어는 정상적으로 실행 될거라고 예상할 수 있다. 하지만 ip값을 정상적으로 입력함에도 불구하고 정상적으로 실행되지 않았다. /source를 다시보니 위 부분에서 명령어를 실행할 때, 띄어쓰기를 해야하는 것을 알 수 있었다. 만약 ip에 ls의 값을 준다면 시스템 명령어는 cd /app/mypinguser/"dir"+ && ping -c 2ls).read()식으로 전송하기 때문에 ls 명령어가 실행되지 않을 것이다. 그렇기에 띄어쓰기를 입력하기 위해 인코딩인 %20을 입력하고 pin..

Web Security

KU-CTF newapi

KU-CTF 대회하면서 Master Moon의 출제로, 해당 문제풀이 환경은 Docker로 구성되어있다. 해당 NewAPI 문제를 접속하면 나오는 첫 화면이다. 보는 것과 같이 ID와 Password 외에는 정보가 없다. 해당 화면을 Fiddler를 사용해 소스를 확인했다. 응답값을 보니 server:uvicorn이라는 것을 확인했다. uvicorn에 대해 알아보니 FastAPI 프레임워크를 사용한다고 한다. 그리고 Default로 /docs와 /redoc이라는 옵션이 있다는 것을 알아냈다. /redoc에 접근하니 다음과 같은 화면을 확인할 수 있었다. /redoc 화면 중에서 오른쪽 화면에서는 존재하는 URL이 있음을 확인했다. 접속 가능한 URL 중 loginAction에 접속해보니 허가되지 않은 것..

Web Security

Linux Wildcard란?

컴퓨터에서 특정 명령어로 명령을 내릴 때, 여러 파일을 한꺼번에 처리할 목적으로 사용하는 문자열 기호를 가리킨다. 리눅스에서는 파일을 검색하거나 다른 작업을 수행하기 위해 와일드카드를 사용할 수 있다. 여기서 와일드카드란 특정한 문자 패턴을 기반으로 문자열을 대체하여 파일을 찾는 기능이다. 아래는 리눅스에서 자주 사용되는 와일드카드 기호들이다. * : 0개 이상의 문자와 일치합니다. ? : 한 개의 문자와 일치합니다. [] : 대괄호 안에 있는 문자 중 하나와 일치합니다. [!] : 대괄호 안에 있는 문자를 제외한 다른 문자 중 하나와 일치합니다. {} : 중괄호 안에 있는 문자열 중 하나와 일치합니다. 예를 들어, ls *.txt 는 현재 디렉토리에서 확장자가 .txt 인 파일들을 나열합니다. 또한, ..

Web Security

OS Injection란?

OS Injection악의적인 사용자가 시스템에 액세스하여 실행되는 애플리케이션의 취약점을 이용하여 운영 체제(OS)에 악성 코드를 삽입하는 공격 기술이다.사용자 입력을 통해 악성 코드를 삽입하거나 시스템을 해킹하거나 제어하는 데 사용된다.SQL Injection 공격에서는 데이터베이스에 쿼리를 삽입하여 데이터를 탈취하거나 조작하는 것이 가능하다.OS Injection에서는 시스템 자원에 대한 액세스 권한을 획득하여 다양한 악성 행위를 수행할 수 있다. 매우 위험한 공격 기술로서, 시스템 보안에 매우 큰 위협을 끼친다. 따라서 시스템 보안 강화를 위해 취약점을 해결하고, 보안 업데이트를 정기적으로 적용하는 것이 중요하다. OS Injection 식별한 경우 몇 가지 초기 명령을 실행하여 손상된 시스템에 ..

Android Security

NDK(Native Development Kit)란?

NDK(Native Development KIT) - C와 C++과 같은 네이티브 코드로 작성된 안드로이드 애플리케이션을 개발하기 위한 도구 모음 - 안드로이드 애플리케이션에 C와 C++ 코드를 쉽게 통합할 수 있음 -> 더 높은 성능이 필요한 애플리케이션 개발 가능함. - SDK와 함께 제공되며, CMake와 같은 빌드 시스템과 함께 사용 가능함 - 자바 이외의 네이티브 코드를 사용하기 위해 JNI 인터페이스가 존재해야 함 ※ CMake : Gradle과 함께 작동하여 네이티브 라이브러리를 빌드하는 외부 빌드 도구이다. ※ LLDB : Android studio에서 네이티브 코드를 디버깅할 때 사용하는 디버거이다. NDK가 필요한 경우 - 기기의 성능을 최대한 활용하여 짧은 시연 시간을 구현해야 함 -..

Android Security

JNI(Java Native Interface)이란?

JNI - Java Native Interface의 약자이다. - Java에서 네이티브 코드(C, C++, ASM 등)를 호출하고, 네이티브 코드에서 Java 메서드를 호출할 수 있게 해주는 프로그래밍 인터페이스이다. - JNI를 사용하면 Java와 네이티브 코드 간의 상호 운용성을 제공할 수 있다. - Java는 플랫폼 독립적인 언어이기 때문에, 네이티브 코드를 직접 호출할 수 없다. JNI 특징 - JNI를 사용하면 Java와 네이티브 코드 간의 인터페이스를 정의한다. - Java에서 네이티브 코드를 호출할 수 있다. - 네이티브 코드에서 Java 객체를 생성하고, Java 메서드를 호출할 수 있다. JNI의 활용성 - 이미 작성된 C/C++ 라이브러리를 Java에서 사용해야 하는 경우 - 성능이 중..

Android Security

Java, Kotlin이란?

Java - 객체 지향 프로그래밍 언어이다. - 1995년에 오라클에서 발표되었으며, 개발자들에게 많은 관심과 인기를 얻었다. Java 특징 - 플랫폼 독립성 : 운영체제나 하드웨어와 상관없이 실행될 수 있다. Java 컴파일러가 Java 코드를 바이트코드라는 중간 형태로 변환하고 JVM(Java Virtual Machine)이 이를 해당 운영체제에 맞게 해석하여 실행하기 때문이다. - 안전성과 보안성이 높은 언어 : 예외 처리와 가비지 컬렉션 같은 기능이 있어서 프로그램이 더욱 안정적이고 오류가 적은 형태로 실행될 수 있다. 또한 다양한 라이브러리와 프레임워크가 존재하여, 개발자들이 더욱 빠르고 쉽게 애플리케이션을 개발할 수 있도록 도와준다. - 다양한 분야에서의 사용 : 서버 애플리케이션, 모바일 애..

junnybottle
junny