利用charles 達(dá)成“我是達(dá)人”答題類爆破思路
最近公司需要使用“我是答題”小程序,對(duì)武漢疫情進(jìn)行知識(shí)問題;榜單靠前的也有一定的學(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 開始我先正常完成一輪答題,可以在charles上看到小程序和服務(wù)端的每次通信報(bào)文,通過對(duì)請(qǐng)求接口分析,大致梳理出以下兩個(gè)接口
1. 開始測(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)為正確答案。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
{ "success" : false, "data" : { "examitem" : { "itemoptions" : [{ "content" : "疑似或確診病例有過近距離接觸" , "iscorrect" : true }, { "content" : "感冒的病人" , "iscorrect" : false }], "itemname" : "什么是新型冠狀病毒密切接觸者?" } }, "message" : null, "status" : "success" } |
只要搭建一個(gè)中間代{過}{濾}理服務(wù),在返回給小程序時(shí)把content字段進(jìn)行修改,即可讓我們快速在小程序上看到正確答案。 本次我使用的nodejs進(jìn)行開發(fā),我對(duì)nodejs語法還停留在新手上,將就看
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
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 ] }); |
再來看charles上的配置,主要使用的map remote功能
通過這一系列的配置后,就可以實(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ù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!
原文鏈接:https://www.cnblogs.com/pythonQqun200160592/archive/2021/08/19/15157542.html