Python利用Charles 實(shí)現(xiàn)全部自動(dòng)答題思路流程分析
利用Charles 達(dá)成“我是達(dá)人”答題類爆破思路最近公司需要使用“我是答題”小程序,對(duì)武漢疫情進(jìn)行知識(shí)問(wèn)題;榜單靠前的也有一定的學(xué)分獎(jiǎng)勵(lì);雖然平時(shí)總不屑于公司組織的此類活動(dòng),但是看了這次活動(dòng)形式,還是決定直接“爆破
0x01 思路18年大火的直播答題中,對(duì)某答題app也進(jìn)行了類似爆破,并薅了不少羊毛,到了后期已經(jīng)做到了全自動(dòng)化的答題,并且是100%正確正常情況下小程序和服務(wù)端通信流程
使用charles對(duì)請(qǐng)求進(jìn)行串改流程
因?yàn)槲业闹髁﹄娔X就是MacOS,所以就直接使用了Charles,當(dāng)然Windows上也有很多類似軟件,這里不再贅述。
0x02 開(kāi)始我先正常完成一輪答題,可以在Charles上看到小程序和服務(wù)端的每次通信報(bào)文,通過(guò)對(duì)請(qǐng)求接口分析,大致梳理出以下兩個(gè)接口
1. 開(kāi)始測(cè)試&挑戰(zhàn)接口:https://v4.21tb.com/race-mobile/mina/startRace.do
2. 上傳答案&獲取下次題目接口:https://v4.21tb.com/race-mobile/mina/userAnswer.do
對(duì)請(qǐng)求報(bào)文和返回報(bào)文分析后,確定報(bào)文的data.examItem.itemOptions[].isCorrect節(jié)點(diǎn)為正確答案。
{ 'success': false, 'data': {'examItem': { 'itemOptions': [{'content': '疑似或確診病例有過(guò)近距離接觸','isCorrect': true }, {'content': '感冒的病人','isCorrect': false }], 'itemName': '什么是新型冠狀病毒密切接觸者?'} }, 'message': null, 'status': 'SUCCESS'}
只要搭建一個(gè)中間代{過(guò)}{濾}理服務(wù),在返回給小程序時(shí)把content字段進(jìn)行修改,即可讓我們快速在小程序上看到正確答案。 本次我使用的nodejs進(jìn)行開(kāi)發(fā),我對(duì)nodejs語(yǔ)法還停留在新手上,將就看
router.post(’/21tb/:do’, function (req, res, next) { console.log(req.params.do); fly.post(’https://v4.21tb.com/race-mobile/mina/’ + req.params.do + ’.do’, req.body, { headers: { 'content-type': 'application/x-www-form-urlencoded' } }) .then(d => { console.log(d.data.data) if (d.data.data) {if (d.data.data instanceof Array) { for (var inx in d.data.data) { var data = d.data.data[inx]; if (data.examItem && data.examItem.itemOptions) { var itemOptions = d.data.data.examItem.itemOptions; if (itemOptions) {for (var inx in itemOptions) { var item = itemOptions[inx] if (item.isCorrect) { item.content = ’✅’ + item.content; }} } } }} else { if (d.data.data.examItem && d.data.data.examItem.itemOptions) { var itemOptions = d.data.data.examItem.itemOptions; if (itemOptions) { for (var inx in itemOptions) {var item = itemOptions[inx]if (item.isCorrect) { item.content = ’✅’ + item.content;} } } }} } res.send(d.data); }) .catch(function (error) { console.log(error); });[/size][/font][/color][/indent][indent][color=rgb(36, 41, 46)][font=-apple-system, BlinkMacSystemFont, '][size=16px]});
再來(lái)看Charles上的配置,主要使用的Map Remote功能
通過(guò)這一系列的配置后,就可以實(shí)現(xiàn)對(duì)小程序請(qǐng)求的中間者攻擊了最終效果,正確答案上會(huì)有個(gè)“✅”:
到此這篇關(guān)于Python利用Charles 實(shí)現(xiàn)全部自動(dòng)答題思路流程分析的文章就介紹到這了,更多相關(guān)Python實(shí)現(xiàn)全部自動(dòng)答題內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. javascript xml xsl取值及數(shù)據(jù)修改第1/2頁(yè)2. python opencv 實(shí)現(xiàn)讀取、顯示、寫(xiě)入圖像的方法3. JavaScript Tab菜單實(shí)現(xiàn)過(guò)程解析4. jsp+mysql實(shí)現(xiàn)網(wǎng)頁(yè)的分頁(yè)查詢5. ASP.NET MVC通過(guò)勾選checkbox更改select的內(nèi)容6. 存儲(chǔ)于xml中需要的HTML轉(zhuǎn)義代碼7. 使用AJAX(包含正則表達(dá)式)驗(yàn)證用戶登錄的步驟8. Python使用oslo.vmware管理ESXI虛擬機(jī)的示例參考9. Android實(shí)現(xiàn)圖片自動(dòng)切換功能(實(shí)例代碼詳解)10. ThinkPHP5 通過(guò)ajax插入圖片并實(shí)時(shí)顯示(完整代碼)
