Ⅰ 批量將不同壓縮包中不同路徑的相同格式文件提取出來,並放到單獨文件夾的批處理命令如何寫
我知道winrar的壓縮軟體可以通過添加 r參數來控制壓縮和解壓時遍歷文件夾,如
rar a -u -ep -r 1.zip c:\temp\sc 可以遍歷 c:\temp\sc 目錄下的所有文件夾及子文件夾創建到壓縮文件1.zip
同樣,解壓也可以用r參數,實現遍歷壓縮文件裡面的目錄。
壓縮軟體很多,但我覺得winrar這款軟體在提供dos命令這方面做得比其他都好,你的看起來不是用winrar軟體解壓的,不過估計命令差不多,你可以試試添加r參數看看,即使用「7z e -r epub\%%i OEBPS\Text\*.xhtml」,如果不行,可以看你使用的解壓縮軟體的幫助文件,可能會找到你需要的參數,找不到的話可以改用winrar軟體來處理。
如果不是對壓縮文件內的內容進行遍歷的話,之時想遍歷某個文件夾下的所有文件及文件夾,則在dir命令後加上 /s 參數即可,即更改為for /f %%i in ('dir /s /b epub\*.epub') do
希望能解決你的問題,並讓你獲得啟發,望採納喲
Ⅱ [車聯網安全自學篇] 四十六. Android安全之ZIP文件目錄遍歷漏洞
zip格式的壓縮包文件允許包含 "../" 類型的字元串,以表示上一級目錄。攻擊者通過精心構造zip文件,利用多個 "../" 改變文件存放位置,可替換原有文件,如.so、.dex或.odex類型文件。這可能導致本地拒絕服務或任意代碼執行漏洞,危害設備安全和信息。例如,寄生獸、海豚瀏覽器遠程命令執行和三星默認輸入法遠程代碼執行等著名事件。
在Linux系統中,"../" 代表切換到上一級目錄。某些程序處理如"../../../../../../../../../../../etc/hosts"表示的文件時,會跳出當前工作目錄,轉至對應目錄下的hosts文件。
Java代碼在解壓zip文件時,使用ZipEntry類的getName()方法獲取文件名稱。如果zip文件中包含 "../" 字元串,該方法返回值會原樣返回,不進行過濾。在Android系統中,由於../代表回到上層目錄,且解壓工作在本應用內,應用可藉助自身許可權,通過構造惡意文件名如"../../../data/data/...",使解壓文件到應用的沙盒中。
示例zip包包含:
- 直接修改請求的host和路徑地址的中間人攻擊方法
- 反編譯APK為smali,修改請求地址對應的smali文件
- 動態載入代碼前未做簽名校驗,利用目錄穿越漏洞實現任意代碼執行,甚至持久化攻擊
在Android中,System.loadLibrary()從應用的lib目錄載入.so文件,而System.load()使用絕對路徑載入.so文件,可在SD卡或應用的files目錄中,只要應用有讀取許可權即可。在files目錄中,應用有寫入許可權,利用ZIP文件目錄遍歷漏洞替換.so文件,實現遠程命令執行。
海豚瀏覽器的主題設置允許用戶通過網路下載主題替換,通過中間人攻擊修改主題zip包,可實現在海豚瀏覽器擁有許可權的目錄寫入文件,替換關鍵文件,導致動態鏈接庫libdolphin.so被覆蓋。libdolphin.so沒有放在應用數據的lib目錄下,而是放在files目錄中,增加了被覆蓋的風險。
修復建議:
1. 對zip文件中路徑進行驗證和過濾,防止 "../" 導致的目錄穿越。
2. 使用簽名校驗確保載入的.so文件來源安全。
3. 限制文件系統寫入許可權,特別是敏感目錄。
4. 定期更新和維護系統以修復已知漏洞。
5. 對用戶上傳或下載的文件進行嚴格審查。