如圖1齐饮【枇龋“同學(xué)寫了個ping功能,但沒有寫waf,老師告訴她這是非常危險的,你知道為什么嗎祖驱∥湛遥”,這是一道經(jīng)典題捺僻,多次出現(xiàn)在各種類型的比賽中乡洼。
一、漏洞成因:如題目所說匕坯,在給予了高權(quán)限的位置束昵,沒有waf過濾,約等于白送管理員權(quán)限葛峻。
二锹雏、利用方法:可以利用管道符號連接其他命令,然后做你想做的事术奖。
三礁遵、準(zhǔn)備知識:
1轻绞、管道符號
①在 Bash 中,管道符使用"丨"代表佣耐。管道符也是用來連接多條命令的政勃,如"命令1丨命令2"。
②不過和多命令順序執(zhí)行不同的是晰赞,用管道符連接的命令稼病,命令 1的正確輸出作為命令 2 的操作對象选侨。這里需要注意掖鱼,命令 1 必須有正確輸出,而命令 2 必須可以處理命令 1 的輸出結(jié)果援制;而且命令 2只能處理命令 1 的正確輸出戏挡,而不能處理錯誤輸出。
2晨仑、ping命令只有正確執(zhí)行后褐墅,才能視為“有正確輸出”(ping命令在執(zhí)行后也會返回0或1表示是否正確執(zhí)行了)
四、Payload
①ping 127.0.0.1 | find / -name "flag*"
發(fā)現(xiàn)服務(wù)器未做任何過濾洪己,正惩椎剩回顯,在home路徑下有flag.txt文件
②ping 127.0.0.1 | cat /home/flag.txt
至此得到flag答捕。
五逝钥、管道符號其他應(yīng)用場景
①我們經(jīng)常需要使用"||"命令査看文件的長格式,在有些目錄中文件眾多拱镐,比如 /etc/ 目錄艘款,使用"ll"命令顯示的內(nèi)容就會非常多,只能看到最后的內(nèi)容沃琅,而不能看到前面輸出的內(nèi)容哗咆。這時,我們馬上想到 more 命令可以分屏顯示文件內(nèi)容益眉,可是怎么讓 more 命令分屏顯示命令的輸出呢晌柬?
[root@localhost ~]# ll -a /etc/|more
這條命令大家可以這樣理解:先把"ll -a /etc"命令 的輸出保存到某個臨時文件中,再用 more 命令處理這個文件郭脂。也就是我們說的第一個命令的正確輸出是第二條命令處理和操作的對象年碘。
注意,ll 命令操作的是文件名朱庆,所以匹配時使用的是通配符盛泡。但是一旦加入管道符,管道符之后的內(nèi)容相當(dāng)于操作的是文件內(nèi)容娱颊,所以匹配時使用的是正則表達(dá)式傲诵。
②用于從一個命令的結(jié)果里查找關(guān)鍵詞或者記次
參考資料:
http://c.biancheng.net/view/949.html
http://www.reibang.com/p/0f5b68d584c9