RyanJsonFuzzer.dict 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312
  1. # =====================================================
  2. # RyanJson Fuzzer Dictionary
  3. # 用于 libFuzzer 的 JSON 模糊测试字典
  4. # =====================================================
  5. # ===================
  6. # 基本 JSON 关键字
  7. # ===================
  8. "true"
  9. "false"
  10. "null"
  11. # ===================
  12. # JSON 结构符号
  13. # ===================
  14. # 对象
  15. "{"
  16. "}"
  17. ":"
  18. ","
  19. # 数组
  20. "["
  21. "]"
  22. # 字符串
  23. "\""
  24. # ===================
  25. # 常见键名
  26. # ===================
  27. "\"key\""
  28. "\"value\""
  29. "\"name\""
  30. "\"id\""
  31. "\"data\""
  32. "\"status\""
  33. "\"error\""
  34. "\"message\""
  35. "\"type\""
  36. "\"result\""
  37. "\"code\""
  38. "\"items\""
  39. "\"count\""
  40. "\"total\""
  41. "\"list\""
  42. # ===================
  43. # 整数值
  44. # ===================
  45. "0"
  46. "1"
  47. "-1"
  48. "123"
  49. "-123"
  50. "2147483647"
  51. "-2147483648"
  52. "9223372036854775807"
  53. "-9223372036854775808"
  54. "999999999999999999999999999"
  55. "-999999999999999999999999999"
  56. # ===================
  57. # 浮点数值
  58. # ===================
  59. "0.0"
  60. "0.1"
  61. "-0.1"
  62. "3.14159"
  63. "3.141592653589793"
  64. "1.7976931348623157e308"
  65. "-1.7976931348623157e308"
  66. "2.2250738585072014e-308"
  67. "1e10"
  68. "1e-10"
  69. "-1e10"
  70. "-1e-10"
  71. "1E10"
  72. "1E-10"
  73. "1e+10"
  74. "1.5e+9999"
  75. "1e9999"
  76. "-1e9999"
  77. "123e100000"
  78. "-123e100000"
  79. "123e-10000000"
  80. "123.456e-789"
  81. # ===================
  82. # 特殊浮点数边界
  83. # ===================
  84. "0.000001"
  85. "0.0000001"
  86. "999999.999999"
  87. "1000000.0"
  88. "0.123456789012345678901234567890"
  89. # ===================
  90. # 科学计数法错误
  91. # ===================
  92. "1e"
  93. "1e+"
  94. "1e-"
  95. "1eE"
  96. "1eAbc"
  97. ".1e10"
  98. "1."
  99. "1.e10"
  100. "-.1"
  101. # ===================
  102. # 前导零错误
  103. # ===================
  104. "00"
  105. "01"
  106. "0123"
  107. "-00"
  108. "-01"
  109. "-0123"
  110. "00.123"
  111. # ===================
  112. # 简单结构
  113. # ===================
  114. "{}"
  115. "[]"
  116. "{\"a\":1}"
  117. "{\"a\":\"b\"}"
  118. "[1]"
  119. "[1,2,3]"
  120. "[true,false,null]"
  121. # ===================
  122. # 嵌套结构
  123. # ===================
  124. "{\"obj\":{\"nested\":true}}"
  125. "{\"arr\":[1,2,3]}"
  126. "[{\"id\":1},{\"id\":2}]"
  127. "{\"deep\":{\"nest\":{\"more\":{\"inner\":{\"flag\":true}}}}}"
  128. "[[[[[[1]]]]]]"
  129. "{\"a\":{\"b\":{\"c\":{\"d\":{\"e\":null}}}}}"
  130. # ===================
  131. # 混合类型示例
  132. # ===================
  133. "{\"int\":16,\"double\":16.89,\"string\":\"hello\",\"bool\":true,\"null\":null}"
  134. "[16,16.89,\"hello\",true,false,null]"
  135. "{\"mixed\":[1,\"two\",true,null,{\"nested\":\"obj\"}]}"
  136. # ===================
  137. # 转义字符
  138. # ===================
  139. "\\n"
  140. "\\r"
  141. "\\t"
  142. "\\b"
  143. "\\f"
  144. "\\\""
  145. "\\\\"
  146. "\\/"
  147. "\\u0000"
  148. "\\u0020"
  149. "\\u00FF"
  150. "\\uFFFF"
  151. # ===================
  152. # Unicode 转义
  153. # ===================
  154. "\\u4F60\\u597D"
  155. "\\u4E16\\u754C"
  156. "\\uD83D\\uDE00"
  157. "\\uD83C\\uDF0D"
  158. # Unicode 代理对边界
  159. "\\uD800\\uDC00"
  160. "\\uDBFF\\uDFFF"
  161. # 错误的 Unicode
  162. "\\uD800"
  163. "\\uDFFF"
  164. "\\uZZZZ"
  165. "\\u12"
  166. "\\u123"
  167. "\\uD800\\u0041"
  168. # ===================
  169. # 特殊字符串
  170. # ===================
  171. "{\"empty\":\"\"}"
  172. "{\"space\":\" \"}"
  173. "{\"tab\":\"\\t\"}"
  174. "{\"newline\":\"\\n\"}"
  175. "{\"unicode\":\"\\u4E2D\\u6587\"}"
  176. "{\"emoji\":\"\\uD83D\\uDE00\"}"
  177. # ===================
  178. # RESTful 风格响应
  179. # ===================
  180. "{\"status\":200,\"message\":\"OK\"}"
  181. "{\"status\":404,\"error\":\"Not Found\"}"
  182. "{\"status\":500,\"error\":\"Internal Server Error\"}"
  183. "{\"code\":0,\"data\":null}"
  184. "{\"success\":true,\"data\":[]}"
  185. "{\"success\":false,\"message\":\"Error\"}"
  186. # ===================
  187. # 分页响应
  188. # ===================
  189. "{\"page\":1,\"pageSize\":10,\"total\":100,\"data\":[]}"
  190. "{\"offset\":0,\"limit\":20,\"items\":[]}"
  191. # ===================
  192. # 重复键(测试处理)
  193. # ===================
  194. "{\"key\":1,\"key\":2}"
  195. "{\"a\":\"first\",\"a\":\"second\"}"
  196. "{\"dup\":true,\"dup\":false}"
  197. # ===================
  198. # 语法错误示例
  199. # ===================
  200. # 缺少引号
  201. "{a:1}"
  202. "{key:\"value\"}"
  203. # 缺少冒号
  204. "{\"a\" 1}"
  205. # 缺少逗号
  206. "{\"a\":1 \"b\":2}"
  207. "[1 2 3]"
  208. # 多余逗号
  209. "{\"a\":1,}"
  210. "[1,2,3,]"
  211. "{,}"
  212. "[,]"
  213. "[1,,2]"
  214. # 未闭合
  215. "{\"a\":1"
  216. "[1,2,3"
  217. "{\"str\":\"unclosed"
  218. "["
  219. "{"
  220. # 单引号(非法)
  221. "{'a':'b'}"
  222. # 注释(非法)
  223. "// comment"
  224. "/* block */"
  225. "{\"a\":1}// trailing"
  226. # ===================
  227. # 控制字符
  228. # ===================
  229. "\x00"
  230. "\x01"
  231. "\x1F"
  232. "\x7F"
  233. # ===================
  234. # 非法字节序列
  235. # ===================
  236. "\xC0\xAF"
  237. "\xFF\xFF"
  238. "\xFE\xFF"
  239. "\x80"
  240. "\xBF"
  241. # ===================
  242. # 边缘 token
  243. # ===================
  244. "True"
  245. "False"
  246. "Null"
  247. "TRUE"
  248. "FALSE"
  249. "NULL"
  250. "tru"
  251. "fals"
  252. "nul"
  253. # ===================
  254. # 极端嵌套
  255. # ===================
  256. "[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]"
  257. "{\"a\":{\"a\":{\"a\":{\"a\":{\"a\":{\"a\":{\"a\":{\"a\":{\"a\":{\"a\":{}}}}}}}}}}}"
  258. # ===================
  259. # 超长字符串
  260. # ===================
  261. "{\"long\":\"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"}"
  262. # ===================
  263. # 空白字符变体
  264. # ===================
  265. " { } "
  266. "\x09{\x09}\x09"
  267. "\x0a[\x0a]\x0a"
  268. "\x0d\x0a{\x0d\x0a}\x0d\x0a"
  269. "{ \"a\" : 1 }"
  270. "[ 1 , 2 , 3 ]"
  271. # ===================
  272. # 二进制边界测试
  273. # ===================
  274. "\x00\x00\x00\x00"
  275. "\xFF\xFF\xFF\xFF"
  276. "\x01\x00\x00\x00"
  277. "\x00\x00\x00\x01"