




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、安全編程:警惕輸入找出并保護(hù)程序的入口安全編程:警惕輸入找出并保護(hù)程序的入口 本文關(guān)鍵字:本文關(guān)鍵字: 如果您不控制,攻擊者就會(huì)來(lái)控制如果您不控制,攻擊者就會(huì)來(lái)控制 安全的程序中第一道防線是檢查每一個(gè)不可信的輸入。但是這是什么意思呢?可以歸結(jié)為以下三點(diǎn): 限制程序暴露的部分。如果您的程序分為若干塊 這通常是一個(gè)好主意 那么盡量設(shè)計(jì)得讓攻擊者根本不能與大多數(shù)塊通信。這包括不能讓他們利用各塊之間的通信路徑。如果攻擊者不能查看、修改或者插入他們自己的數(shù)據(jù)到那些通信路徑中(包括作為塊間的中間人潛入),那是最好了。如果那不可能 比如當(dāng)塊之間使用網(wǎng)絡(luò)通信時(shí) 那么使用加密等機(jī)制來(lái)防范攻擊者。后續(xù)的文章將更深
2、入地討論這一問(wèn)題。 限制暴露部分所允許的輸入類型。有時(shí)您可以修改設(shè)計(jì)以使只有少數(shù)的輸入可以接受 如果可以,那么就這樣做吧。 嚴(yán)格檢查不可信的輸入。真正“安全”的程序應(yīng)該沒(méi)有任何輸入,但那種程序是沒(méi)有用處的。因而,您需要對(duì)來(lái)自于不可信源的輸入路徑的數(shù)據(jù)進(jìn)行嚴(yán)格的檢查。前一期文章 論述了如何檢查各種不同類型的數(shù)據(jù);本文將幫助您確定這些數(shù)據(jù)的來(lái)源。這并不是說(shuō)您 只 需檢查進(jìn)入您的程序的數(shù)據(jù)。通常明智的做法是檢查多個(gè)位置的數(shù)據(jù),但是您必須至少檢查所有的數(shù)據(jù)一次,并且明智的做法是至少在數(shù)據(jù)第一次進(jìn)入時(shí)進(jìn)行一次檢查。 程序的類型決定一切程序的類型決定一切 您必須檢查所有不可信的輸入 但是什么是不可信的輸入
3、呢?其中一些取決于您的程序要做什么。如果您的程序是數(shù)據(jù)的瀏覽器或者編輯器(比如文字處理器或者圖像顯示器),而這些數(shù)據(jù)有可能來(lái)自攻擊者,所以那是不可信的輸入。如果您的程序響應(yīng)網(wǎng)絡(luò)上的請(qǐng)求,那些請(qǐng)求可能正是來(lái)自攻擊者 所以網(wǎng)絡(luò)連接是不可信的輸入。 另一個(gè)重要的因素是您的程序是如何設(shè)計(jì)的。如果您的程序運(yùn)行時(shí)身份是“root”或者其他一些特權(quán)用戶,或者有對(duì)數(shù)據(jù)(比如數(shù)據(jù)庫(kù)中的數(shù)據(jù))的訪問(wèn)特權(quán),那么從程序中沒(méi)有特權(quán)的部分到那些有特權(quán)的部分的輸入是不可信的。 尤其重要的情形是所有的“setuid”或者“setgid”的程序。只是運(yùn)行一個(gè) setuid/setgid 程序就會(huì)獲得特權(quán),這些程序特別難以保證安
4、全。為什么呢?因?yàn)?setuid/setgid 程序有特別多的輸入 它們中很多輸入多得驚人 可以被攻擊者控制。 常見(jiàn)的輸入源常見(jiàn)的輸入源 下面的章節(jié)將討論一些常見(jiàn)的輸入以及如何處理這些輸入。當(dāng)您編寫程序的時(shí)候這些輸入每一個(gè)都應(yīng)該考慮,如果它們不可信,一定要謹(jǐn)慎對(duì)它們進(jìn)行過(guò)濾。 環(huán)境變量環(huán)境變量 環(huán)境變量可能令人難以置信地危險(xiǎn),尤其是對(duì)那些 setuid/setgid 程序及它們調(diào)用的程序。危險(xiǎn)的原因在于以下三個(gè)方面: 許多庫(kù)和程序由環(huán)境變量以非常含糊的方式控制著 實(shí)際上,很多都完全沒(méi)有文檔化。命令 shell /bin/sh 使用 PATH 和 IFS 等環(huán)境變量,程序加載器 ld.so (/
5、lib/ld-linux.so.2) 使用 LD_LIBRARY_PATH 和 LD_PRELOAD 等環(huán)境變量,很多程序使用 TERM、HOME 和 SHELL 環(huán)境變量 所有 這些環(huán)境變量都可用于開發(fā)程序。這樣的環(huán)境變量數(shù)不勝數(shù);對(duì)調(diào)試來(lái)說(shuō)它們很多都是晦澀的變量,并且將它們?nèi)苛谐鲆彩菬o(wú)濟(jì)于事的。實(shí)際上,您不可能了解全部環(huán)境變量,因?yàn)橛幸恍┎](méi)有文檔化。 環(huán)境變量是繼承而來(lái)的。如果程序 A 調(diào)用 B,而 B 調(diào)用 C,C 調(diào)用 D,那么程序 D 將獲得的環(huán)境變量就是程序 A 所獲得的環(huán)境變量,除非有一些程序在這個(gè)過(guò)程中對(duì)其進(jìn)行了改動(dòng)。這就意味著,如果 A 是一個(gè)安全的程序,而 D 的開發(fā)者
6、為了調(diào)試方便而增加了一個(gè)沒(méi)有文檔化的環(huán)境變量,那么程序 D 的這個(gè)附加的環(huán)境變量就會(huì)成為程序 A 的一個(gè)漏洞!這種繼承不是偶然的 這是為了使環(huán)境變量有用 但是這也使之成為一個(gè)嚴(yán)重的安全問(wèn)題。 環(huán)境變量可以被本地運(yùn)行的攻擊者 完全 控制,而且攻擊者可以用不同尋常的方式來(lái)利用這一點(diǎn)。如 environ(5) 手冊(cè)頁(yè)(參閱 參考資料)中所描述,環(huán)境變量在內(nèi)部作為字符指針數(shù)組來(lái)存儲(chǔ)(數(shù)組以一個(gè) NULL 指針結(jié)束),每一個(gè)字符指針指向一個(gè)形式為 NAME=value(這里 NAME 是環(huán)境變量名) 的以零字符結(jié)尾的(NIL-terminated)字符串。這一細(xì)節(jié)的重要性何在?這是因?yàn)楣粽呖赡軙?huì)做一些
7、不合常理的事情,例如為同一個(gè)環(huán)境變量名創(chuàng)建多個(gè)值(比如兩個(gè)不同的 LD_LIBRARY_PATH 值)。這可以很容易地導(dǎo)致庫(kù)使用環(huán)境變量去做意想不到的事情,有可能被利用。GNU glibc 庫(kù)對(duì)此有防范的例程,但是使用環(huán)境變量的其他庫(kù)和任何例程可能很快陷入困境。 有一些情形下,程序經(jīng)過(guò)了修改,以使得難以利用它們來(lái)使用環(huán)境變量。歷史上,很多攻擊利用的是命令 shell 處理 IFS 環(huán)境變量的方法,但是當(dāng)今大部分的 shell(包括 GNU bash)已經(jīng)經(jīng)過(guò)了修改,從而使 IFS 難以利用。 不幸的是,盡管這一加固措施是一個(gè)好主意,但它還是不夠 您還是需要謹(jǐn)慎地去處理環(huán)境變量。在 Unix 類
8、系統(tǒng)上所有的程序如何運(yùn)行,這是一個(gè)特別重要的(雖然難以理解)例子。歡迎光臨八一學(xué)習(xí)網(wǎng)八一學(xué)習(xí)網(wǎng),收藏本篇文章收藏本篇文章 $False$ Unix 類系統(tǒng)(包括 GNU/Linux)首先通過(guò)系統(tǒng)加載器來(lái)運(yùn)行程序(在大部分 GNU/Linux 系統(tǒng)中這個(gè)加載器是 /lib/ld-linux.so.2),它可以定位并加載所需要的共享庫(kù)。這個(gè)加載器通常由環(huán)境變量來(lái)控制。 在大部分 Unix 類系統(tǒng)中,加載器通常在環(huán)境變量 LD_LIBRARY_PATH 中列出的目錄中開始搜索庫(kù)。我應(yīng)該說(shuō)明一下,LD_LIBRARY_PATH 被很多 Unix 類系統(tǒng)使用,但不是全部都用;HP-UX 用的是環(huán)境變量
9、SHLIB_PATH,AIX 用的是 LIBPATH。而且,在 GNU-based 系統(tǒng)(包括 GNU/Linux)中,環(huán)境變量 LD_PRELOAD 所列出的庫(kù)首先加載,并且優(yōu)先于所有其他的庫(kù)。 問(wèn)題是,如果攻擊者可以控制程序用到的底層庫(kù),那么攻擊者就可以控制整個(gè)程序。例如,假設(shè)攻擊者可以運(yùn)行 /usr/bin/passwd(一個(gè)可以改變您的口令的特權(quán)程序),但卻用環(huán)境變量去改變這個(gè)程序用到的庫(kù)。攻擊者可以編寫自己的口令加密函數(shù) crypt(3), 然后當(dāng)特權(quán)程序嘗試調(diào)用這個(gè)庫(kù)時(shí),攻擊者可以讓這個(gè)程序來(lái)做任何事情 包括允許永久地、無(wú)限制地控制整個(gè)系統(tǒng)。當(dāng)前,加載器通過(guò)檢測(cè)程序是否設(shè)置了 se
10、tuid/setgid 來(lái)防范這一問(wèn)題,如果設(shè)置了,它們就會(huì)忽略 LD_PRELOAD 和 LD_LIBRARY_PATH 環(huán)境變量。 本文關(guān)鍵字:本文關(guān)鍵字: 那么,我們安全了嗎?沒(méi)有。如果惡意的 LD_PRELOAD 或者 LD_LIBRARY_PATH 值沒(méi)有被 setuid/setgid 程序清除,它將被傳遞到其他程序,并導(dǎo)致出現(xiàn)加載器試圖去防范的問(wèn)題。因而,雖然加載器讓編寫安全的程序成為 可能,但您還不得不去防范惡意的環(huán)境變量。而且,這還不能處理那些沒(méi)有文檔化的環(huán)境變量的問(wèn)題。 對(duì)于安全的 setudi/setgid 程序來(lái)說(shuō),惟一可靠的辦法是,始終在程序開始時(shí)“提取并清除”環(huán)境變量
11、: 提取出您確實(shí)需要的環(huán)境變量(如果有)。 清除所有的環(huán)境變量。在 C/C 中,通過(guò)包含 并將 environ 變量設(shè)為 NULL 可以清除環(huán)境變量(盡早做這些事情,特別是在創(chuàng)建線程之前)。 只將您所需要的環(huán)境變量設(shè)置為可靠的值。您幾乎肯定要重新添加的一個(gè)環(huán)境值是 PATH,它是搜索程序的目錄列表。典型的 PATH 應(yīng)該只是設(shè)置為 /bin:/usr/bin,或者一些類似的值。不要向 PATH 中添加當(dāng)前路徑“.”,或者甚至一個(gè)空條目(這樣在開始和結(jié)束的冒號(hào)可被利用)。典型的,您還需要設(shè)置 IFS(設(shè)置為它默認(rèn)的“ tn” 空格、制表符和新行)和 TZ(時(shí)區(qū))。其他您可能需要設(shè)置的是 HOME
12、 和 SHELL。您的應(yīng)用程序可能還需要更多,但是要限制它們 除非是特別需要,否則不要接受潛在的攻擊者的數(shù)據(jù)。 文件文件 正如我在前一期文章中提到的,不要信任可以被攻擊者設(shè)置的文件名。Linux 和 Unix 允許用任意的字符序列來(lái)作為文件名,所以,如果您正在使用一個(gè)來(lái)自攻擊者的目錄或者接受他的一個(gè)文件名,一定要有所準(zhǔn)備。攻擊者可以創(chuàng)建以“-”開頭的文件名,或者含有“&”等特殊字符的文件名,等等。 不要信任可以被不可信用戶控制的文件內(nèi)容。這包括那些被程序?yàn)g覽或編輯的可能是由攻擊者寄來(lái)的文件。例如,著名的文本編輯器 vim 版本 5.7,當(dāng)要編輯一個(gè)文件時(shí),將查找一個(gè)內(nèi)置的 status
13、line 命令來(lái)在它的狀態(tài)行上設(shè)置信息,而那個(gè)命令又可以執(zhí)行任意的 shell 程序。攻擊者可以用電子郵件給受害者發(fā)送特別處理過(guò)的文件,如果受害者用 vim 來(lái)閱讀或者編輯它,受害者就可能會(huì)去運(yùn)行攻擊者想要運(yùn)行的任何程序! 避免從當(dāng)前目錄中獲得配置信息,因?yàn)橛脩艨赡軙?huì)瀏覽一個(gè)由攻擊者控制的目錄,攻擊者在那里創(chuàng)建了一個(gè)惡意的配置文件(例如,攻擊者可能已經(jīng)發(fā)送了一個(gè)包括數(shù)據(jù)和惡意配置文件的壓縮目錄)。而應(yīng)該從 /etc、用戶的主目錄和/或桌面環(huán)境的庫(kù)中獲得配置信息。通常,將配置信息以及其他信息存儲(chǔ)在“/.program-name”文件中是很方便的;文件名最前的句點(diǎn)是為了讓它不影響正常的顯示。如果您
14、真正必須要從當(dāng)前目錄下得到配置信息,那么要非常嚴(yán)格地檢查其中的所有數(shù)據(jù)。 不要讓攻擊者控制任何臨時(shí)文件。我建議,如果一個(gè)用戶是可信的,那么將臨時(shí)目錄放在那個(gè)用戶的主目錄下。如果這不可接受,那么要用安全的方法來(lái)創(chuàng)建和使用臨時(shí)文件(我將在后一期文章中討論如何安全地創(chuàng)建臨時(shí)文件)。 文件描述符文件描述符 不懷好意的攻擊者可能啟動(dòng)一個(gè)程序而只是對(duì)它的標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出或者標(biāo)準(zhǔn)錯(cuò)誤做一些奇怪的事情。例如,攻擊者可能會(huì)關(guān)閉它們中的一個(gè)或多個(gè),以使得您打開的下一個(gè)文件同時(shí)也是正常的輸出位置。這對(duì) setuid/setgid 程序來(lái)說(shuō)尤其是一個(gè)問(wèn)題。當(dāng)前的一些 Unix 類系統(tǒng)已經(jīng)可以防范這一問(wèn)題,但不是所有
15、的系統(tǒng)都可以。 setuid/setgid 程序防范這一攻擊的一種方法是,使用 open() 反復(fù)打開 /dev/null 直到文件描述符的值大于 2(您必須在打開文件前做這件事情,最好是在程序初始化時(shí))。文章整理文章整理: :八一學(xué)習(xí)網(wǎng)八一學(xué)習(xí)網(wǎng) http:/http:/ (本站) 然后,如果對(duì) open() 的第一次調(diào)用返回的是 2 或者更小,那么不輸出任何消息并退出。通過(guò)先反復(fù)打開 /dev/null,您自己保護(hù)了自己 如果您偶爾試圖去打開文件并輸出錯(cuò)誤消息時(shí),不會(huì)再發(fā)生壞的事情。在這種情況下不需要輸出錯(cuò)誤消息,因?yàn)槲募枋龇?0 到 2 只是在攻擊者試圖去攪亂您的程序的時(shí)候才會(huì)被關(guān)閉。
16、 命令行命令行 程序啟動(dòng)時(shí)可以接受來(lái)自命令行的數(shù)據(jù) 但是您可以相信這些數(shù)據(jù)嗎?setuid/setgid 程序尤其不能。如果您不能相信這些數(shù)據(jù),那就要自己做好一切準(zhǔn)備,包括大的參數(shù)、大量的參數(shù)、不可知的字符,等等。注意,程序的名字只是命令行值的第 0 個(gè)參數(shù) 不要 相信程序名,因?yàn)楣粽邥?huì)改變它。 不但如此,還要盡力去設(shè)計(jì)您的命令行語(yǔ)法,以使它更容易安全地使用。例如,支持用標(biāo)準(zhǔn)的“-”(雙破折號(hào))選項(xiàng)來(lái)表示“不再有選項(xiàng)”,這樣腳本就可以使用這個(gè)選項(xiàng)來(lái)防止攻擊者通過(guò)創(chuàng)建以破折號(hào)開頭的文件名 (如“-fr”)來(lái)攻擊。否則,攻擊者可以創(chuàng)建“-fr”文件,并讓用戶運(yùn)行“yourcommand *”;這
17、時(shí)您的程序可能會(huì)將文件名(“-fr”)曲解為一個(gè)選項(xiàng)。 圖形用戶界面(圖形用戶界面(GUIGUI) 這里是應(yīng)對(duì)災(zāi)難的一個(gè)方案:一個(gè)進(jìn)程擁有特別的特權(quán)(例如,如果它設(shè)置了 setuid/setgid),它使用操作系統(tǒng)的圖形用戶界面(GUI)庫(kù),而且 GUI 用戶不是完全可信任的。問(wèn)題是,GUI 庫(kù)(包括 Unix 的、Linux 的和 Windows 的)并不是設(shè)計(jì)這樣使用的。這樣做也不現(xiàn)實(shí) GUI 庫(kù)很大,而且依賴于龐大的基礎(chǔ)結(jié)構(gòu),所以很難為了安全性而去分析所有的代碼。GTK GUI 庫(kù)當(dāng)發(fā)現(xiàn)它是在 setuid 程序中運(yùn)行時(shí)甚至?xí)V?,因?yàn)樗鼪](méi)有假定會(huì)這樣使用(感謝 GTK 的開發(fā)者主動(dòng)預(yù)防
18、了這一安全問(wèn)題)。 難道這意味著您只能使用命令行?不是。將您的程序分為小一些的部分,用沒(méi)有特權(quán)的部分去實(shí)現(xiàn) GUI,用單獨(dú)的部分去實(shí)現(xiàn)需要特權(quán)的操作。下面是一些常見(jiàn)的做法: 通常,簡(jiǎn)單的方法是將有特權(quán)的操作作為命令行程序來(lái)實(shí)現(xiàn),由 GUI 調(diào)用 那樣您可以“無(wú)償?shù)亍鲍@得 GUI 和命令行界面(CLI),從而簡(jiǎn)化了腳本編寫和調(diào)試。典型地,CLI 特權(quán)程序是一個(gè) setuid/setgid 程序。當(dāng)然,有特權(quán)的程序必須保護(hù)自己不受攻擊,但是這個(gè)方法通 1212 常意味著這一部分必須是安全的程序,這些程序應(yīng)更小并且更容易保護(hù)。 本文關(guān)鍵字:本文關(guān)鍵字: 如果您需要高速通信,將這個(gè)程序作為有特權(quán)的程序
19、啟動(dòng),把它分為可以安全通信的獨(dú)立的進(jìn)程,然后將一個(gè)進(jìn)程永久釋放特權(quán)并去運(yùn)行 GUI。 另一種方法是實(shí)現(xiàn)有特權(quán)的服務(wù)器來(lái)響應(yīng)請(qǐng)求,并創(chuàng)建 GUI 作為客戶機(jī)。 使用 Web 界面;創(chuàng)建一個(gè)有特權(quán)的服務(wù)器,然后使用 Web 瀏覽器作為客戶機(jī)。這實(shí)際上是先前方法的一個(gè)特例,但它很靈活,因此通常值得考慮。如任何其他為我們帶來(lái)網(wǎng)絡(luò)數(shù)據(jù)問(wèn)題的 Web 應(yīng)用程序一樣,您將需要使它安全。 網(wǎng)絡(luò)數(shù)據(jù)網(wǎng)絡(luò)數(shù)據(jù) 如果數(shù)據(jù)來(lái)自于網(wǎng)絡(luò),您應(yīng)該認(rèn)為它是高度不可信的。不要相信“源 IP”地址、HTTP“Referrer”頭的值或者類似的數(shù)據(jù)所告訴您的數(shù)據(jù)來(lái)自何方;那些來(lái)自發(fā)送者的值可以被偽造。當(dāng)心來(lái)自域名系統(tǒng)(DNS)的值
20、;DNS 實(shí)現(xiàn)的是一個(gè)分布式數(shù)據(jù)庫(kù),那些值中有一些可能是攻擊者提供的。 如果您有一個(gè)客戶機(jī)/服務(wù)器系統(tǒng),服務(wù)器應(yīng)該永遠(yuǎn)不要相信客戶機(jī)。客戶機(jī)數(shù)據(jù)在到達(dá)服務(wù)器前可以被操縱,客戶機(jī)程序可能已經(jīng)被修改,或者攻擊者可能創(chuàng)建了他們自己的客戶機(jī)(很多這種情況!)。如果您正在從 Web 瀏覽器獲得數(shù)據(jù),不要忘記 Web cookie、HTML 表單數(shù)據(jù)、URL 等可以被用戶設(shè)置為任意的值。這是網(wǎng)絡(luò)購(gòu)物車應(yīng)用程序中常見(jiàn)的問(wèn)題;許多這樣的應(yīng)用程序使用隱藏的 HTML 表單域來(lái)存儲(chǔ)產(chǎn)品信息(比如價(jià)格)和相關(guān)信息(比如運(yùn)費(fèi)),當(dāng)用戶發(fā)送這些值時(shí)就盲目地接收。用戶不僅能將產(chǎn)品價(jià)格設(shè)置為更低的值或者零,有時(shí)他們還可以設(shè)置負(fù)值的價(jià)格,以得
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國(guó)嵌入式軌跡球鼠標(biāo)數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)多用扳手?jǐn)?shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 吉林省四平市(第一高級(jí)中學(xué) 實(shí)驗(yàn)中學(xué) 三高中)三校聯(lián)考2024-2025學(xué)年高二上學(xué)期期中考試化學(xué)試題(含答案)
- 2022-2023學(xué)年浙江省溫州市樂(lè)清市三年級(jí)(上)期末數(shù)學(xué)試卷(含答案)
- 2019-2025年軍隊(duì)文職人員招聘之軍隊(duì)文職法學(xué)模擬考試試卷B卷含答案
- 2025年消防設(shè)施操作員之消防設(shè)備中級(jí)技能通關(guān)題庫(kù)(附答案)
- 農(nóng)藝師相關(guān)知識(shí)培訓(xùn)課件
- 采購(gòu)單位合同范本(2篇)
- 鄉(xiāng)鎮(zhèn)安全知識(shí)培訓(xùn)課件
- 天然氣管道運(yùn)輸投資合同
- 小學(xué)二年級(jí)下冊(cè)《勞動(dòng)》教案
- 2025年湖南生物機(jī)電職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及參考答案
- 2025年深圳市高三一模英語(yǔ)試卷答案詳解講評(píng)課件
- 2025年黑龍江旅游職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)一套
- 山東省聊城市冠縣2024-2025學(xué)年八年級(jí)上學(xué)期期末地理試卷(含答案)
- 2025年江西青年職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年常考版參考題庫(kù)含答案解析
- 初中物理校本教材《物理之窗》內(nèi)容
- 清華大學(xué)考生自述
- 武發(fā)[2004]13關(guān)于積極推進(jìn)“ 城中村”綜合改造工作的意見(jiàn)
- 體溫單(三測(cè)單)
- 市政燃?xì)夤艿拦こ淌┕ぶ斜O(jiān)理的重點(diǎn)和難度探究
評(píng)論
0/150
提交評(píng)論