图灵逆向——题六-倚天剑

打印 上一主题 下一主题

主题 1926|帖子 1926|积分 5778

从第六题开始就要有个先看看请求头的习惯了[doge]。
别问博主为什么要你养成这个习惯,问就是博主被坑过。。。

headers里面有一个加密参数S,然后你就去逆向这个S对吧。
然后一看响应:

好家伙返回的还是个密文,以是要两次逆向咯。。。

  
过程分析

headers中的S参数


可以看到这个S是32位的[疯狂暗示]。。。
根据启动器可以定位到headers参数生成的位置。

打上断点,可以看到headers是赋了一个hhh变量的值。

然后这个hhh就在上面的不远处。。。

以是大抵的加密逻辑就是这个window.xxoo方法了,先不急着点进去~
可以看到加密的明文就是sssssbbbbb与一个13位的时间戳做了一个字符串的拼接操作,然后传给了加密函数。(结果是个32位的[doge])
我们可以大胆的推测一下~

OK破案了,就是一个标准的md5加密算法,头部参数就解决了~
返回密文的解密

回到我们刚刚跟栈的位置,可以清晰的看到解密的方法就在下面。。。

打上断点进去看看,发现就是这里咯~

点进去查看方法内部具体的解密逻辑

然后就破案了,发现是个标准的AES算法。。。
以是这里就不要扣代码了,直接用标准库来还原算法,把key和iv都换成它的值就行了。。。
代码实现

  1. """
  2. -*- coding: utf-8 -*-
  3. @File   : .py
  4. @author : @鲨鱼爱兜兜
  5. @Time   : 2025/04/05 21:25
  6. """
  7. import json
  8. import time
  9. from Crypto.Cipher import AES
  10. from Crypto.Util.Padding import unpad
  11. import binascii
  12. import requests
  13. from hashlib import md5
  14. def decrypt(encrypted_hex):
  15.     """
  16.     My Decrypt Func
  17.     :param encrypted_hex:
  18.     :return:
  19.     """
  20.     key = b'xxxxxxxxoooooooo'
  21.     iv = b'0123456789ABCDEF'
  22.     ciphertext = binascii.unhexlify(encrypted_hex)
  23.     cipher = AES.new(key, AES.MODE_CBC, iv)
  24.     decrypted = cipher.decrypt(ciphertext)
  25.     plaintext = unpad(decrypted, AES.block_size)
  26.     return plaintext.decode()
  27. cookies = {
  28.     'Hm_lvt_b5d072258d61ab3cd6a9d485aac7f183': '1743857254',
  29.     'HMACCOUNT': 'C8ED1E9E0FB8E4AC',
  30.     'sessionid': '你的值',
  31.     'v': '你的值',
  32.     'Hm_lpvt_b5d072258d61ab3cd6a9d485aac7f183': '1743860531',
  33. }
  34. s = 0
  35. for page in range(1, 21):
  36.     tt = int(time.time() * 1000)
  37.     headers = {
  38.         'accept': '*/*',
  39.         'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8',
  40.         'cache-control': 'no-cache',
  41.         'pragma': 'no-cache',
  42.         'priority': 'u=1, i',
  43.         'referer': 'https://stu.tulingpyton.cn/problem-detail/6/',
  44.         's': md5(f'sssssbbbbb{tt}'.encode()).hexdigest(),
  45.         'sec-ch-ua': '"Chromium";v="134", "Not:A-Brand";v="24", "Google Chrome";v="134"',
  46.         'sec-ch-ua-mobile': '?0',
  47.         'sec-ch-ua-platform': '"Windows"',
  48.         'sec-fetch-dest': 'empty',
  49.         'sec-fetch-mode': 'cors',
  50.         'sec-fetch-site': 'same-origin',
  51.         'tt': f'{tt}',
  52.         'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36',
  53.     }
  54.     params = {
  55.         'page': f'{page}'
  56.     }
  57.     response = requests.get('https://stu.tulingpyton.cn/api/problem-detail/6/data/', params=params, cookies=cookies,
  58.                             headers=headers)
  59.     response.raise_for_status()
  60.     response.encoding = 'utf-8'
  61.     data = json.loads(decrypt(response.json()['t']))
  62.     print(data)
  63.     s += sum(data['current_array'])
  64. print(s)
复制代码
第六题秒了[doge]~
@鲨鱼爱兜兜

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

忿忿的泥巴坨

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表