해당 문제는 로컬파일을 도커에 올려 풀이를 진행하였다. 해당 문제 소스부분이다. KU-CTF 중 ForceLogin1 문제와 매우 유사하지만 table항목이 추가적으로 있다는 점을 알 수 있다. 그리고 banlist도 약간 다르다는 것도 알 수 있다. source 부분 중에서도 table 항목에서 sql injection을 해야한다고 생각을 들었다. 그리고 출제자가 mssql이라는 것을 힌트를 얻어 문제를 풀어 보겠다. MS SQL 공식 문서를 이용해 찾던 중 위와 같은 구문이 있다는 것을 알 수 있었다. 그래서 위와 같은 형식을 이용해보기로 했다. (values (admin,1)+as+MyTable(id,password)&id=admin&pass=1이라는 구문을 얻을 수 있었다. 그리고 저번 1번 문제..
해당 문제는 로컬파일을 도커에 올려 풀이를 진행하였다. 해당 문제 소스부분이다. 화면을 보면 banlist에 많은 내용들이 들어가있는 것을 알 수 있었다. source 부분 중에서도 id 항목에서 admin을 입력을 하고 password 부분에서 sql injection을 해야한다고 생각을 들었다. 그리고 출제자가 mysql이라는 것을 힌트를 얻어 문제를 풀어 보겠다. guest로 시도했더니 다음과 같은 플래그를 얻을 수 있었다. MYSQL 공식 문서를 이용해 찾던 중 위와 같은 구문이 있다는 것을 알 수 있었다. 그래서 위와 같은 형식을 이용해보기로 했다. sql test 사이트를 이용해 여러 구문들을 시도한 끝에 /loginAction?id=\&pass=UNION VALUES ROW(admin)#이라..
해당 문제는 로컬파일을 도커를 통해 작성하였다. 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로 대체하..
해당 문제는 로컬파일을 도커에 올려 풀이를 진행하겠다. 해당 문제 소스부분이다. /source 부분중에 해당 부분을 보면 ping을 보내는 시스템 명령어가 있는 것을 알 수 있다. 그리고 이 구문의 형식을 맞춰준다면 시스템 명령어는 정상적으로 실행 될거라고 예상할 수 있다. 하지만 ip값을 정상적으로 입력함에도 불구하고 정상적으로 실행되지 않았다. /source를 다시보니 위 부분에서 명령어를 실행할 때, 띄어쓰기를 해야하는 것을 알 수 있었다. 만약 ip에 ls의 값을 준다면 시스템 명령어는 cd /app/mypinguser/"dir"+ && ping -c 2ls).read()식으로 전송하기 때문에 ls 명령어가 실행되지 않을 것이다. 그렇기에 띄어쓰기를 입력하기 위해 인코딩인 %20을 입력하고 pin..
KU-CTF 대회하면서 Master Moon의 출제로, 해당 문제풀이 환경은 Docker로 구성되어있다. 해당 NewAPI 문제를 접속하면 나오는 첫 화면이다. 보는 것과 같이 ID와 Password 외에는 정보가 없다. 해당 화면을 Fiddler를 사용해 소스를 확인했다. 응답값을 보니 server:uvicorn이라는 것을 확인했다. uvicorn에 대해 알아보니 FastAPI 프레임워크를 사용한다고 한다. 그리고 Default로 /docs와 /redoc이라는 옵션이 있다는 것을 알아냈다. /redoc에 접근하니 다음과 같은 화면을 확인할 수 있었다. /redoc 화면 중에서 오른쪽 화면에서는 존재하는 URL이 있음을 확인했다. 접속 가능한 URL 중 loginAction에 접속해보니 허가되지 않은 것..
컴퓨터에서 특정 명령어로 명령을 내릴 때, 여러 파일을 한꺼번에 처리할 목적으로 사용하는 문자열 기호를 가리킨다. 리눅스에서는 파일을 검색하거나 다른 작업을 수행하기 위해 와일드카드를 사용할 수 있다. 여기서 와일드카드란 특정한 문자 패턴을 기반으로 문자열을 대체하여 파일을 찾는 기능이다. 아래는 리눅스에서 자주 사용되는 와일드카드 기호들이다. * : 0개 이상의 문자와 일치합니다. ? : 한 개의 문자와 일치합니다. [] : 대괄호 안에 있는 문자 중 하나와 일치합니다. [!] : 대괄호 안에 있는 문자를 제외한 다른 문자 중 하나와 일치합니다. {} : 중괄호 안에 있는 문자열 중 하나와 일치합니다. 예를 들어, ls *.txt 는 현재 디렉토리에서 확장자가 .txt 인 파일들을 나열합니다. 또한, ..
OS Injection악의적인 사용자가 시스템에 액세스하여 실행되는 애플리케이션의 취약점을 이용하여 운영 체제(OS)에 악성 코드를 삽입하는 공격 기술이다.사용자 입력을 통해 악성 코드를 삽입하거나 시스템을 해킹하거나 제어하는 데 사용된다.SQL Injection 공격에서는 데이터베이스에 쿼리를 삽입하여 데이터를 탈취하거나 조작하는 것이 가능하다.OS Injection에서는 시스템 자원에 대한 액세스 권한을 획득하여 다양한 악성 행위를 수행할 수 있다. 매우 위험한 공격 기술로서, 시스템 보안에 매우 큰 위협을 끼친다. 따라서 시스템 보안 강화를 위해 취약점을 해결하고, 보안 업데이트를 정기적으로 적용하는 것이 중요하다. OS Injection 식별한 경우 몇 가지 초기 명령을 실행하여 손상된 시스템에 ..
NDK(Native Development KIT) - C와 C++과 같은 네이티브 코드로 작성된 안드로이드 애플리케이션을 개발하기 위한 도구 모음 - 안드로이드 애플리케이션에 C와 C++ 코드를 쉽게 통합할 수 있음 -> 더 높은 성능이 필요한 애플리케이션 개발 가능함. - SDK와 함께 제공되며, CMake와 같은 빌드 시스템과 함께 사용 가능함 - 자바 이외의 네이티브 코드를 사용하기 위해 JNI 인터페이스가 존재해야 함 ※ CMake : Gradle과 함께 작동하여 네이티브 라이브러리를 빌드하는 외부 빌드 도구이다. ※ LLDB : Android studio에서 네이티브 코드를 디버깅할 때 사용하는 디버거이다. NDK가 필요한 경우 - 기기의 성능을 최대한 활용하여 짧은 시연 시간을 구현해야 함 -..
JNI - Java Native Interface의 약자이다. - Java에서 네이티브 코드(C, C++, ASM 등)를 호출하고, 네이티브 코드에서 Java 메서드를 호출할 수 있게 해주는 프로그래밍 인터페이스이다. - JNI를 사용하면 Java와 네이티브 코드 간의 상호 운용성을 제공할 수 있다. - Java는 플랫폼 독립적인 언어이기 때문에, 네이티브 코드를 직접 호출할 수 없다. JNI 특징 - JNI를 사용하면 Java와 네이티브 코드 간의 인터페이스를 정의한다. - Java에서 네이티브 코드를 호출할 수 있다. - 네이티브 코드에서 Java 객체를 생성하고, Java 메서드를 호출할 수 있다. JNI의 활용성 - 이미 작성된 C/C++ 라이브러리를 Java에서 사용해야 하는 경우 - 성능이 중..
Java - 객체 지향 프로그래밍 언어이다. - 1995년에 오라클에서 발표되었으며, 개발자들에게 많은 관심과 인기를 얻었다. Java 특징 - 플랫폼 독립성 : 운영체제나 하드웨어와 상관없이 실행될 수 있다. Java 컴파일러가 Java 코드를 바이트코드라는 중간 형태로 변환하고 JVM(Java Virtual Machine)이 이를 해당 운영체제에 맞게 해석하여 실행하기 때문이다. - 안전성과 보안성이 높은 언어 : 예외 처리와 가비지 컬렉션 같은 기능이 있어서 프로그램이 더욱 안정적이고 오류가 적은 형태로 실행될 수 있다. 또한 다양한 라이브러리와 프레임워크가 존재하여, 개발자들이 더욱 빠르고 쉽게 애플리케이션을 개발할 수 있도록 도와준다. - 다양한 분야에서의 사용 : 서버 애플리케이션, 모바일 애..