본문 바로가기

취약점 분석/PeachFuzzer

[참조] PeachFuzzer - DataModel

반응형

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

  <Number name="Value" size="8"/> --------- X (이름 중복)
  <Number name="Value" size="8"/> --------- X (이름 중복)
</Block>


* 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