《随笔 二》
1,is_numeric(),? ctype_digit() 都是PHP中判斷 變量是否是純數字
2,PHP 中變量作用域明析:
變量的聲明的關鍵字: global,? static,? ? define,? ? ? const
global 用法:在函數外面用global 聲明的變量在函數內部 不能直接使用,要想使用必須通過全局變量數組? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? $GLOBALS['var'] 的方式使用; ?
? ? ? ? ? ? ? ? ? ? ? 在函數外部聲明的變量為全局變量,要想使用該變量,必須在函數內部重新用 global 來重新聲明該變量,說明該? ? ? ? ? ? ? ? ? ? ? ? 變量不是局部變量,可以在函數內對該變量進行一系列操作
? ? ? ? ? ? ? ? ? ? ?注意: 用global聲明的變量不能同時進行初始化
static用法:在函數內部用static聲明的變量,在函數調用結束后變量的值會被保留,但它依然是局部變量,不能再函數外部調用
? ? ? ? ? ? ? ? ? ? ?在函數外部用static聲明的變量,不能再函數內部調用
? ? ? ? ? ? ? ? ? ? 注意: 用static聲明變量時可以同時初始化,也可以改變其值
define用法:define(‘PI’,3,1415926) 可以在函數內部外部調用,必須用大寫字母
? ? ? ? ? ? ? ? ? ? ?注意: 用define聲明的變量的值不能再改變,? 調用時可以不帶$,? 必須在頂部聲明
const用法:const PI = 3.1415926??可以在函數內部外部調用,必須用大寫字母
? ? ? ? ? ? ? ? ? ? ??注意: 用const聲明的變量的值不能再改變,? 調用時可以不帶$,? 必須在頂部聲明
3,Python中變量的作用域明析:
Python中只分 局部變量? 和全局變量
? ? ?1,在函數外部定義的變量為全局變量,在函數內部定義的變量為局部變量,
? ? ? ? ? 全局變量可以在函數內部調用,但不能對其進行操作(修改,改變類型……),若強行改變其值,系統會默認生成了一個? ? ? ? ? ? 新的與原全局變量同名的局部變量,此時操作的函數的局部變量
? ? ? 2,在函數外部用 global 聲明的變量,在函數內部依然不能對其進行修改,
? ? ? ? ? ?要想在函數內部對函數外部的全局變量進行修改,操作的話,必須在函數內部重新用global 聲明
? ? ? 3,global 不能再嵌套函數中使用,如:def ……
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?def ……
? ? ? ? ? ?此時可用 nonlocal ;來代替 global
? ? ? 4,Python中沒用定義常量的語法,但約定用純大寫的字符串 的變量 為常量
? ? ? ? ? ?但此常量 不是真正的常量,它的值可以被改變
? ? ? ? ? 為實現真正的常量,可以用自定義類的方法實現常量,這要求符合“命名全部為大寫”和“值一旦被綁定便不可再修改”這兩個條件
定義一個名為 const.py 的文件
# -*- coding: utf-8 -*- # python 3.x # Filename:const.py # 定義一個常量類實現常量的功能 # # 該類定義了一個方法__setattr()__,和一個異常ConstError, ConstError類繼承 # 自類TypeError. 通過調用類自帶的字典__dict__, 判斷定義的常量是否包含在字典 # 中。如果字典中包含此變量,將拋出異常,否則,給新創建的常量賦值。 # 最后兩行代碼的作用是把const類注冊到sys.modules這個全局字典中。 class _const:class ConstError(TypeError):passdef __setattr__(self,name,value):if name in self.__dict__:raise self.ConstError("Can't rebind const (%s)" %name)self.__dict__[name]=valueimport sys sys.modules[__name__]=_const()使用的時候只要 import const,便可以直接定義
#使用的時候只要 import const,便可以直接定義常量了,例如# test.py import const const.PI=3.14 print(const.PI)在同一個文件中使用:
?
4,php中的 $_SERVER[]數組:
$_SERVER['PHP_SELF']? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#當前正在執行腳本的文件名,與?document?root相關。?
$_SERVER['SERVER_NAME']? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#當前運行腳本所在服務器主機的名稱。
$_SERVER['REQUEST_METHOD']? ? ? ? ? ? ? ? ? ? ?#訪問頁面時的請求方法。例如:“GET”、“HEAD”,“POST”,“PUT”。?
$_SERVER['QUERY_STRING']? ? ? ? ? ? ? ? ? ? ? ? ? ?#查詢(query)的字符串。?
$_SERVER['HTTP_ACCEPT_CHARSET']? ? ? ? ??#當前請求的?Accept-Charset:?頭部的內容。例如:“iso-8859-1,*,utf-8”。
$_SERVER['HTTP_HOST']? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#當前請求的?Host:?頭部的內容。?
$_SERVER['HTTP_REFERER']? ? ? ? ? ? ? ? ? ? ? ? ? ?#鏈接到當前頁面的前一頁面的?URL?地址。?
$_SERVER['HTTP_USER_AGENT']? ? ? ? ? ? ? ? ? ? #當前請求的?User_Agent:?頭部的內容。
$_SERVER['REMOTE_ADDR']? ? ? ? ? ? ? ? ? ? ? ? ? ?#正在瀏覽當前頁面用戶的?IP?地址。?
$_SERVER['REMOTE_HOST']? ? ? ? ? ? ? ? ? ? ? ? ? ? #正在瀏覽當前頁面用戶的主機名。?
$_SERVER['REMOTE_PORT']? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #用戶連接到服務器時所使用的端口。?
$_SERVER['SCRIPT_FILENAME']? ? ? ? ? ? ? ? ? ? ? #當前執行腳本的絕對路徑名。?
$_SERVER['SERVER_ADMIN']? ? ? ? ? ? ? ? ? ? ? ? ? ? #管理員信息?
$_SERVER['SERVER_PORT']? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#服務器所使用的端口?
$_SERVER['argv']?#傳遞給該腳本的參數。?
$_SERVER['argc']?#包含傳遞給程序的命令行參數的個數(如果運行在命令行模式)。?
$_SERVER['GATEWAY_INTERFACE']?#服務器使用的?CGI?規范的版本。例如,“CGI/1.1”。?
$_SERVER['SERVER_SOFTWARE']?#服務器標識的字串,在響應請求時的頭部中給出。?
$_SERVER['SERVER_PROTOCOL']?#請求頁面時通信協議的名稱和版本。例如,“HTTP/1.0”。?
$_SERVER['DOCUMENT_ROOT']?#當前運行腳本所在的文檔根目錄。在服務器配置文件中定義。?
$_SERVER['HTTP_ACCEPT']?#當前請求的?Accept:?頭部的內容。?
$_SERVER['HTTP_ACCEPT_ENCODING']?#當前請求的?Accept-Encoding:?頭部的內容。例如:“gzip”。?
$_SERVER['HTTP_ACCEPT_LANGUAGE']#當前請求的?Accept-Language:?頭部的內容。例如:“en”。?
$_SERVER['HTTP_CONNECTION']?#當前請求的?Connection:?頭部的內容。例如:“Keep-Alive”。?
$_SERVER['HTTPS']?—?如果通過https訪問,則被設為一個非空的值(on),否則返回off?
$_SERVER['SERVER_SIGNATURE']?#包含服務器版本和虛擬主機名的字符串。?
$_SERVER['PATH_TRANSLATED']?#當前腳本所在文件系統(不是文檔根目錄)的基本路徑。?
$_SERVER['SCRIPT_NAME']?#包含當前腳本的路徑。這在頁面需要指向自己時非常有用。?
$_SERVER['REQUEST_URI']?#訪問此頁面所需的?URI。例如,“/index.html”。?
$_SERVER['PHP_AUTH_USER']?#當?PHP?運行在?Apache?模塊方式下,并且正在使用?HTTP?認證功能,這個變量便是用戶輸入的用戶名。?
$_SERVER['PHP_AUTH_PW']?#當?PHP?運行在?Apache?模塊方式下,并且正在使用?HTTP?認證功能,這個變量便是用戶輸入的密碼。?
$_SERVER['AUTH_TYPE']?#當?PHP?運行在?Apache?模塊方式下,并且正在使用?HTTP?認證功能,這個變量便是認證的類型
?
5, updatexml( ) 和? extractvalue() 都是最多返回 32 位字符
6, Python? ?的? 字符串切片是? ?前包后不包?
意思:?
str = "0123456789"print(str[:5]) # 輸出01234 print(str[5:]) #輸出567897,python : 中 try? expect? ?、try ……finally 、try……else語句
try:后面跟著需要執行的語句
except 捕獲異常 并處理異常,通常異常有不同類型,可分別處理
else:當try語句塊正常執行時,無異常產生,執行else語句塊
finally:無論是否有異常產生,均執行
raise: 自定義異常
8,python 中:? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?chr()? : 將 ascii 轉化為 相應的字符
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ord() : 將 字符轉化為? ascii
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ascii(): 類似 repr() 函數, 返回一個表示對象的字符串
>>> ascii('runoob') "'runoob'"? ? ? ?sql 中:? ? ? ? ascii()?:返回字符表達式最左端字符的ASCII 碼值
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?char():?將ASCII 碼轉換為字符
?
? ? ? ?php中:? ? ? ? chr()? : 將 ascii 轉化為 相應的字符
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ord() : 將 字符轉化為? ascii
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? php中 沒有 ascii()函數
9,sqlmap中 在使用 --tables 無法爆出 的時候? ? 可以用? --common-tables? ?進行爆破?
10,sqlmap 居然還可以進行? 這些操作:
?
? ?把文件上傳到數據庫服務器中
參數:--file-write,--file-dest? ?運行任意操作系統命令
參數:--os-cmd,--os-shell11,PHP:
file_get_content() 會將 讀取的文件的內容寫入資格字符串 ,返回值為 字符串 ,讀取失敗時,返回布爾的0
12,PHP:
傳入 數組的方法:
GET:? ?$sd =? ?$_GET['xss']? ? ? ? ?:url?xss['1']=123&xss['2']=456
必須以get里面的 字符為數組名
?
?13,sqlmap 中 指定注入點? ? ?
-p “id,user-agent,x-forwarded-for”? ? ? ? ? ? ?指定具體的參數
--skip? "user-agent"? ? ? ? ? ? ? ? 忽略指定參數
? ?*? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?在url中 指定 注入點? (只需要在想要探測的位置加上 *)
14,php中大多數函數都不能處理數組
15,php中? ===? ?比較符? 兩邊不會進行類型變換,所以 null? ?不等于 false
==? 可以進行類型變化 ,null =false
16,php中 strlen() 也不能處理數組, 用 count()測數組長度
17,部分os.path常用:
os.path.abspath(path)?返回path規范化的絕對路徑
os.path.split(path)?將path分割成目錄和文件名二元組返回
os.path.dirname(path)?返回path的目錄,其實就是os.path.split(path)的第一個元素
os.path.basename(path)?返回path最后的文件名
os.path.splitext(path)?分離文件名與擴展名;默認返回(fname, fextension)元組,可做分片操作,以” . “為分隔符。
18,python中 shutil庫? 常用:
shutil 是高級的文件,文件夾,壓縮包處理模塊。
shutil.copyfileobj(fsrc, fdst[, length])?將文件內容拷貝到另一個文件中
import?shutilshutil.copyfileobj(open('old.xml','r'),?open('new.xml',?'w'))shutil.copyfile(src, dst)? ? ??拷貝文件
shutil.copyfile('f1.log', 'f2.log')?
線程 、進程 和 協程
?
19,python 中的? enumerate():? 將數組拆分成元組
例如:names =['aa','bb','cc']
a,b = (11,12) 可以拆分元組
20,自定義 Thread類 :? 其中必須要繼承 Thread 類 ,并且必須要有 run方法
21,python,在一個函數中 判斷什么時候該加? global 什么時候不用加global:
?
變量名其實相當于一個指針,當 指針沒有指向新的地方的時候就不用 加 global
例如:上圖中 , 當向數組 nums中 append元素時,指針并沒有指向新的地方,所有加入元素成功
而? 當 合并 nums? 和? num2 時 生成了新的數組,指針指向了新的地方,這里不加global 就會出現錯誤
?
總結: 在一個函數中 對全局變量進行修改時,到底是是否需要使用global進行說明 要看 是否對 全局變量的指向進行了修改,
如果修改了指向,即讓全局變量指向了一個新的地方,那么必須使用 global?
如果只是修改了指向的空間里的數據,就不用使用 global
?
22, python中 線程之間的資源共享(子線程之間共享全局變量)
23,使用線程時,攜帶數據過去 的方法:
args 指定將來調用函數的時候 傳遞什么數據過去? ? 注意必須加? 逗號
?
?
24,PHP中 :
passthru($string):? ? ? ?把字符串$string當成命令執行
在使用 passthru()之前 往往先調用? 以下兩個函數,以確保用戶不會欺騙系統執行任意命令
escapeshellarg()?轉義一個字符串以用作shell參數,在字符串周圍添加單引號,并引用/轉義任何現有的單引號
escapeshellcmd?()?轉義shell元字符,轉義字符串中可能用于欺騙shell命令執行任意命令的任何字符
?
25, python 中 base64? 的調用:
? ? ? ?1 ,? ? ? ?'12345' . encode('base64')
? ? ? ? 2,? ? ? ? ?base64.b64encode($string)
?
26,恢復.swp文件
發現一個 index.php.swp文件
關于swp文件:?
使用vi,經常可以看到swp這個文件。那這個文件是怎么產生的呢,當打開一個文件,vi就會生成這么一個.(filename)swp文件 以備不測(比如非正常退出),如果你正常退出,那么這個這個swp文件將會自動刪除 。
怎么恢復.swp:?
可以使用?
vi -r {your file name}?
來恢復文件,然后用下面的命令刪除swp文件,不然每一次編輯時總是有這個提示。?
rm .{your file name}.swp?
?
27,jpg文件:
文件頭? FF D8 FF E0? ? ? ? ? ?文件尾? FF D9
藍色框內為JFIF段,長度字節流為00 10 = 16,
后面14個字節為內容。4A 46 49 46是JFIF的asci碼。后面10個字節不清楚。直接通過JFIF長度跳過即可。
紅色箭頭開始位置為Exif段,頭部的10個字節含義如下
FF E1開始,
16 6F = 24096,約24k的數據,信息量還是相當豐富的,
45 78 69 66 為Exif的asci碼流,
00 00 未使用
Exif正是利用這些信息串記錄拍攝信息如快門速度、光圈值等,甚至可以包括全球定位信息
28,png文件:
文件頭:?89 50 4E 47 0D 0A 1A 0A
數據塊
這里有兩種類型的數據塊,一種是稱為關鍵數據塊(critical chunk),就是必須要有的塊;另一種叫做輔助數據塊(ancillary chunks)。
每個數據塊都由下表所示的的4個域組成。
| Length(長度) | 4字節 | 指定數據塊中數據域的長度,其長度不超過$(2^{31}-1)$字節 |
| Chunk Type Code(數據塊類型碼) | 4字節 | 數據塊類型碼由ASCII字母(A-Z和a-z)組成 |
| Chunk Data(數據塊實際內容 | 可變長度 | 存儲按照Chunk Type Code指定的數據 |
| CRC(循環冗余檢測 | 4字節 | 存儲用來檢測是否有錯誤的循環冗余碼 |
其中CRC(cyclic redundancy check)域中的值是對Chunk Type Code域和Chunk Data域中的數據進行計算得到的,可以看做一種校驗碼。
關鍵數據塊
關鍵數據塊中的4個標準數據塊是:
(1) 文件頭數據塊IHDR(header chunk):
文件頭數據塊由13字節,組成結構如下:
| Width | 4 bytes | 圖像寬度,以像素為單位 |
| Height | 4 bytes | 圖像高度,以像素為單位 |
| Bit depth | 1 byte | 圖像深度:索引彩色圖像:1,2,4或8 ;灰度圖像:1,2,4,8或16 ;真彩色圖像:8或16 |
| ColorType | 1 byte | 顏色類型:0:灰度圖像, 1,2,4,8或16;2:真彩色圖像,8或16;3:索引彩色圖像,1,2,4或84:帶α通道數據的灰度圖像,8或16;6:帶α通道數據的真彩色圖像,8或16 |
| Compression method | 1 byte | 壓縮方法(LZ77派生算法) |
| Filter method | 1 byte | 濾波器方法 |
| Interlace method | 1 byte | 隔行掃描方法:0:非隔行掃描;1: Adam7(由Adam M. Costello開發的7遍隔行掃描方法) |
(2) 調色板數據塊PLTE(palette chunk):
(3) 圖像數據塊IDAT(image data chunk):
(4) 圖像結束數據IEND(image trailer chunk):
89 50 4E 47 0D 0A 1A 0A? ? 文件頭
00 00 00 0D? ? 說明IHDR頭塊長為13
49 48 44 52? ? IHDR標識(ascii碼為IHDR)
00 00 03 BD? 圖片的寬?
00 00 02 0F? 圖片的高
08 06 00 00 00? 圖片顏色信息
BF A8 B9 66? ? CRC校驗碼
?
29,gif文件: 文件頭? ? ??47 49 46 38
? ? ? ?RAR ? ? ? ? ? ? ? ? ? ?文件頭:52 61 72 21
30,kali更新源:
leafpad /etc/apt/sources.list
在原來的源前面加 #
將下面的兩個源添加上:保存退出
#阿里云 deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib#中科大kali源 deb https://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib deb-src https://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib然后執行:
apt-get update (更新列表)apt-get upgrade (更新系統軟件,更新的內容比較多,時間較長,20min左右)apt-get dist-upgrade31,設置開機啟動
systemctl enable apache2 //開機啟動Apache232,linux設置時區(ubuntu)
sudo tzselect然后選擇亞洲Asia,繼續選擇中國China,最后選擇北京Beijing。然后創建時區軟鏈sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime現在看下時間,是不是已經正常了呢。33,?rar的png類型編碼是rar壓縮指定的png標志,和png的文件頭沒什么關系,只是rar壓縮中對文件的標識
png:A8 3C 74
34,
| 21 | FTP 文件傳輸協議的命令端口 |
| 22 | SSH較安全的遠程連接協議 |
| 23 | Telnet 早期的連接服務器軟件 |
| 25 | SMTP 郵件傳輸協議 |
| 53 | ?DNS 域名解析服務器 |
| 80/8080/3128/8081/9080 | HTTP 協議代理服務器 |
| 110 | ?pop3郵件接受協議 |
| 443 | HTTPS 有加密安全的www服務器 |
| 3306 | MYSQL |
| 3389 | WIN2003 遠程登錄默認端口 |
| 1521 | Oracke數據庫 |
| 1433 | MYSQL_server |
| 1080 | |
| 69 | tFTP |
| 8080 | TOMCAT |
| 445/139 | SMP共享服務 |
| 67/68 | dhcp |
| ? | ? |
| ? | ? |
| ? | ? |
35,windows啟用管理員:
1,用管理員身份打開cmd ;2,開啟管理員 : net?user?administrator?/active:yes
3, 設置管理員密碼:?net?user?administrator 123123
?
36, 藍牙傳輸協議 : OBEX
?
37,WIFI連接認證的重點在WPA的四次握手包,也就是 eapol 協議的包
tcp 是三次握手,當PSH標志位為1時意味著有數據的傳輸,我們可以通過分組詳情中注意到TCP層下面還有一個Data字段,Data字段就是這個數據包所包含的數據
38, linux 中的字典生成工具? ?crunch (kali自帶)? 用法:https://www.jianshu.com/p/a3401b0f3d9a
?
39,DNS即Domain Name System,域名系統,作為Internet的一個重要組成部分,和常用的協議。DNS采用53端口基于UDP協議,當數據量大時,采用TCP協議。DNS協議的作用是把域名解析到IP地址,或者實現不通域名的跳轉等等。在網絡安全中也常用DNS數據包作為信息的載體,以繞過防火墻等安全設施。
40,DNS協議查詢和應答字段往往會傳輸大量的數據,所以可以用于隱藏數據。在常見的CTF和網絡安全的實際應用中,往往會出現DNS夾雜數據的情況出現。
41,FTP即File Transfer Protocol,文件傳輸協議。常用與互聯網上對文件的操作,方便用戶上傳與下載,并對服務器的文件進行操作。用戶通過一個支持FTP協議的客戶端程序,連接到在遠程主機上的FTP服務器。通過客戶端程序向服務端發出命令,服務端執行用戶所發出的命令,并將執行的結果返回到客戶端。
?
42,volatility 的一些操作:
1,使用imageinfo插件獲取到基本信息,特別是內存數據是什么操作系統下生成的
volatility -f easy_dump.img imageinfo2,查看進程列表:
volatility -f easy_dump.img --profile=Win7SP1x64 pslist3,提取某個進程為文件
volatility -f easy_dump.img --profile=Win7SP1x64 memdump -p 表中的PID值 -D ./4,列舉緩存在內存的注冊表 :
volatility -f easy_dump.img --profile=Win7SP1x64 hivelist5,hivedump 打印出注冊表中的數據 :
volatility -f easy_dump.img --profile=Win7SP1x64 hivedump -o 表中Virtual地址6,獲取SAM表中的用戶 :
volatility -f easy_dump.img --profile=Win7SP1x64 printkey -K “SAM\Domains\Account\Users\Names”7,獲取最后登錄系統的賬戶 :
volatility -f easy_dump.img --profile=Win7SP1x64 printkey -K “SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon”8,提取內存中保留的 cmd 命令使用情況 。
volatility -f easy_dump.img --profile=Win7SP1x64 cmdline volatility -f easy_dump.img --profile=Win7SP1x64 cmdscan9,獲取到當時的網絡連接情況 。
volatility -f easy_dump.img --profile=Win7SP1x64 netscan10,獲取 IE 瀏覽器的使用情況。?
volatility -f easy_dump.img --profile=Win7SP1x64 iehistory11, 獲取內存中的系統密碼,我們可以使用 hashdump 將它提取出來 。
?
volatility -f easy_dump.img --profile=Win7SP1x64 hashdump -y (注冊表 system 的 virtual 地址 )-s (SAM 的 virtual 地址)12,文件掃描:
volatility -f easy_dump.img --profile=Win7SP1x64 filescan | grep "doc\|docx\|rtf" volatility -f easy_dump.img --profile=Win7SP1x64 filescan | grep "png\|pdf\|jpeg\|jpg\|gif\|bmp" volatility -f easy_dump.img --profile=Win7SP1x64 filescan | grep "Desktop"13,查看截圖:
volatility -f easy_dump.img --profile=Win7SP1x64 screenshot --dump-dir=./14,查看tcp連接:tcp連接池掃描:
?
43,在解密RSA 中:
N = n = q * p
r = (q-1)(p-1)
d =( pq + 1 )/e
公鑰: (N,e)
私鑰: (N,d)
44,異或運算:(XOR ,^,)
23? ^ 11 = 28
7 ^ 11 = 12
2 ^ 3 = 1
其實 是將 十進制 轉為 二進制? 然后 對齊 進行 異或運算(同為 0,異為 1)
45,openssl 對rsa的加密解密操作:
RSA PEM文件格式
1.PEM私鑰格式文件
-----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY-----2. PEM公鑰格式文件
-----BEGIN PUBLIC KEY----- -----END PUBLIC KEY-----3. PEM RSAPublicKey公鑰格式文件
-----BEGIN RSA PUBLIC KEY----- -----END RSA PUBLIC KEY-----OpenSSL密鑰相關命令
?
1,生成一個私鑰。后面的1024是生成密鑰的長度。
openssl genrsa -out rsa_private_key.pem 10242,生成私鑰對應的公鑰:
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem-in指定輸入文件,-out指定提取生成公鑰的文件名。至此,我們手上就有了一個公鑰,一個私鑰,現在可以將用公鑰來加密文件了。
利用此前生成的公鑰加密文件?
openssl rsautl -encrypt -in hello -inkey rsa_public_key.pem -pubin -out hello.en-in指定要加密的文件,-inkey指定密鑰,-pubin表明是用純公鑰文件加密,-out為加密后的文件。
3,解密文件:
openssl rsautl -decrypt -in flag.enc -inkey rsa_private_key.pem-in指定被加密的文件,-inkey指定私鑰文件,-out為解密后的文件。
?
4,提取 公鑰 pubkey.pem 中的 參數:
openssl rsa -pubin -text -modulus -in warmup -in pubkey.pem46,?
.php.bak
是在編輯這個文件時,自動生成的備份文件。
如果編輯后沒有什么問題,可以刪除.BAK文件。
47 .git文件泄露的原理
git相當于是一個用于儲存網站項目源碼的倉庫
用 git命令可以管理 git這個倉庫
例如:
git init命令初始化一個空的Git 倉庫
git status命令可以查看倉庫狀態,列出當前目錄所有還沒有被git管理追蹤的文件和被git管理且被修改但還未提交更新的文件.
git commit提交更新到倉庫
.git目錄
在我們使用git init初始化git倉庫的時候,會生成一個.git的隱藏目錄,git會將所有的文件,目錄,提交等轉化為git對象,壓縮存儲在這個文件夾當中。
?
- COMMIT_EDITMSG:保存最新的commit message,Git系統不會用到這個文件,只是給用戶一個參考
- config:這個是GIt倉庫的配置文件
- description:倉庫的描述信息,主要給gitweb等git托管系統使用
- HEAD:這個文件包含了一個檔期分支(branch)的引用,通過這個文件Git可以得到下一次commit的parent
- hooks:這個目錄存放一些shell腳本,可以設置特定的git命令后觸發相應的腳本;在搭建gitweb系統或其他
git托管系統會經常用到hook script - index:這個文件就是我們前面提到的暫存區(stage),是一個二進制文件
- info:包含倉庫的一些信息
- logs:保存所有更新的引用記錄
- objects:所有的Git對象都會存放在這個目錄中,對象的SHA1哈希值的前兩位是文件夾名稱,后38位作為對象文件名
- refs:這個目錄一般包括三個子文件夾,heads、remotes和tags,heads中的文件標識了項目中的各個分支指向的當前commit
- ORIG_HEAD:HEAD指針的前一個狀態
48,.DS_Store文件
.DS_Store是一種由蘋果公司的Mac OS X操作系統所創造的隱藏文件,目的在于存貯目錄的自定義屬性
例如文件們的圖標位置或者是背景色的選擇。[2]該文件由Finder創建并維護,類似于Microsoft Windows中的desktop.ini文件
Mac OS X的Finder程序會在進行存取的每個目錄下創建.DS_Store文件,甚至是在遠程系統上的目錄(例如通過SMB連接或者蘋果文件協議連接來共享的目錄),并且甚至如果用戶僅僅通過移動該目錄的Finder窗口自定義了其顯示
49,mysql 中遇到的問題:
問題一:
在腳本中連接數據庫時蹦出來的問題:
mysqli_connect(): (HY000/1698): Access denied for user 'root'@'localhost'
解決辦法:
mysql -u rootuse mysql;update user set plugin='mysql_native_password' where user='root';flush privileges;exitservice mysql restart然后執行:
mysql -u root -p輸入密碼,如果登不進去了,去修改密碼
mysql -u rootupdate mysql.user set authentication_string=password('root') where host='localhost' and user='root';flush privileges;應該就可以了
問題二:
創建 新用戶并 賦予新用戶 所有權限后? 在用新用戶登錄后,創建數據庫時出現:新用戶不能創建數據庫
create database sd;ERROR 1044 (42000): Access denied for user 'luohao'@'%' to database 'sd'解決辦法:(應該是權限賦予的不對,重新賦予新用戶權限)
mysql -u root -p輸入密碼mysql> grant all on *.*-> to luohao identified by 'root'-> with grant option;flush privileges;exitservice mysql restart50,命令執行漏洞
涉及到的函數:PHP中的? system()、exec()、eval()、shell_exec()、passthru()、assert()等函數
函數功能:
system():
system?(?string?$command?[,?int?&$return_var?] ) :?string操作系統?—?執行外部程序并顯示輸出
exec():
exec (字符串 $command [,數組 &$output [, int &$return_var ]]):字符串exec()執行給定的?command。EXEC?-?執行外部程序
?
passthru():
passthru (字符串 $command [, int &$return_var ]): void函數是類似于?EXEC()的功能,它執行?command。當Unix命令的輸出是二進制數據且需要直接傳遞回瀏覽器時,應使用此函數代替exec()或?system()。這樣做的常見用法是執行類似pbmplus實用程序的程序,該程序可以直接輸出圖像流。通過將Content-type設置為image / gif,然后調用pbmplus程序輸出gif,可以創建直接輸出圖像的PHP腳本,沒有返回值
shell_exec():
shell_exec?(字符串?$cmd?):字符串shell_exec?—?通過外殼執行命令并以字符串形式返回完整的輸出
?assert():
assert?(?mixed?$assertion?[,?Throwable?$exception?] ) :?boolassert()?會檢查指定的?assertion?并在結果為?FALSE?時采取適當的行動。
如果?assertion?是字符串,它將會被?assert()?當做 PHP 代碼來執行。?assertion?是字符串的優勢是當禁用斷言時它的開銷會更小,并且在斷言失敗時消息會包含?assertion?表達式。 這意味著如果你傳入了 boolean 的條件作為?assertion,這個條件將不會顯示為斷言函數的參數;在調用你定義的?assert_options()?處理函數時,條件會轉換為字符串,而布爾值?FALSE?會被轉換成空字符串。? assert_options()函數是assert()的約束版本
assert_options(ASSERT_ACTIVE,?1);? 將ASSERT_ACTIVE置1,即打開 assert()功能
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
總結
- 上一篇: CTF——MISC——流量分析
- 下一篇: SSH服务的渗透测试