日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++代码健壮性_复活Navex-使用图查询进行代码分析(上)

發布時間:2024/7/23 c/c++ 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++代码健壮性_复活Navex-使用图查询进行代码分析(上) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

從了解到修復 Navex, 其中花了一年多, 從對自動化代碼審計一無所知到學習PL/Static Analysis, 翻閱十幾年前的文檔, 補全Gremlin Step, 理解AST, CFG, DDG, PDG, CPG, 也感謝z3r0yu師傅和Gaba哥的的交流指導.
本文重點在于靜態分析 Joern-圖查詢部分, 后面的動態分析自動生成EXP部分是剪枝的過程, 也相對好實現, 各位有興趣的話, 我會在下一篇文章繼續談論.
這里不得不說的Navex實際的效果沒有描述的那么優秀, 以及作者故意在代碼里埋坑, 畢竟人家也研究了快十年, 留一手也是正常的.
這里不是說一定非要完成/使用Navex, 而是借鑒新鮮的學術思想, 結合實際環境實現相關功能來降低排查漏洞成本.

預備知識

Navex 是什么

下面這段摘自z3r0yu師傅的博文 Navex

NAVEX->Precise and Scalable Exploit Generation for Dynamic Web Applications
出處:27th USENIX Security Symposium
作者:Abeer Alhuzali, Rigel Gjomemo, Birhanu Eshete, and V.N.
單位:Venkatakrishnan University of Illinois at Chicago
資料:Paper | Github
作者在本文中提出了一種以靜態分析作為指導,結合動態分析自動驗證漏洞并構造可用exploit的工具NAVEX。
研究問題:
  • 解決以往自動化審計的誤報以及必須結合人工參與構造Exp的問題;
  • 靜態分析雖然覆蓋率高,但是對于具有動態特性的語言其建模困難。解決方案:
  • 靜態分析階段:使用符號執行創建Web應用程序的各個模塊的行為模型。標記出包含潛在漏洞點的模塊;
  • 動態分析階段:使用Web爬蟲和concolic執行器去發現可能導致攻擊者進入易受攻擊模塊的可能的HTTP導航路徑,之后使用約束求解器生成一組對漏洞進行利用的HTTP輸入序列。
    方案優點:.
  • 動態分析與靜態分析相結合提升了性能,可以應用于大型應用程序;
  • 是一種多類型漏洞的Exp生成框架。
    NAVEX分析了320萬行PHP代碼,自動構建并利用204個漏洞,其中有195個與SQLI和XSS相關,而9個與邏輯漏洞相關。此外NAVEX是第一個可以自動發現并利用EAR漏洞的方案。
  • Joern 靜態分析核心模塊

    Joern 是ShiftLeft公司開發的用于C/C++代碼健壯性分析的平臺. 其核心思想: 將代碼分析問題轉化為用Gremlin去遍歷存儲在Neo4j中的CPG(代碼屬性圖). 其商業產品 Ocular 支持多種語言, 也側面證明 CPG 作為一種 IR, 是可以解決大部分語言的審計問題.

    PS. 靜態分析這部分其實可以使用Codeql代替.

    CPG 代碼屬性圖

    CPG (代碼屬性圖) 的論文可以參考

    Modeling and Discovering Vulnerabilities with Code Property Graphs

    這里用幾張圖簡要描述一下

    原始代碼

    代碼對應的AST(抽象語法樹)

    代碼對應的CFG(控制流程圖)

    代碼對應的PDG(程序依賴圖)

    ](https://blog.riskivy.com/wp-content/uploads/2020/05/4afab12ab74238d1b09a90517beabf9e.png)

    代碼對應的CPG(代碼屬性圖)

    其實以上的信息都可以從AST中獲取, 只是后續的操作提高了單位節點的信息密集度, 對分析過程更友好

    TinkerPop 2.x Gremlin 圖查詢語言

    由于Navex作者是2012年開始研究這個方向, 所以大部分依賴都是遠古版本, 我盡可能的修復了一些, 其中TinkerPop 2.x Gremlin由于官方已經更新 TinkerPop 3.x, 2.x 已經不再維護了, 全網只有一個github上面的歷史文檔

    spmallette/GremlinDocs: Gremlin Documentation and Samples

    或者閱讀TinkerPop 2.x Gremlin的實現源碼

    tinkerpop/gremlin: A Graph Traversal Language (no longer active – see Apache TinkerPop).

    其實更新為最新版的TP3(文檔, 性能和語法都更好), 我也嘗試過, 但是整個框架的Gremlin step需要重寫, 不利于前期探索, TP2目前還夠用, 所以如果后續有需要, 可以考慮整體重構.

    目前的python-joern的實現方式是通過HTTP請求發送Gremlin查詢語言(Groovy實現)到Neo4j的Gremlin插件

    為什么不用Neo4j自帶的Cypher, 因為Gremlin支持Groovy語法, 有更強的操作性, 也兼容其他圖數據庫

    Tinkerpop 2.x Gremlin 基礎知識

    首先得了解Groovy的相關語法

    精通 Groovy

    TinkerPop 2.x Gremlin 文檔查看這個

    tinkerpop/gremlin: A Graph Traversal Language (no longer active – see Apache TinkerPop).

    下面是我添加了一些注釋, 方便理解

    it

    it 是groovy閉包中的默認參數

    list.each {println it }//等于list.each { obj ->println obj }

    id

    Gets the unique identifier of the element.

    每個節點/邊都有唯一的id

    gremlin> v = g.V("name", "marko").next() ==>v[1] gremlin> v.id ==>1 gremlin> g.v(1).id ==>1

    V

    The vertex iterator for the graph. Utilize this to iterate through all the vertices in the graph. Use with care on large graphs unless used in combination with a key index lookup.

    在 TP2中

    g.V() 代表所有節點

    g.v(1) 注意這里是小寫的v, 可以用node_id取值

    g.V("name", "marko") 返回 v.name=="marko" 的節點

    gremlin> g.V ==>v[3] ==>v[2] ==>v[1] ==>v[6] ==>v[5] ==>v[4] gremlin> g.V("name", "marko") ==>v[1] gremlin> g.V("name", "marko").name ==>marko

    E

    The edge iterator for the graph. Utilize this to iterate through all the edges in the graph. Use with care on large graphs.

    返回節點的所有邊

    gremlin> g.E ==>e[10][4-created->5] ==>e[7][1-knows->2] ==>e[9][1-created->3] ==>e[8][1-knows->4] ==>e[11][4-created->3] ==>e[12][6-created->3] gremlin> g.E.weight ==>1.0 ==>0.5 ==>0.4 ==>1.0 ==>0.4 ==>0.2

    in

    Gets the adjacent vertices to the vertex.

    返回當前node的父節點

    參數的調用可以不寫 ()

  • 沒有參數的調用可以不寫 ()
  • 這個技巧在后面存儲路徑信息的時候會用到
  • g.v(4).inE.outV == g.v(4).in

    g.v(4).outE.inV == g.v(4).out

    gremlin> v = g.v(4) ==>v[4] gremlin> v.inE.outV ==>v[1] gremlin> v.in ==>v[1] gremlin> v = g.v(3) ==>v[3] gremlin> v.in("created") ==>v[1] ==>v[4] ==>v[6] gremlin> v.in(2,'created') ==>v[1] ==>v[4] gremlin> v.inE("created").outV ==>v[1] ==>v[4] ==>v[6] gremlin> v.inE(2,'created').outV[0] ==>v[1]

    out

    Gets the out adjacent vertices to the vertex.

    返回當前node的子節點

    gremlin> v = g.v(1) ==>v[1] gremlin> v.outE.inV ==>v[2] ==>v[4] ==>v[3] gremlin> v.out ==>v[2] ==>v[4] ==>v[3] gremlin> v.outE('knows').inV ==>v[2] ==>v[4] gremlin> v.out('knows') ==>v[2] ==>v[4] gremlin> v.out(1,'knows') ==>v[2]

    both

    Get both adjacent vertices of the vertex, the in and the out.

    both 操作表示node 的相鄰節點, 也就有有edge 存在, 且忽略 edge 的方向

    gremlin> v = g.v(4) ==>v[4] gremlin> v.both ==>v[1] ==>v[5] ==>v[3] gremlin> v.both('knows') ==>v[1] gremlin> v.both('knows', 'created') ==>v[1] ==>v[5] ==>v[3] gremlin> v.both(1, 'knows', 'created') ==>v[1]

    Transform

    Transform steps take an object and emit a transformation of it.

    Transform 操作可以返回其后面閉包里面的值

    Identity turns an arbitrary object into a “pipeline”.

    gremlin> x = [1,2,3] ==>1 ==>2 ==>3 gremlin> x._().transform{it+1} ==>2 ==>3 ==>4 gremlin> x = g.E.has('weight', T.gt, 0.5f).toList() ==>e[10][4-created->5] ==>e[8][1-knows->4] gremlin> x.inV ==>[StartPipe, InPipe] ==>[StartPipe, InPipe] gremlin> x._().inV ==>v[5] ==>v[4]

    has

    使用has可以做一些簡單的屬性判斷

    Allows an element if it has a particular property. Utilizes several options for comparisons through T:

    • T.gt – greater than
    • T.gte – greater than or equal to
    • T.eq – equal to
    • T.neq – not equal to
    • T.lte – less than or equal to
    • T.lt – less than
    • http://T.in – contained in a list
    • T.notin – not contained in a list

    It is worth noting that the syntax of has is similar to g.V("name", "marko"), which has the difference of being a key index lookup and as such will perform faster. In contrast, this line, g.V.has("name", "marko"), will iterate over all vertices checking the name property of each vertex for a match and will be significantly slower than the key index approach. All that said, the behavior of has is dependent upon the underlying implementation and the above description is representative of most Blueprints implementations. For instance, Titan will actually try to use indices where it sees the opportunity to do so. It is therefore important to understand the functionality of the underlying database when writing traversals.

    gremlin> g.V.has("name", "marko").name ==>marko gremlin> g.v(1).outE.has("weight", T.gte, 0.5f).weight ==>0.5 ==>1.0 gremlin> g.V.has('age').name ==>vadas ==>marko ==>peter ==>josh gremlin> g.V.has('age',T.in,[29,32]) ==>v[1] ==>v[4] gremlin> g.V.has('age').has('age',T.notin, [27,35]).name ==>marko ==>josh

    [i]

    A index filter that emits the particular indexed object.

    通過下標可以進行取值, 跟Python的數組相似

    gremlin> g.V[0].name ==>lop

    [i..j]

    A range filter that emits the objects within a range.

    下標也可以取范圍. 前閉后開, [0,2)

    gremlin> g.V[0..2].name ==>lop ==>vadas ==>marko gremlin> g.V[0..<2].name ==>lop ==>vadas

    filter

    Decide whether to allow an object to pass. Return true from the closure to allow an object to pass.

    filter操作就是通過一個閉包函數來過濾輸入

    //filter有時會失效,最好用has() g.v(1).outE.has('label','created') //g.v(1).outE.filter{it.label=='created'}groovy
    in filter{}it.xxx() 可能返回 pipe 對象
    可以使用it.xxx().next()
    來獲取第一個節點gremlin> g.V.filter{it.age > 29}.name ==>peter

    dedup

    Emit only incoming objects that have not been seen before with an optional closure being the object to check on.

    用于去除重復元素

    gremlin> g.v(1).out.in ==>v[1] ==>v[1] ==>v[1] ==>v[4] ==>v[6] gremlin> g.v(1).out.in.dedup() ==>v[1] ==>v[4] ==>v[6]

    as

    Emits input, but names the previous step.

    給一個操作設置一個別名, 配合select, loop

    g.v(1).as('sloop').outE.inV.loop('sloop'){it.loops < 2}

    循環體為 .outE.inV. 等價

    g.v(1).outE.inV.loop(2){it.loops < 2}

    gremlin> g.V.as('x').outE('knows').inV.has('age', T.gt, 30).back('x').age ==>29

    select

    Select the named steps to emit after select with post-processing closures.

    select 一般配合as一起使用

    gremlin> g.v(1).as('x').out('knows').as('y').select ==>[x:v[1], y:v[2]] ==>[x:v[1], y:v[4]] gremlin> g.v(1).as('x').out('knows').as('y').select(["y"]) ==>[y:v[2]] ==>[y:v[4]] gremlin> g.v(1).as('x').out('knows').as('y').select(["y"]){it.name} ==>[y:vadas] ==>[y:josh] gremlin> g.v(1).as('x').out('knows').as('y').select{it.id}{it.name} ==>[x:1, y:vadas] ==>[x:1, y:josh]

    sideEffect

    Emits input, but calls a side effect closure on each input.

    官方示例中的是交互console, 可以延伸到下一條語句

    gremlin> youngest = Integer.MAX_VALUE ==>2147483647 gremlin> g.V.has('age').sideEffect{youngest=youngest>it.age?it.age:youngest} ==>v[2] ==>v[1] ==>v[6] ==>v[4] gremlin> youngest ==>27

    sideEffect可以在運行過程中執行指定操作, 但是不會影響遍歷過程, 主要用于收集信息, 盡量不要用于改變節點信息

    在python-joern中, sideEffect的作用域只在當前遍歷過程/語句, 這里比較坑人, 大家注意

    g.V.has('age').sideEffect{youngest=youngest>it.age?it.age:youngest}.transform{youngest}

    ifThenElse

    Allows for if-then-else conditional logic.

    gremlin> g.v(1).out.ifThenElse{it.name=='josh'}{it.age}{it.name} ==>vadas ==>32 ==>lop

    判斷條件選擇分支執行, 這邊傾向于單獨使用groovy的 if語句來處理, 邏輯更清晰

    loop

    Loop over a particular set of steps in the pipeline. The first argument is either the number of steps back in the pipeline to go or a named step. The second argument is a while closure evaluating the current object. The it component of the loop step closure has three properties that are accessible. These properties can be used to reason about when to break out of the loop.

    • it.object: the current object of the traverser.
    • it.path: the current path of the traverser.
    • it.loops: the number of times the traverser has looped through the loop section.

    The final argument is known as the “emit” closure. This boolean-based closure will determine wether the current object in the loop structure is emitted or not. As such, it is possible to emit intermediate objects, not simply those at the end of the loop.

    gremlin> g.v(1).out.out ==>v[5] ==>v[3] gremlin> g.v(1).out.loop(1){it.loops<3} ==>v[5] ==>v[3] gremlin> g.v(1).out.loop(1){it.loops<3}{it.object.name=='josh'} ==>v[4]

    loop應該這里最關鍵的操作, 可以參考

    Loop Pattern · tinkerpop/gremlin Wiki

    大部分的查詢操作都需要loop進行配合

    g.v(1).out.loop(1){it.loops<3}{it.object.name=='josh'}

    大概等價于

    arr = [] for (i=1; i<3; i++){if(it.object.name=='josh'){arr.add(it.object)} } return arr

    結合后面的enablePath, 可以在遍歷的過程中獲取當前所在的完整路徑信息

    g.v(1).out.loop(1){it.loops<3}{it.object.name=='josh' && it.path.contains(g.v(4))}.enablePath

    大概等價于

    arr = [] for (i=1; i<3; i++){if(it.object.name=='josh' && it.path.contains(g.v(4))){arr.add(it.object)} } return arr

    Pipe.enablePath

    If the path information is required internal to a closure, Gremlin doesn’t know that as it can not interpret what is in a closure. As such, be sure to use GremlinPipeline.enablePath() if path information will be required by the expression.

    主要是保存路徑信息

    gremlin> g.v(1).out.loop(1){it.loops < 3}{it.path.contains(g.v(4))} Cannot invoke method contains() on null object Display stack trace? [yN] gremlin> g.v(1).out.loop(1){it.loops < 3}{it.path.contains(g.v(4))}.enablePath() ==>v[5] ==>v[

    Pipe.next

    Gets the next object in the pipe or the next n objects. This is an important notion to follow when considering the behavior of the Gremlin Console. The Gremlin Console iterates through the pipeline automatically and outputs the results. Outside of the Gremlin Console or if more than one statement is present on a single line of the Gremlin Console, iterating the pipe must be done manually. Read more about this topic in the Gremlin Wiki Troubleshooting Page.

    There are some important things to note in the example below. Had the the first line of Gremlin been executed separately, as opposed to being placed on the same line separated by a semi-colon, the name of the vertex would have changed because the Gremlin Console would have automatically iterated the pipe and processed the side-effect.

    gremlin> g.v(1).sideEffect{it.name="same"};g.v(1).name ==>marko gremlin> g.v(1).sideEffect{it.name="same"}.next();g.v(1).name ==>same gremlin> g.V.sideEffect{it.name="same-again"}.next(3);g.V.name ==>same-again ==>same-again ==>same-again ==>peter ==>ripple ==>josh

    next 操作可以從pipe中取出對象 // pipe返回的一般都是生成器對象

    path

    Gets the path through the pipeline up to this point, where closures are post-processing for each object in the path. If the path step is provided closures then, in a round robin fashion, the closures are evaluated over each object of the path and that post-processed path is returned.

    gremlin> g.v(1).out.path ==>[v[1], v[2]] ==>[v[1], v[4]] ==>[v[1], v[3]] gremlin> g.v(1).out.path{it.id} ==>[1, 2] ==>[1, 4] ==>[1, 3] gremlin> g.v(1).out.path{it.id}{it.name} ==>[1, vadas] ==>[1, josh] ==>[1, lop] gremlin> g.v(1).outE.inV.name.path ==>[v[1], e[7][1-knows->2], v[2], vadas] ==>[v[1], e[8][1-knows->4], v[4], josh]

    path操作返回遍歷的所有路徑

    simplePath

    Emit the object only if the current path has no repeated elements.

    gremlin> g.v(1).out.in ==>v[1] ==>v[1] ==>v[1] ==>v[4] ==>v[6] gremlin> g.v(1).out.in.simplePath ==>v[4] ==>v[6]

    simplePath返回沒有環路的path

    toList

    g.v(1).out //返回生成器 g.v(1).out.toList() //返回一個列表, 已經把數據都讀出來了, 可以隨便操作

    intersect

    返回交集

    [1,2,3].intersect([1]) => [1][].intersect([1]) => []

    Navex 排坑

    被刪除的查詢語句

    當你信心滿滿的解決了前面的各種古老依賴, 奇怪版本號問題時, 在最關鍵的查詢語句是丟失的

    如果你真的嘗試運行了, 大概會這樣

    #python static-main.py the query is xss_funcs = ["print", "echo"] sql_query_funcs = ["mysql_query", "mysqli_query", "pg_query", "sqlite_query"] os_command_funcs = ["backticks", "exec" , "expect_popen","passthru","pcntl_exec","popen","proc_open","shell_exec","system", "mail" ]m =[]; queryMapList =[]; g.V().filter{sql_query_funcs.contains(it.code) && isCallExpression(it.nameToCall().next()) }.callexpressions().sideEffect{m = start(it, [], 0, 'sql', false, queryMapList)}.sideEffect{ warnmessage = warning(it.toFileAbs().next().name, it.lineno, it.id, 'sql', '1')}.sideEffect{ reportmessage = report(it.toFileAbs().next().name, it.lineno, it.id)}.ifThenElse{m.isEmpty()}{it.transform{reportmessage}}{it.transform{findSinkLocation(m, warnmessage, 'sql', queryMapList, it)}} Caught exception: <class 'py2neo.error.BadInputException'> groovy.lang.MissingMethodException: No signature of method: com.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine.start() is applicable for argument types: (com.tinkerpop.blueprints.impls.neo4j2.Neo4j2Vertex, java.util.ArrayList, java.lang.Integer, java.lang.String, java.lang.Boolean, java.util.ArrayList) values: [v[721], [], 0, sql, false, []] Possible solutions: wait(), any(), every() None

    很顯然是作者刪除了關鍵函數

    m = start(it, [], 0, 'sql', false, queryMapList) # 篩選sql注入節點

    findSinkLocation(m, warnmessage, 'sql', queryMapList, it) # 查找Sink

    所以你不可能直接復現論文里的靜態分析結果, 世界上除了作者應該沒人知道寫的是啥了, issue中也有人反饋這樣的問題

    python-joern/Analysis.py at e5f651511143938511ae572b7986bfa92c6c4936 · aalhuz/python-joern

    大部分想嘗試的人, 面對這樣未知的領域, 未知的語言, 未知的代碼, 都會就此止步, 可惜了, 我不信邪, 哪怕重新寫一個.

    之后的時間, 去尋找“Tinkerpop Gremlin的教程, 然后學完百度的HugeGraph教程才發現市面上的文檔都是針對Tinkerpop 3.x, 甚至又學習了一個寶藏博主的Tinkerpop 3.x`教程
    PRACTICAL GREMLIN: An Apache TinkerPop Tutorial
    想著觸類旁通, 修復Tinkerpop 2.x 的 Navex, 在一個完全陌生的領域探索必然是緩慢而痛苦的, 又過了很久, 找到 github上面的一份古老文檔
    spmallette/GremlinDocs: Gremlin Documentation and Samples
    這是一份 2012-2015 年的Tinkerpop 2.x文檔, 然后勉強把Tinkerpop 2.x文檔扣了一遍, 中間穿插學習了編譯原理, 離散數學, 南大的靜態分析課程, 也算是知道了什么是靜態分析, 大概的原理和目的也算是清楚了些.
    在瀏覽器相關收藏快100個了的時候, 前后知識點終于打通了, 被迫完成了作者刪除的代碼, 回過頭來看, 也不是特別難, 硬著頭皮寫Gremlin遍歷, 邊查邊寫就是了.

    CPG – Vertex, Edge , Property

    CPG的節點, 邊和屬性信息都記錄在下面這個文件中

    joern/phpjoernsteps/_constants.groovy

    // AST node property keysObject.metaClass.NODE_INDEX = 'id' // 每個node都有自己的id Object.metaClass.NODE_TYPE = 'type' // 節點的類型, 后面`AST node types`有具體描述 Object.metaClass.NODE_FLAGS = 'flags' // 參考`AST node flags`, 賦值, 二元操作,判斷, 文件包含, 目錄信息 Object.metaClass.NODE_LINENO = 'lineno' // 當前節點所處源文件的行數 Object.metaClass.NODE_CODE = 'code' // 引用的函數或者變量的名稱 Object.metaClass.NODE_FUNCID = 'funcid' // 所處文件的文件id Object.metaClass.NODE_ENDLINENO = 'endlineno' // 所處文件的總行數 Object.metaClass.NODE_NAME = 'name' // 函數聲明的函數名稱, 文件的文件名 Object.metaClass.NODE_DOCCOMMENT = 'doccomment' // 注釋// AST node types //g.V().has('type', TYPE_STMT_LIST) Object.metaClass.TYPE_STMT_LIST = 'AST_STMT_LIST' // ...; ...; ...; Object.metaClass.TYPE_CALL = 'AST_CALL' // foo() Object.metaClass.TYPE_STATIC_CALL = 'AST_STATIC_CALL' // bla::foo() Object.metaClass.TYPE_METHOD_CALL = 'AST_METHOD_CALL' // $bla->foo() Object.metaClass.TYPE_PROP = 'AST_PROP' // e.g., $bla->foo Object.metaClass.TYPE_FUNC_DECL = 'AST_FUNC_DECL' // function foo() {} Object.metaClass.TYPE_METHOD = 'AST_METHOD' // class bla { ... function foo() {} ... } Object.metaClass.TYPE_ARG_LIST = 'AST_ARG_LIST' // foo( $a1, $a2, $a3) Object.metaClass.TYPE_PARAM_LIST = 'AST_PARAM_LIST' // function foo( $p1, $p2, $p3) {} Object.metaClass.TYPE_PARAM = 'AST_PARAM' // $p1 Object.metaClass.TYPE_ASSIGN = 'AST_ASSIGN' // $buzz = true Object.metaClass.TYPE_ASSIGN_REF = 'AST_ASSIGN_REF' // $b = &$a Object.metaClass.TYPE_ASSIGN_OP = 'AST_ASSIGN_OP' // $x += 3 Object.metaClass.TYPE_NAME = 'AST_NAME' // names (e.g., name of a called function in call expressions) Object.metaClass.TYPE_VAR = 'AST_VAR' // $v Object.metaClass.TYPE_BINARY_OP = 'AST_BINARY_OP' // e.g., "foo"."bar" or 3+4 Object.metaClass.TYPE_ENCAPS_LIST = 'AST_ENCAPS_LIST' // e.g., "blah{$var1}buzz $var2 beep" Object.metaClass.TYPE_INCLUDE_OR_EVAL = 'AST_INCLUDE_OR_EVAL' // eval, include, require //Abeer Object.metaClass.TYPE_CALLEE = 'Callee' Object.metaClass.TYPE_FUNCTION = 'Function' Object.metaClass.TYPE_ECHO = 'AST_ECHO' // echo Object.metaClass.TYPE_PRINT = 'AST_PRINT' // PRINT//ABEER Object.metaClass.TYPE_IF_ELEM = 'AST_IF_ELEM' // HOLDES THE COND INSIDE IF Object.metaClass.TYPE_DIM = 'AST_DIM' // _POST[x] Object.metaClass.TYPE_ISSET = 'AST_ISSET' // is_set() // TODO and many more...// AST node flags // of AST_ASSIGN.* Object.metaClass.FLAG_ASSIGN_CONCAT = 'ASSIGN_CONCAT' // $v .= "foo" // of AST_BINARY_OP Object.metaClass.FLAG_BINARY_CONCAT = 'BINARY_CONCAT' // "foo"."bar" //Abeer Object.metaClass.FLAG_BINARY_EQUAL = 'BINARY_IS_EQUAL' // x==y Object.metaClass.FLAG_BINARY_NOT_EQUAL = 'BINARY_IS_NOT_EQUAL' // x != y Object.metaClass.FLAG_BINARY_IS_IDENTICAL = 'BINARY_IS_IDENTICAL' // 1 === 1 Object.metaClass.FLAG_BINARY_IS_NOT_IDENTICAL = 'BINARY_IS_NOT_IDENTICAL' // 1 !== 1 // of AST_INCLUDE_OR_EVAL Object.metaClass.FLAG_EXEC_EVAL = 'EXEC_EVAL' // eval("...") Object.metaClass.FLAG_EXEC_INCLUDE = 'EXEC_INCLUDE' // include "..." Object.metaClass.FLAG_EXEC_INCLUDE_ONCE = 'EXEC_INCLUDE_ONCE' // include_once "..." Object.metaClass.FLAG_EXEC_REQUIRE = 'EXEC_REQUIRE' // require "..." Object.metaClass.FLAG_EXEC_REQUIRE_ONCE = 'EXEC_REQUIRE_ONCE' // require_once "..."// TODO and many more...// Other (non-AST) node types // 目錄結構信息 Object.metaClass.TYPE_DIRECTORY = 'Directory' Object.metaClass.TYPE_FILE = 'File'Object.metaClass.TYPE_STRING = 'string'// Edge typesObject.metaClass.DIRECTORY_EDGE = 'DIRECTORY_OF' Object.metaClass.FILE_EDGE = 'FILE_OF' Object.metaClass.AST_EDGE = 'PARENT_OF'// 不清楚, dvwa里面沒有這種邊 Object.metaClass.TYPE_IDENTIFIER_DECL_STMT = 'IdentifierDeclStatement' Object.metaClass.TYPE_PARAMETER = 'Parameter'Object.metaClass.TYPE_FILE = 'File'// Edge typesObject.metaClass.CALLS_EDGE = 'CALLS' // 類中的函數定義 Object.metaClass.CFG_EDGE = 'FLOWS_TO' // 用來描述 ControlFlowObject.metaClass.USES_EDGE = 'USE' Object.metaClass.DEFINES_EDGE = 'DEF' Object.metaClass.DATA_FLOW_EDGE = 'REACHES' // 用來描述 DataFlowObject.metaClass.FUNCTION_TO_AST_EDGE = 'IS_FUNCTION_OF_AST' Object.metaClass.FILE_TO_FUNCTION_EDGE = 'IS_FILE_OF'// Edge keysObject.metaClass.DATA_FLOW_SYMBOL = 'var' // 如果這是一條`REACHES`的邊, 就會有`var`這個key, 其值代表上一個節點流出到下一個節點的變量名//Abeer // phpjoern 自帶的過濾函數檢測, 這里我們不用 Object.metaClass.DATA_FLOW_TAINT_SRC = 'taint_src' Object.metaClass.DATA_FLOW_TAINT_DST = 'taint_dst'

    作者:斗象能力中心 TCC – 小胖虎

    由于篇幅有限,有關漏洞查詢代碼補全分析、完整代碼、安裝與使用、查詢結果分析、總結與參考內容將在 《復活Navex-使用圖查詢進行代碼分析(下)》篇展示,記得持續關注哦~


    如果想要獲得「更多最前沿的安全技術研究與內容」歡迎關注‘斗象智能安全能力中心’

    斗象能力中心 - 斗象智能安全?blog.riskivy.com

    TCC Team長期招聘,包含各細分領域安全研究員[Web/網絡攻防/逆向]、機器學習、數據分析等職位。感興趣不妨發簡歷聯系我們。

    總結

    以上是生活随笔為你收集整理的c++代码健壮性_复活Navex-使用图查询进行代码分析(上)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    一区二区三区四区不卡 | 久久综合九色综合欧美就去吻 | 国产精品无av码在线观看 | 毛片永久免费 | 欧美精品v国产精品v日韩精品 | 婷婷激情站 | 99夜色 | 五月天久久久 | 一 级 黄 色 片免费看的 | 91精品视频免费观看 | 九九热免费精品视频 | 国产精品伦一区二区三区视频 | 色综合久久久久久久久五月 | 黄污视频网站大全 | 白丝av免费观看 | 日批在线看 | 精品欧美一区二区三区久久久 | 午夜精品久久一牛影视 | 精品国内| 精品一区二区视频 | 97操操操| av动态图片 | 国产精品va在线观看入 | 日本韩国欧美在线观看 | 亚洲一区二区精品在线 | 日韩影视大全 | 激情片av | 一本一本久久a久久精品综合小说 | 国产一卡二卡四卡国 | 欧美日韩精品在线观看 | 亚洲三级在线播放 | 免费日韩 精品中文字幕视频在线 | 一级黄色电影网站 | av黄色免费在线观看 | 欧美aaa大片 | 欧美91在线| 成人免费网视频 | 久久久九色精品国产一区二区三区 | 久久精品艹 | 91av原创| 日韩一级网站 | 日韩一区二区三区观看 | 国产精品美女毛片真酒店 | 亚洲国产精品久久 | 久久国产乱 | 又黄又爽又刺激的视频 | 美女免费视频观看网站 | 婷婷久久综合九色综合 | 超碰97国产| 又爽又黄又刺激的视频 | 欧美精品一区二区免费 | 欧美日韩精品在线视频 | 色婷婷88av视频一二三区 | 97精品国自产拍在线观看 | 天天色天天色天天色 | 91亚洲精品久久久中文字幕 | 丝袜美腿在线播放 | 97视频在线观看成人 | 国产成人精品一区二三区 | 亚洲va综合va国产va中文 | 日本三级人妇 | 国产自产在线视频 | 日韩日韩日韩日韩 | 99色免费视频 | 久久www免费人成看片高清 | 日本中文字幕免费观看 | 亚洲狠狠婷婷综合久久久 | 91精品天码美女少妇 | 国产精品毛片久久久久久久 | 97精品国产91久久久久久 | www.狠狠色 | 亚洲视频一级 | 狠狠干网| av在线播放国产 | 精品久久久久久久久久 | 成人在线观看免费 | 毛片激情永久免费 | 亚洲成人资源 | 国产资源精品在线观看 | 国产一区视频在线 | 国产主播99| 97超碰在线免费 | av免费在线播放 | 视频福利在线观看 | 亚洲国产片色 | 视频在线观看日韩 | 99久久久久久久久 | 香蕉视频日本 | 久久久国产一区二区三区四区小说 | 人人干人人干人人干 | 成人免费视频免费观看 | 国产高清在线 | 亚洲精选国产 | 久久精品直播 | 国产精品一区二区 91 | 精品在线观看一区二区 | 蜜臀久久99精品久久久久久网站 | 国产精品a级 | 九九久久免费 | 96国产在线 | 在线日韩av | 91视频大全| 久久久三级视频 | 丁香五月亚洲综合在线 | 一区二区视频在线观看免费 | 在线观看色视频 | 久久99久久久久久 | zzijzzij亚洲成熟少妇 | av中文天堂在线 | 国产精品一区二区电影 | 国产一区二区中文字幕 | 日韩一区二区三免费高清在线观看 | 免费视频三区 | 91在线视频免费观看 | 欧美激情操 | av电影中文 | 成 人 免费 黄 色 视频 | 日韩一三区| av在线短片| 国产无遮挡又黄又爽在线观看 | 国产黄免费 | 午夜少妇一区二区三区 | 国产日产精品一区二区三区四区的观看方式 | 天天躁日日躁狠狠躁av中文 | 综合久久综合久久 | 91丨九色丨高潮丰满 | 超碰97国产在线 | 亚洲精品国偷自产在线91正片 | 免费污片 | 国产在线永久 | 国产成人99久久亚洲综合精品 | 九九久久影院 | 久草青青在线观看 | 久久国产精品免费一区二区三区 | 国产精品网红福利 | 亚洲黄色小说网 | 69精品视频在线观看 | 国产日产欧美在线观看 | 久久久亚洲精品 | 97av视频在线观看 | 激情黄色一级片 | 色wwww| 狠狠干夜夜操天天爽 | 久久精品3 | 四虎影视av | 久久男人影院 | 久久再线视频 | 久久精品系列 | 97超碰人人澡 | 蜜桃视频成人在线观看 | 欧美高清视频不卡网 | 天天色天天搞 | 在线观看黄色的网站 | 精品一区二区三区久久久 | 久久久久免费网 | av免费电影网站 | 久久久精选 | 亚洲综合色网站 | 91福利在线观看 | av日韩国产| 久草观看 | 久久精品www人人爽人人 | 日韩av高清在线观看 | 欧美日韩首页 | 91丨九色丨高潮丰满 | 99热都是精品 | 日韩欧美在线观看 | 日韩精品专区在线影院重磅 | 狠狠插狠狠干 | 国产91粉嫩白浆在线观看 | 国产精品免费一区二区三区 | 成人免费网站视频 | 五月天国产| 激情久久久 | 久久激情五月婷婷 | a视频在线看 | 亚洲激情p | 五月综合久久 | 国产女人18毛片水真多18精品 | 久久99在线观看 | 精品少妇一区二区三区在线 | 一区二区三区播放 | 成人黄色在线观看视频 | 亚洲精品影视在线观看 | 91九色蝌蚪国产 | 欧美特一级 | 99久久精品久久亚洲精品 | 成人久久久电影 | av在线com| 国语久久| 人人插超碰 | 欧美日韩69 | 欧美黄色成人 | av在线免费观看黄 | 亚洲综合欧美激情 | 精品高清美女精品国产区 | 精品久久久久久国产偷窥 | 亚洲 欧美 变态 国产 另类 | 精品国产一区二区三区久久影院 | 视频精品一区二区三区 | 亚洲a资源 | 人人干在线观看 | 成人av在线一区二区 | 久久免费美女视频 | 婷婷电影在线观看 | 激情婷婷在线 | 欧美日韩国产在线观看 | 久久国产精品99久久久久久进口 | 亚洲欧洲精品一区二区 | 国产男女无遮挡猛进猛出在线观看 | 国产亚洲视频中文字幕视频 | 中文字幕免费久久 | 麻豆精品视频在线 | av免费电影在线观看 | 午夜国产影院 | av软件在线观看 | 黄色大片日本 | 免费网站在线观看成人 | 天天操夜 | 国产麻豆精品一区 | 日本精品久久久一区二区三区 | 亚洲精品乱码久久久久v最新版 | www.99在线观看| 色综合婷婷久久 | 在线免费国产 | 在线网站黄 | 狠狠操电影网 | 91亚洲精品国产 | 97精品国产97久久久久久 | 69国产盗摄一区二区三区五区 | 成人黄视频 | 亚洲国产欧洲综合997久久, | 国产精品久久久久久久久软件 | 国产亚洲精品久久久久久电影 | 欧美日韩精品区 | 99精品视频在线观看 | 97在线精品 | 福利视频一区二区 | 免费福利片2019潦草影视午夜 | 99精品国产免费久久久久久下载 | 中文字幕在线观看资源 | 亚洲激情一区二区三区 | 成人黄色短片 | 中文字幕日本特黄aa毛片 | 久久99亚洲网美利坚合众国 | 久热免费在线观看 | 中文字幕av在线不卡 | 国产精品系列在线播放 | av在线免费播放网站 | 黄色三级视频片 | 91亚洲永久精品 | 99久高清在线观看视频99精品热在线观看视频 | 97碰碰精品嫩模在线播放 | 中文字幕超清在线免费 | 亚洲激情六月 | 亚洲人成人在线 | 伊人久久五月天 | 91av手机在线观看 | 日韩免费看片 | 18久久久 | 天天色天天射天天干 | 91在线视频一区 | 96精品视频 | 免费看毛片网站 | 国产在线观看你懂得 | 色欧美88888久久久久久影院 | 精品国产一区二区三区男人吃奶 | av三区在线 | 91黄色小网站 | 狠狠色丁香久久婷婷综合丁香 | 91亚洲精品视频 | 国精产品永久999 | 成人性生交大片免费观看网站 | 欧美日韩免费观看一区=区三区 | 一本一道波多野毛片中文在线 | 国产精品乱码久久久 | 精品国产免费av | 少妇啪啪av入口 | 99视频免费在线观看 | 精品一区二区日韩 | 日韩欧美国产激情在线播放 | 日韩精品在线视频免费观看 | 91精品视频一区 | 射射射av| 人人澡人人爽欧一区 | 中文字幕精品三区 | 国产在线国偷精品产拍免费yy | 欧美精品久久久久久久久老牛影院 | 精品伊人久久久 | 欧美一级性生活片 | 欧美精品乱码久久久久久按摩 | 91精品视频免费看 | 中文字幕久久久精品 | 日韩免费大片 | 午夜视频在线观看一区二区 | 91网页版在线观看 | 丁香婷婷综合激情五月色 | 久久精品草 | 国产第一页在线观看 | 亚洲日本中文字幕在线观看 | 天天干,天天射,天天操,天天摸 | 中日韩三级视频 | 黄色影院在线播放 | 97视频资源 | 国产一区电影在线观看 | av在线之家电影网站 | 久久久18 | 天天爱天天操天天干 | 亚洲国产999 | 人人射人人射 | 国产精品无av码在线观看 | 日韩欧美在线一区 | 久久久久成 | 91精品欧美一区二区三区 | 久久婷婷久久 | 欧美日本国产在线观看 | 日日综合网 | 免费亚洲成人 | 狠狠操夜夜操 | 日韩黄在线观看 | 国产h片在线观看 | 午夜精品影院 | 久久新视频 | 久久久久久久久免费视频 | 日韩中文在线观看 | 免费视频三区 | 免费观看性生交大片3 | 最近日韩中文字幕中文 | 日韩欧美视频在线观看免费 | 国产精品观看在线亚洲人成网 | 免费看污黄网站 | 国产精品久久久久久婷婷天堂 | 国产又粗又长的视频 | 欧美国产一区在线 | av免费看在线| 久久久免费毛片 | 四虎影视成人精品 | 在线亚洲日本 | free. 性欧美.com | 国产精品毛片网 | 日韩资源在线播放 | 狠狠操狠狠插 | 精品视频成人 | 欧美综合色| 国产精品入口久久 | 欧美伦理一区二区三区 | 国产一区私人高清影院 | 色婷婷综合视频在线观看 | 国产精品综合久久久久久 | 91视频黄色 | 99精品视频一区二区 | 婷婷深爱 | 欧美色综合天天久久综合精品 | 一性一交视频 | 日本三级不卡 | 五月天电影免费在线观看一区 | 99色在线| 国内一区二区视频 | 日本三级香港三级人妇99 | 国产一级视频在线 | av网站手机在线观看 | 国产精品乱码高清在线看 | 99在线视频观看 | 欧美亚洲精品在线观看 | 欧美成人黄色片 | 国产亚州av | 婷婷深爱 | 国产精品专区h在线观看 | 最近能播放的中文字幕 | 99成人免费视频 | av免费在线观看网站 | 激情综合五月天 | 四虎成人精品永久免费av | 亚洲欧美综合精品久久成人 | 欧美午夜性 | 免费看色的网站 | 麻豆国产在线播放 | 97在线观视频免费观看 | av在线看网站 | 国内精品久久久久久久久久久 | 欧洲亚洲国产视频 | 国产亚洲欧美日韩高清 | 精品日韩视频 | 免费a视频在线 | 久久久久久久久毛片精品 | 在线观看你懂的网址 | 久草久草在线 | 午夜久久网 | 久久久免费电影 | 97在线视频免费看 | 九九视频精品在线 | 中文字幕一区二区三区精华液 | 国产乱码精品一区二区蜜臀 | 久久视频这里有久久精品视频11 | 97超碰中文字幕 | 亚洲国产网站 | 国产色视频网站 | 成人精品国产免费网站 | 日韩在线视频一区二区三区 | 亚洲精品免费在线 | 五月开心婷婷 | 黄污网 | 中文字幕日韩高清 | 丁香五婷| 色播五月激情综合网 | 色婷婷激情| 久久伊人精品一区二区三区 | 久久精品影片 | 久草在线免费看视频 | 天天插夜夜操 | 日韩在线观看中文字幕 | 日韩午夜精品 | 亚洲精选久久 | 日一日操一操 | 国产在线国偷精品产拍 | 婷婷在线播放 | 成人免费视频a | 色视频网站在线观看一=区 a视频免费在线观看 | 久久亚洲精品电影 | 精品国产理论 | 91亚洲激情| 午夜成人影视 | 欧美亚洲免费在线一区 | 欧美一区二区在线 | 国产精品三级视频 | 国产精品麻豆99久久久久久 | 97精品一区二区三区 | 国产精品网址在线观看 | 麻豆传媒视频在线免费观看 | 不卡电影免费在线播放一区 | 伊人国产在线播放 | 色婷婷久久 | 亚洲va在线va天堂va偷拍 | 天天操天天色综合 | 在线视频app | 99精品在这里 | 香蕉视频久久 | 国产福利在线免费观看 | 久久五月激情 | 国产小视频网站 | 欧美精品第一 | 久草在线视频中文 | 中文字幕久久精品一区 | 亚洲国产精品一区二区尤物区 | 亚洲九九影院 | 成人精品福利 | 色欧美成人精品a∨在线观看 | 日韩午夜高清 | 91免费黄视频 | aaa毛片视频| 中文字幕色站 | 天天射综合网视频 | aa级黄色大片 | 在线成人高清电影 | 大型av综合网站 | 色av男人的天堂免费在线 | 视频在线在亚洲 | 亚洲春色综合另类校园电影 | 国产精品成人在线观看 | 中文字幕电影网 | 欧美国产高清 | 亚洲爱爱视频 | 天天干夜夜爱 | 欧美一级特黄aaaaaa大片在线观看 | 日韩精品电影在线播放 | 91视频免费看网站 | 97精品久久人人爽人人爽 | 色视频在线免费 | 欧洲色综合 | 91最新网址在线观看 | 欧美成人黄色片 | 9在线观看免费高清完整 | 超碰在线免费福利 | 日韩av一区二区在线播放 | 九月婷婷色 | 国产亚洲在线观看 | 精品99久久久久久 | 国产小视频网站 | 伊人婷婷在线 | 黄色特级毛片 | 成人网色 | 超碰久热 | 国产精品伦一区二区三区视频 | 免费一级片在线观看 | 久久久久久久影视 | 国产精久久久 | 免费色网站| 亚洲国产成人久久综合 | 欧美日韩久久不卡 | 久章草在线 | 久久精品一区八戒影视 | 新av在线| 久久视频免费 | 色99视频 | 啪嗒啪嗒免费观看完整版 | 伊人五月 | 久操视频在线观看 | 91av在线精品 | 精品国产一区二区三区日日嗨 | 97偷拍视频 | 四虎国产精品免费 | 国产不卡在线看 | 亚洲精品456在线播放乱码 | 成人av电影免费在线播放 | 成人a级网站 | www久久com | aa一级片 | 中文字幕成人网 | 午夜久久久精品 | 国产精品一区二区吃奶在线观看 | 四虎永久网站 | 欧美欧美 | 日日操天天射 | 97精品国产97久久久久久粉红 | 日韩一级片大全 | 亚洲国产成人精品久久 | 国产亚洲免费观看 | 最新av电影网站 | 99久久精品久久久久久清纯 | 亚洲伊人婷婷 | 天天插夜夜操 | 一区三区视频在线观看 | 国产精品欧美激情在线观看 | 在线а√天堂中文官网 | 天堂在线视频中文网 | 在线视频 91 | 精品国产一区二区三区四区在线观看 | 天天干,天天射,天天操,天天摸 | 天天操夜夜操夜夜操 | 国产成人精品久 | 91资源在线免费观看 | www一起操 | 丁香视频全集免费观看 | 国产成人一区二区三区在线观看 | 久久久久久久久久免费视频 | 国产精品成人自产拍在线观看 | 国产无套一区二区三区久久 | 少妇搡bbb| 国产精品日韩在线 | 久久久精品99 | 成人看片| 成年人免费观看在线视频 | 激情伊人五月天 | 国产伦精品一区二区三区高清 | 丁香六月久久综合狠狠色 | www.色午夜 | 午夜精品一区二区三区视频免费看 | 探花视频在线观看+在线播放 | 久久久久久毛片 | 日韩在线观看视频一区二区三区 | 96在线| 日本成人中文字幕在线观看 | 国产免费一区二区三区网站免费 | 日本视频精品 | 网站在线观看你们懂的 | 久色小说 | 亚洲国产美女久久久久 | 人人爽人人爽av | 日韩a免费| 日韩在线三级 | 91在线在线观看 | 日韩在线视频播放 | 久草视频免费看 | 日韩精品免费在线观看 | 三级在线视频播放 | 不卡的av | 日本黄色大片免费看 | 狠狠网亚洲精品 | 亚洲高清91 | 国产成人一二三 | 在线观看午夜 | 久久精品中文视频 | 国产女人免费看a级丨片 | 91高清免费在线观看 | 五月婷婷激情综合 | 六月天综合网 | 久久久亚洲国产精品麻豆综合天堂 | 在线视频日韩一区 | 精品99久久久久久 | 中文字幕第一页av | 欧美日韩精品在线观看 | 国产小视频91 | 91九色在线观看视频 | 6080yy精品一区二区三区 | 国产精品日韩在线播放 | 成人黄色电影在线播放 | 五月天丁香 | 人人玩人人添人人澡超碰 | 久久久久久久国产精品影院 | 成av人电影| 蜜臀久久99精品久久久酒店新书 | 国产精品午夜免费福利视频 | 香蕉91视频 | 天天爱天天操天天射 | 久久影院一区 | 日韩在线第一 | 亚洲精品色婷婷 | 亚洲成人国产精品 | 96国产在线 | 99久久精品无码一区二区毛片 | 精品久久精品 | 一区二区三区高清在线 | 中文字幕色在线 | 18国产精品福利片久久婷 | 国内精品久久久久国产 | 一区av在线播放 | 亚洲免费精彩视频 | 国产精品不卡在线 | 欧美性色xo影院 | 精品国产日本 | 黄色网在线免费观看 | 国产九九九精品视频 | 激情图片qvod | 天天爽夜夜爽人人爽曰av | 日韩欧美电影在线 | 激情五月婷婷综合网 | 久久午夜免费视频 | 99精品黄色片免费大全 | 成人黄色片免费 | 99综合电影在线视频 | 狠狠色丁香婷婷 | 免费国产一区二区 | 日韩成人精品一区二区 | 久草在线国产 | 99热日本 | av 一区 二区 久久 | 天天射狠狠干 | 91麻豆精品91久久久久同性 | 国产网红在线观看 | 99久久精品免费看国产四区 | www.狠狠色| 国产精品国产三级国产专区53 | 国产精华国产精品 | 国产精品视频专区 | 91精品国自产在线 | 免费久久网站 | 国产精品欧美久久久久无广告 | 欧美激情在线网站 | 中文字幕在线看视频国产中文版 | 免费看毛片在线 | 成人精品一区二区三区中文字幕 | 国产亚洲精品成人av久久ww | 天天玩天天操天天射 | 日本中文字幕久久 | 久久久免费国产 | 婷色在线 | 欧美人体xx | 成人一区二区三区在线观看 | 国产乱对白刺激视频在线观看女王 | 九九热免费视频在线观看 | 97福利社| 欧美久久久久久久久中文字幕 | 激情综合啪 | aaa毛片视频 | 国产精品日韩精品 | 综合网在线视频 | 99re6热在线精品视频 | 亚洲欧美国产精品久久久久 | 中文字幕资源在线 | a黄色影院 | 日韩免费网址 | 贫乳av女优大全 | 国产 欧美 在线 | 欧美日韩国语 | 国产中文字幕在线观看 | 国产h在线播放 | 中文字幕成人在线观看 | 91福利社在线观看 | 免费成人在线网站 | 日本mv大片欧洲mv大片 | 色婷婷色 | 国产成人一区二区三区电影 | 麻豆精品国产传媒 | 国产一级片观看 | 日韩在线视频网址 | 亚洲激色 | 射九九| 蜜臀av性久久久久蜜臀aⅴ四虎 | 亚洲综合视频在线观看 | 制服丝袜亚洲 | 人人草网站 | 日韩精品播放 | 在线观看中文字幕一区二区 | 在线观看中文字幕网站 | 91黄视频在线观看 | 黄色免费网站 | 国产精品色视频 | 夜夜躁天天躁很躁波 | 欧美成人h版 | 免费看一级黄色大全 | 国产午夜精品福利视频 | 欧美成人tv | 973理论片235影院9 | 三级黄色在线 | 久久综合色一综合色88 | 黄色网址在线播放 | 中文字幕xxxx | 99中文在线 | 一级全黄毛片 | 九九免费观看全部免费视频 | 色多多污污在线观看 | 日韩va在线观看 | 亚洲成人一二三 | 免费看日韩片 | 国产精品系列在线播放 | 成人免费91| 在线精品在线 | 久久论理 | 日本精品久久久久久 | 日韩中文字幕国产 | 色网站在线免费观看 | 国产精品日韩在线观看 | 中文字幕在线播出 | 日本中文一区二区 | 啪啪动态视频 | 五月婷婷视频在线 | 国产黄色av网站 | 久久久亚洲麻豆日韩精品一区三区 | 欧美午夜久久久 | 亚洲高清色综合 | 久久99精品国产91久久来源 | 国产精品丝袜久久久久久久不卡 | 欧美激情精品一区 | 91高清视频在线 | 肉色欧美久久久久久久免费看 | 亚洲蜜桃av | 欧美精品小视频 | 久久视频免费 | 91香蕉视频污在线 | 国产精品毛片久久久久久 | 九草在线视频 | 人人澡超碰碰 | 亚洲爱av| 国产99在线播放 | 亚洲人成在线观看 | 国产另类av | 免费亚洲视频 | 国产精品美女久久久久久久网站 | 久久综合久久88 | a√天堂资源 | 日黄网站| 亚洲成人精品影院 | 欧美日韩精品在线 | 国产精品一区在线观看 | 中文字幕在线免费看线人 | 国产一级在线免费观看 | 国产亚洲成人网 | 最近日本韩国中文字幕 | 欧美性生活久久 | 九九热中文字幕 | 九九热国产 | 中文字幕在线网 | 亚洲欧洲av在线 | 日韩欧美精品在线观看视频 | 九九热免费在线观看 | 国产黄色资源 | 婷婷激情五月 | 91视频 - x99av| 欧美男男激情videos | av免费电影在线 | 在线视频中文字幕一区 | 国产精品日韩精品 | 成人av免费在线播放 | 五月婷香蕉久色在线看 | 亚洲精品www久久久 www国产精品com | 国产成人久久av免费高清密臂 | 99欧美精品 | 亚洲va欧美va人人爽 | 日韩精品国产一区 | 91av在线免费 | 激情久久伊人 | 午夜av在线免费 | 国产高清视频在线播放一区 | 黄色的视频 | 国产成人精品一区二区在线 | 99国产免费网址 | 天天操天天干天天操天天干 | 中文字幕一区二区在线播放 | 成人久久久电影 | 香蕉视频久久久 | 亚欧日韩成人h片 | 四虎成人av | 欧美国产在线看 | 一级片视频免费观看 | 伊人欧美 | 婷婷久久网站 | 日韩精品欧美视频 | 久久久久久久久久久久久久免费看 | 91.麻豆视频| 色婷婷啪啪免费在线电影观看 | 日本性动态图 | 国产精品视频你懂的 | 91黄色影视 | 久久亚洲福利视频 | 91欧美国产| 欧美日韩免费观看一区二区三区 | 少妇激情久久 | av短片在线观看 | 在线观看免费观看在线91 | 亚洲国产欧美在线看片xxoo | 91九色国产在线 | 日本中文字幕免费观看 | 成人av网站在线播放 | a爱爱视频| 中文日韩在线视频 | 99热精品国产 | 蜜桃视频色 | 久久精品欧美一区 | 人人爽人人澡 | 99精品欧美一区二区三区 | 亚洲资源在线 | 国产一区 在线播放 | 久久久麻豆精品一区二区 | 国产黄色免费看 | 丁香六月天婷婷 | 亚洲综合婷婷 | 日韩在线视频免费播放 | 免费福利片 | 高清不卡一区二区三区 | 国产精品av一区二区 | 婷婷去俺也去六月色 | 婷婷爱五月天 | 国产精品av免费 | av在线直接看 | 国产福利电影网址 | 亚洲国产精品成人综合 | 在线91av| 久久精品视频4 | 色av男人的天堂免费在线 | av在线永久免费观看 | 2019中文字幕第一页 | 中文字幕一区二区三区久久 | 黄av免费在线观看 | 免费观看十分钟 | 午夜狠狠干 | 午夜久久久久久久久久影院 | 日韩成人不卡 | 在线国产福利 | 亚洲一区二区三区四区在线视频 | 在线国产一区二区三区 | 国产亚洲精品久 | 99精品视频一区 | 最近最新最好看中文视频 | 2021久久 | 欧美日韩在线电影 | 91亚洲精品久久久蜜桃 | 中文字幕视频播放 | 日本高清久久久 | 欧美日韩国产高清视频 | av一区二区三区在线播放 | 亚洲精品美女免费 | 国产一二三四在线视频 | 国产最新在线观看 | 精品 激情 | 国产剧情在线一区 | 人成电影网| 欧美日韩不卡在线视频 | 99热这里只有精品国产首页 | 国产亚洲精品久久久久久大师 | 精品国产一二三四区 | 最近中文字幕免费av | 黄色字幕网 | 国产99中文字幕 | 一级黄网 | 91精品久久香蕉国产线看观看 | 91免费高清观看 | 91精品啪在线观看国产线免费 | 色姑娘综合天天 | 久久99精品国产99久久 | 中文字幕在线视频免费播放 | 成人久久久久久久久 | 久久视频在线视频 | 超碰在线国产 | 综合中文字幕 | 久久夜夜爽 | 天天综合久久 | 国产精品18久久久久vr手机版特色 | 国产伦理久久 | 国产精品18久久久久久久 | 久久久国产电影 | 国产区精品在线 | 美女视频a美女大全免费下载蜜臀 | 干av在线| www.福利 | 国产精品视频大全 | 精品美女在线观看 | 国产aaa毛片 | 黄色三级免费片 | 91麻豆免费看 | 中文区中文字幕免费看 | 亚洲精品视频在线观看免费视频 | 国产精品欧美一区二区 | 久久免费视频这里只有精品 | 国产精品涩涩屋www在线观看 | 99久久激情视频 | 超碰在线99| 精品久久久久久综合日本 | 97爱| 免费在线观看黄色网 | 黄色免费观看网址 | 欧美日韩精品国产 | 99久久精品免费看国产免费软件 | 91高清完整版在线观看 | 久久免费精彩视频 | 国产一级久久久 | 在线视频 成人 | 狠狠干电影 | 中文字幕网站 | 韩国三级在线一区 | 成人黄色大片网站 | 91av视频在线观看 | 91成人免费观看视频 | 精品久久久久久久久久久院品网 | 日韩欧美v| www久草 | 伊人电影在线观看 | 色视频在线 | 国产日本三级 | 久草在线精品观看 | 国产精品久久久久久久久久新婚 | 亚洲无线视频 | 国产精品igao视频网入口 | 久久伊人热 | 日韩理论影院 | 亚洲精品在线免费 | 成人理论电影 | free. 性欧美.com| 91网免费观看 | 黄色字幕网 | 久保带人 | av成人资源 | av解说在线观看 | 久久99久国产精品黄毛片入口 | 久久99国产综合精品免费 | 亚洲一级国产 | 怡红院久久 | 日日天天av | 激情综合五月天 | 日韩伦理片hd | 五月激情av | 国产精品美女久久久久久久网站 | 黄色的网站在线 | 一区 二区 精品 | 日本女人的性生活视频 | 免费三及片 | 九九在线高清精品视频 | 亚洲人成在线观看 | 91福利视频久久久久 | 91色网址 | 99欧美视频| 免费观看一区二区三区视频 | 在线a视频 | av电影中文字幕在线观看 | 九九热国产 | 99中文在线 | 九九九九热精品免费视频点播观看 | 成人a免费看 | 超碰人人在线观看 | 懂色av一区二区三区蜜臀 | 精品一区二区视频 | 国产va饥渴难耐女保洁员在线观看 | 人人精品| 国产一区二区三区免费在线观看 | 精品国产伦一区二区三区观看体验 | 夜夜躁日日躁狠狠久久av | 免费久久99精品国产 | 精品国产亚洲一区二区麻豆 | 日韩在线首页 | 热久久精品在线 | 国产理论一区二区三区 | 国产精品九九久久99视频 | 天天摸日日摸人人看 | 亚洲欧洲国产日韩精品 | 999久久国精品免费观看网站 | 日韩av不卡在线播放 | 毛片一级免费一级 | 婷婷九月丁香 | 狠狠操狠狠操 | 超碰在线免费福利 | 91精品久久久久久综合五月天 | 一级片观看| 人人玩人人添人人澡97 | 91大神一区二区三区 | 国产成人精品久久亚洲高清不卡 | 欧美色图p | 国产精品久久久久久欧美 | 中文字幕在线影院 | 欧美在线观看视频 | 亚洲成人精品在线 | 欧美调教网站 | 成全在线视频免费观看 | 奇米导航| www.伊人网| 999国产在线 | 欧美日韩在线免费观看 | 免费看一级黄色大全 | 操操操人人 | 97爱 |