DataModel
: DataModel element는 Peach root element의 child이며, 추가적인 child 요소들을 명시하며 Smart Fuzzing을 위한 데이터 블럭 구조를 정의한다.
ex) Number, Blob, String etc.
Attributes
* name (필수) : 가독성과 참조를 위해 사용된다. 이름에는 punctuation{ period(.) slash(\\) colon(:) }을 쓰지 않으며, 이름은 반드시 unique 해야한다.
이름 없이 값만 주어도 되나, 이름이 중복되어서는 안된다.
<Block name="Header"> <Number name="Value1" size="8"/> --------- O <Number name="Value2" size="8"/> --------- O
<Number size="8"/> -------- O<Number size="8"/> -------- O
</Block><Number name="Value" size="8"/> --------- X (이름 중복) <Number name="Value" size="8"/> --------- X (이름 중복)
* ref (옵션) : 다른 element를 참조한다. relative 혹은 fully qualified로 명시한다.
<Block ref="ElementName"/> ---- Relative by Name
<Block ref="namespace:parent.parent.child"/> ---- Fully Qualified with ns<Block ref="parent.parent.child"/> ---- Fully Qualified
* mutable (옵션) : element, block 혹은 datatype이 fuzzed 될 수 있는 지를 나타낸다. 기본 값은 true이다. non-mutable("false")로 설정하더라도 설정한 요소를 제외하고는 퍼징이 수행된다.
<DataModel name="Header"> <Number name="ReservedForFutureuse" size="8" mutable="false" /> -- 퍼징x <Number size="8" /> -- 퍼징 수행 <Number size="8" /> -- 퍼징 수행 <DataModel>
* constraint (옵션) : 데이터 요소가 incoming data를 적절하게 소비하고 있는 지의 확인을 돕는 scripting expression을 나타낸다. 반드시 true or false로 평가할 수 있어야하며, true는 data element로 적절하게 파싱이 되었음을 뜻하고 false는 error가 발생했음을 알린다.
expression에 사용 가능한 special variables은 다음과 같다.
└ element : data element instance
└ value : cracked data value. (해당 값은 string 또는 byte array로 cast된다.)
<!-- Operate on number and check result --> <Number name="constrainedNum" size="32" constraint="int(value) & 0xfefe == 5" />
<!-- Case insensitive equals --> <String constraint="value.lower() == 'peach'" /> <!-- Value contains peach --> <String constraint="value.find('peach') != -1" />
<!-- Length is less than 100 bytes --> <Blob constraint="len(value) < 100" />
Valid Child-Elements
* Blob :
* Block :
* Choice :
* Custom :
* Flag :
* Flags :
* Number :
* Padding :
* String :
* XmlAttribute :
* XmlElement :
* Relation :
* Fixup :
* Transformer :
* Placement :
'취약점 분석 > PeachFuzzer' 카테고리의 다른 글
[참조]PeachFuzzer - Flag (0) | 2017.12.06 |
---|---|
[참조]PeachFuzzer - Choice (0) | 2017.12.06 |
[참조]PeachFuzzer - Block (0) | 2017.12.06 |
[참조]PeachFuzzer - Blob (0) | 2017.12.06 |
[종합] Peach Fuzzer Tutorial - Write Peach Pit (0) | 2017.12.06 |