# 連猴子都看得懂的簡易mspaint隱寫術 參考文章 https://cn-sec.com/archives/1554579.html https://www.pentestpartners.com/security-blog/breaking-out-of-citrix-and-other-restricted-desktop-environments/#gainingacommandshell --- ## 簡易範例 -- CMD.exe 將畫布調整成6:1px ![](https://i.imgur.com/89dIEOu.png) 使用顏色選擇器指定顏色,左到右分別為RGB ``` 1. R:10,G:0,B:0 2. R:13,G:10,B:13 3. R:100,G:109,B:99 4. R:120,G:101,B:46 5. R:0,G:0,B:101 6. R:0,G:0,B:0 ``` 完成圖 ![](https://i.imgur.com/wiAxfyp.png) 將圖片存檔成.bmp 將.bmp改成.bat即可呼叫cmd.exe ![](https://i.imgur.com/g0n5G2b.png) notepad++ 內容 ![](https://i.imgur.com/WD7CNdw.png) ## 原理 其實原理很簡單 RGB中有三個坐標值,分別對應紅綠藍三個顏色,可轉為16進制 然後RGB中的16進制可轉10進制,10進制再去轉成ASCII code ASCII表如下 ![](https://i.imgur.com/cdXhNrW.png) 但要注意的是RGB中的字元會反向,比如剛剛的cmd色表 ``` 1. R:10,G:0,B:0 -- (NUL)(NUL)/r 2. R:13,G:10,B:13 -- /n/r/n 3. R:100,G:109,B:99 -- dmc 4. R:120,G:101,B:46 -- xe. 5. R:0,G:0,B:101 -- e(NUL)(NUL) 6. R:0,G:0,B:0 -- (NUL)(NUL)(NUL) ``` 就是他讀的時候會反著讀,所以RGB要填色時要把字反著放 然後單個色=一個字元,所以1px的RGB可以塞三個字 開頭因為bmp會有固定的header,所以要換行,顏色固定開頭都會是(10.0.0)(13.10.13) 遇到空值(NUL)就是補0,所以最後要結尾時都是將顏色設為0 這樣就可以獲得一個(算是(?)被放程式碼的圖片了 ## powershell.exe 圖片多少px都沒差 反正空了就是補0 色碼 ``` 1. R:10,G:0,B:0 -- (NUL)(NUL)/r 2. R:13,G:10,B:13 -- /n/r/n 3. R:119,G:111,B:112 -- wop 4. R:115,G:114,B:101 -- ser 5. R:108,G:101,B:104 -- leh 6. R:101,G:46,B:108 -- e.l 7. R:0,G:101,B:120 -- (NUL)ex 8. R:0,G:0,B:0 -- (NUL)(NUL)(NUL) ``` 恭喜獲得powershell ![](https://i.imgur.com/OfbbD40.png) >shellcode熱血開塞(X >[name=羽澤] ## 如果格子字數算的好的話 也可以直接用WINHEX去編輯