從CTF題目中領悟的滲透技巧
0x1 題目來源
本來個人不是很喜歡去做那些CTF題目,覺得無聊,還是比較喜歡實戰一些,但是現在發現,有的CTF做起來可以獲取到一些奇特的滲透技巧。這篇文章就是圍繞著一道題目獲取到的一些奇葩小思路。忘記在哪裡看到的題目了,反正我記得題目的大概。就重新復現了一個出來,思路來源也是來自一個大牛的小密圈。感覺很好的思路,所以就分享出來,畢竟入小密圈是收費的嘛,知識應該共享的。
0x2 題目要求
題目大概的要求是這樣的:
題目的代碼是我重新寫出來的,多少根原題有些不一樣。但是大概差不多了。就是有一道`flag`存放在,`4hou.php`文件中,想辦法讀取這個文件,並取得`flag`。
0x3 題目復現
在想辦法復現之前先來看看`4hou.php`文件中究竟有什麼東西:
這就是存放在`4hou.php`文件中的內容。重新回到題目中,首先,看到`http://192.168.12.102/index.php?cmd=`這樣的url相信大家在第一時間都會想到命令執行,沒錯的就是命令執行。先來輸入一道命令來查看下他是什麼情況,到底是怎麼個意思。提交一個這樣`http://192.168.12.102/index.php?cmd=cat `的鏈接,看看回顯出來的是什麼樣子
發現回顯中並沒有空格,那肯定我們得自己家一個空格了,加上空`%20`提交
> http://192.168.12.102/index.php?cmd=cat%20
猜對了,加上一個空格成功被分割開了。這個是有有的同學就像說,把`cat`命令之前在加一個空格,那樣`curl`命令也可以分割開了,分隔開是沒有錯了,但是有什麼用?命令就執行了`curl cat 4hou.php`這樣的一道命令,一樣還是沒有執行`cat`命令。
繼續提交一堆參數,看看這個函數究竟過濾了什麼。提交`http://192.168.12.102/index.php?cmd=/+-()*`,一堆有的沒的,目的就是看這個參數過濾了什麼
過濾了什麼,沒過濾什麼一幕瞭然。
現在要想的就是如何讓`curl` 不執行,但是要讓`cat`命令執行。想想,怎麼辦?
使用`%0a`,這個`url`編碼是換行符,曾經在sql注入的時候的時候,經常使用`%0a`字元來換行污染來進行注入的。那不妨來嘗試一下,看看能不能在`curl`之後換行進行執行。提交`http://192.168.12.102/index.php?cmd=%0acat%20`
成功讀出來了存放在`4hou.php`中的內容 ps:因為我不太會寫php,代碼的問題輸出了兩遍。
0x4 難度增加,不服繼續
上面的代碼沒有過濾空格,現在,我在代碼中過濾了空格。往下之前先自己想想,你還能過嗎?
有了上面的測試結果,這一步就很容易實現了,空格過濾了,`%0a`該換行還得換行,這個是沒有問題的,現在的問題是空格過濾了,怎麼玩?
這裡就需要一個小技巧了,linux下``這兩個符號的妙用也是很重要的,對linux熟悉的同學,思路就有了,`>`這個符號是寫入,`
構造`payload`:`http://192.168.12.102/index.php?cmd=%0acat%3C`
過濾空格又何妨?一樣可以想辦法執行的!
0x5 任意代碼執行?
過濾了一堆,那還有沒有可能來構造任意代碼執行?
標題都寫這裡了,當然有機會了!相信所有人在思考的問題都是空格怎麼解?
在linux中,可是有代替空格的東西哦,比如`` 。試一下
看,ok的,重新回到網站中嘗試構造`payload`:`http://192.168.12.102/index.php?cmd=%0als$-a`
結果:
任意代碼都沒有問題了。都這樣了,當然繼續猥瑣了,我們想看的文件無非就是`passwd`文件,但是`/`被過濾了,怎麼繞過?
少年莫慌,咱們繼續執行`env`命令,可以看到全部的環境變數提交:`http://192.168.12.102/index.php?cmd=%0aenv%3C`
因為解析的問題,是在沒辦法在web上跑了,不得不轉向虛擬機(只是這裡沒有辦法提取到環境變數而已,方法還是有的,往下看)
反正照樣執行成功,就算他過濾的再凶,終究是有辦法繞過的。只有想不到,沒有騷不到。
0x6 其他騷操作
因為解析不了的原因,沒的辦法,只能用虛擬機演示了。
還可以使用base64加密繞過,終端下執行:
> echo Y2F0IC9ldGMvcGFzc3dk|base64 -d|bash
`Y2F0IC9ldGMvcGFzc3dk`加密之前為`cat /etc/passwd`
一樣可以順利執行代碼。
修改代碼,講過濾條件修改
> array( > , , , / , ,
還有沒有希望?
0x7蛇皮操作---最終章
這種操作真的是喪心病狂,只要你環境變數中有的字元,我無法調用算我輸!
`expr`萬能的神!比如說你看上了這個`:`
直接構造`expr$substr$$DISPLAY$1$1`
想要別的!
要什麼有什麼!
當然,這一切的一切都要構造在兩個條件之上!:
- 沒有過濾`$`,和`{`,`}`
- 環境變數中得有啊
有了以上的這個方法,我們在回到`0x5`,剛剛密碼是沒有讀取成功的,重新構造一個,先來構造一個`/`,
使用`$(expr$substr$$PWD$1$1)`來代替`/`
`$`來代替空格,構造出來的`payload`如下
`http://192.168.250.227/index.php?cmd=%0acat$$(expr$substr$$PWD$1$1)etc$(expr$substr$$PWD$1$1)passwd%3C`
提交看結果
0x8總結
有了這個思路我又想到之前的《spring框架的任意代碼執行》,之前並沒有想到有這樣的用法,那現在就再回頭研究下吧。
測試代碼
> ```>
";> echo "curl{$a}4hou.php";> ?>> ```
點擊展開全文
※微軟官方詳細分析Fireball惡意軟體,其實它沒那麼可怕
※如何使用瀏覽器網路監視工具進行黑客攻擊
※突發!32TB Windows 10核心代碼泄漏,被人上傳至第三方公開網站
TAG:嘶吼RoarTalk |
※JNIS7月刊:靜脈導航/OCT/SWIFT研究中的領悟
※從「中興危機」領悟乒乓球要領
※「悟」各中道理 隨緣領悟
※領悟盆景技與藝的完美結合
※都說三防手機更適合老人?深度體驗MANN S2讓我徹底領悟
※中藥總被「懟」為哪般?領悟中醫,需追本溯源領悟中國文化
※KOF拳皇:屌絲翻身?曾經的最弱角色竟然領悟了拳皇中的最強技能
※BLG晉級德杯決賽,又一位選手領悟眾生平等,他就是下路的therang
※Letme已成RNG大腿,領悟到眾生平等的真諦,他是真正玩懂LOL的人
※領悟 | 半價追看《Crazy Rich Asian》,是諷刺的現實還是虛構的喜劇?
※多麼痛的領悟:致所有的社交媒體-臉書Facebook如何真正自我修復
※《論語》中最有道理的8句話,領悟透了受益一生!
※從水彩油畫趨同演化及創作實驗中領悟水彩本體語言
※一文帶你深度領悟機器學習在量化領域的應用
※Strength in Numbers,多麼痛快的領悟
※在困境中領悟到的道理
※理一理領悟「體用虛空」的思路
※「董針秘要」的領悟
※envy新EP 首發:因為能感受到痛苦,所以才能領悟喜悅
※項羽對這一點的領悟和實踐,超過後世中國絕大部分軍事家