怎么查看坦白说是谁发的?

怎么查看坦白说是谁发的?

4月 3, 2018 阅读 7671 字数 1414 评论 0 喜欢 5

最近朋友说了一个神奇的网站,看到了一个神奇的app

http://www.xiaodao.la/i-wz-73033402.html

查询坦白说的网站

试了下还真可以,作者做得这么精致,scanf师傅就去逆了一下,得到了查询接口,emmmm连类名定义都是shell 23333。

http://tbs.qlike.cn/

CTF模式启动,查看了下源码:

 

原始接口应该是被ban了

然后看一下这个js加密,最开始不觉得有用,先放在一边。

//console.log(decrypt("*S1*oKnP7iEiowEPNv"));
function decrypt(a) {//没错这个函数就是偷的,我懒得写
    a = a.replace('*S1*', '');
    //console.log(a);
    var b = [{
            oe: '0',
            oK: '1',
            ow: '2',
            oi: '3',
            '7e': '4',
            '7K': '5',
            '7w': '6',
            '7i': '7',
            Ne: '8',
            NK: '9',
            Nv: '9'
        }, {
            4: '5',
            6: '1',
            n: '0',
            '-': '2',
            o: '3',
            v: '4',
            C: '6',
            S: '7',
            c: '8',
            E: '9'
        }, {
            5: '1',
            z: '0',
            A: '2',
            i: '3',
            P: '4',
            k: '5',
            s: '6',
            l: '7',
            F: '8',
            q: '9'
        }],
        c = [];
    return a.split('').forEach(function (e, f) {
        if (1 == f % 4) {
            var g = c.pop();
            c.push(g + e)
        } else c.push(e)
    }), c.map(function (e, f) {
        return b[f % 3][e] || '*'
    }).join('')
}

 

Burp一条龙服务启动:

经过一番查找,发现了这个

 

发送的是这样的json数据

箭头指向的应该就是qq号码了,不过加了密

从接下来这个请求可以确定QQ号码应该就是这个它了

 

腾讯的js大多做了304跳转,找了很久都没发现用于解密的js,太菜了算了。

 

我们刚才在神奇网站发现的js在现在就能派上用场了

改成python是这样的:

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Author : haya
import sys

def encode(key):
    d = {"oe": 0, "n": 0, "z": 0,
         "oK": 1, "6": 1, "5": 1,
         "ow": 2, "-": 2, "A": 2,
         "oi": 3, "o": 3, "i": 3,
         "7e": 4, "v": 4, "P": 4,
         "7K": 5, "4": 5, "k": 5,
         "7w": 6, "C": 6, "s": 6,
         "7i": 7, "S": 7, "l": 7,
         "Ne": 8, "c": 8, "F": 8,
         "NK": 9, "E": 9, "q": 9}
    a = key[4:]
    ans = ''
    l = len(a)
    i = 0
    while (i < l):
        if i + 1 < l:
            x = a[i] + a[i + 1]
            if x in d.keys():
                ans = ans + str(d[x])
                i = i + 2
                continue
        if a[i] in d.keys():
            ans = ans + str(d[a[i]])
        i = i + 1
    print(ans)

if __name__ == '__main__':
    encode(sys.argv[1])

这里的解密方式应该并没有得到腾讯的加密方式,而是用过暴力破解得到的,所以可能有些不准确,不过越靠前的号码越准。

好啦完毕。

现在抓包,解密,就可以知道坦白说是谁发的了

 

最后膜一波scanf大佬

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注