2024/04 5

RACC와 CACC 만족하는 테스트 케이스 쉽게찾기

소프트웨어 동적분석에서 Logic Coverage로 분류되는 RACC(Restricted Active Clause Coverage)와 CACC(Correlated Active Clause Coverage)가 있다. RACC와 CACC를 만족하는 test case를 쉽게 찾는 방법을 알아보자. 좀 더 정확하게는 RACC와 CACC의 차이점 구별하는 방법을 쉽게 생각해보자. Predicates 와 Clauses 우선 기본 용어이다. predicate(술어)는 boolean으로 평가되는 표현식(expression)을 뜻한다. clause(절)은 logical operators( ! && || ..) 이 없는 predicate를 뜻한다. (a = n*o) 아래 예시에서 ..

cFS 설치 및 실행하는방법

Part1 - Setup아래 깃허브 링크에서 cFS를 git clone 해준다.https://github.com/nasa/cFS GitHub - nasa/cFS: The Core Flight System (cFS)The Core Flight System (cFS). Contribute to nasa/cFS development by creating an account on GitHub.github.comgit clone https://github.com/nasa/cFS.gitcd cFS# submodule 설치git checkout bootes-rc2git submodule initgit submodule update 이때 submodule update를 해주면 아래와 같이 뜨며cFS/apps/*cFS/..

공부/SPACE 2024.04.22

Canary 우회 ( __fortify_fail() 및 환경변수env를 이용한 Arbitrary Read)

1. flag 값을 전역변수(주소를 알고있는) 에 저장하는 루틴이 있음 2. 주어진 함수나 ROP를 이용해 write할 수 있는 방법이 없음(출력 -> leak 불가) 3. __fortify_fail() 을 이용하여 환경변수에서 파일 이름을 가져오는 경우 사용할 수 있는 canary leak 방법이다. int __cdecl main(int argc, const char **argv, const char **envp) { char buf[256]; // [esp+4h] [ebp-10Ch] BYREF unsigned int canary; // [esp+104h] [ebp-Ch] canary = __readgsdword(0x14u); read_flag(); read(0, buf, 512); return 0; ..

CTF 2024.04.17

C언어 가변인자함수 구현 (...)

C 언어에서 ... 키워드는 가변 인자 목록(variadic arguments)을 의미합니다. 이 키워드는 함수가 고정된 수의 인자 대신 다양한 수의 인자를 받을 수 있게 해 줍니다. 이는 특히 여러 다른 타입의 인자를 다루거나, 호출 시점에 정확한 인자의 수가 결정되지 않는 경우에 유용합니다. 가변 인자 함수의 구현 방법 가변 인자 함수를 구현할 때는 다음과 같은 표준 라이브러리 매크로를 사용합니다: va_list: 인자 목록을 처리하기 위한 변수 타입입니다. va_start: 가변 인자 목록의 초기화를 시작합니다. 첫 번째 매크로 인자는 va_list 타입이고, 두 번째는 가변 인자 바로 앞의 고정된 인자입니다. va_arg: 가변 인자 목록에서 다음 인자를 가져옵니다. 이 매크로는 리스트와 반환할 ..

공부/이모저모 2024.04.12

Stub 함수란

Stub이란? "Stub"은 소프트웨어 개발과 테스트에서 사용되는 용어로, 특히 단위 테스트에서 중요한 역할을 합니다. Stub은 실제로 구현된 복잡한 로직이나 외부 시스템과의 연결을 대신하는 간단하고 제어 가능한 구현을 제공합니다. 이를 통해 개발자는 테스트하고자 하는 부분에 집중할 수 있으며, 테스트가 외부 요소의 영향을 받지 않도록 보장합니다. Stub의 주요 용도: 의존성 제거: Stub을 사용하여 데이터베이스, 네트워크 호출, 하드웨어 입력 등 외부 시스템과의 의존성을 제거할 수 있습니다. 테스트 간소화: 테스트할 시스템을 보다 단순화하여, 오류를 찾기 쉽고 테스트를 빠르게 실행할 수 있습니다. 결과 예측 가능: Stub은 예측 가능한 값을 반환함으로써 테스트 결과의 일관성을 보장합니다. 상태 ..

공부 2024.04.12
728x90