본문 바로가기

[참조]PeachFuzzer - Flags Flags: Flags element는 비트 크기의 'flag'들의 집합이다. -- Flag 들을 묶음 Attributes* name : Flags element 이름 (선택)* size : 크기(in bits) (필수)* mutable : 데이터 가변성 (기본 값 : true) (선택) Valid Child-Elements* Fixup* Flag* Placement* Relation* Transformer
[참조]PeachFuzzer - Flag Flag: Flag element는 Flags container의 특정 bit field를 규정한다. -- Flags container - 이름,position, size - value까지 설정 Attributes* name : 이름 - 선택* size : 비트 크기 - 필수* position : zero based position flag starts - 필수* value : Blob에 포함된 default 값* valueType : default value가 표현된 format (hex, string, literal)* mutable : element 가변성 (mutated 되어야한다!!) - 선택 Valid Child-Elements* Relation
[참조]PeachFuzzer - Choice Choice: Choice element는 DataModel 또는 Block의 child이다. Choice Element는 어떤 서브-elements가 유효한지 나타내는 데 사용되며, 오직 하나만 선택된다.(프로그래밍에서 switch문을 떠올리면 이해가 쉽다.) Type1이 유효하다면 Type1 Block 내용을 수행하고 Type2가 유효하다면 ... 이하 생략.통상적인 switch문에 더 가깝게 사용하려면 decision이 token에 의해 결정돼야한다. AttributesRequired로 명시한 것을 제외하고는 optional하다.* name : choice section 이름 / [Required]* minOccurs : choice 출현의 최소 횟수 * maxOccurs : choice 출현의 최..
[참조]PeachFuzzer - Block Block: Block element는 DataModel 혹은 Block의 child이다. Block들은 하나 이상의 Number 혹은 String과 같은 data element들을 논리적 구조체로 통합시키는 데 사용된다. (Block으로 묶인다고 생각하면 이해가 쉽다.)Block과 DataModel은 매우 유사하며 location이 유일한 차이점이다. DataModel은 top level element고, Block은 DataModel의 child이다. 당연히 Block도 DataModel처럼 다른 Block 혹은 DataModel의 template으로 쓰일 수 있다. --- DataModel로 치환하더라도 문제 없다. AttributesRequired로 명시한 것을 제외하고는 모두 optional하다..
[참조]PeachFuzzer - Blob Blob: Blob element는 DataModel 또는 Block의 child element이다. Blob들은 일반적으로 type definition 혹은 format이 부족한 데이터를 나타낼 때 사용된다.(포맷을 모를 경우 DataModel에 을 주고 돌리면 무작위로 퍼징이 수행된다.) Attributes필요(Required)하다고 명시한 속성을 제외하고는 전부 optional하다.* name : blob의 이름 / [Required]* value : blob에 포함된 default value* length : blob size* ref : blob의 template으로 사용하기 위한 data model 참조* valueType : default 값이 표현될 형식: hex, string, or li..
[참조] PeachFuzzer - DataModel DataModel: DataModel element는 Peach root element의 child이며, 추가적인 child 요소들을 명시하며 Smart Fuzzing을 위한 데이터 블럭 구조를 정의한다.ex) Number, Blob, String etc. Attributes* name (필수) : 가독성과 참조를 위해 사용된다. 이름에는 punctuation{ period(.) slash(\\) colon(:) }을 쓰지 않으며, 이름은 반드시 unique 해야한다.이름 없이 값만 주어도 되나, 이름이 중복되어서는 안된다. --------- O --------- O -------- O -------- O --------- X (이름 중복) --------- X (이름 중복) * ref (옵션) : 다른..
[종합] Peach Fuzzer Tutorial - Write Peach Pit [피치 퍼저 튜토리얼 - Pit 파일 만들기] 피치 퍼저 커뮤니티 - http://community.peachfuzzer.com/v3/PeachPit.html Peach 3 Pit FilesPeach Pit은 퍼징을 돌리기 위해 필요한 정보를 담고 있는 XML 파일을 말한다.피치 핏은 다음과 같은 항목들을 포함한다. 클릭하면 원문으로 이동한다. * General Configuration * Data Modeling * State Modeling * Agents and Monitors * Test Configuration하나씩 살펴보자. General Configuration└ Include : 다른 Peach Pit 파일의 data model과 data sets을 재사용하고자 특정 namespace로 i..