去哪儿 pre (window._pt_)参数 分析

声明:本文仅限交流学习使用,请勿使用在任何非法商业活动,禁止用于非法用途。否则后

果自负。如有侵权,请告知删除,谢谢!

前面文章我们分析了 Payload 里面的__m__和 bella 的生成,细心的同学会发现,在__m__和bella的下面几行,就有疑似pre的地方

 全局搜索pre也可以,但是全局搜出来的结果太多了,分析起来比较麻烦

先在之前发现的 疑似 pre 的地方 打断点,结果发现无法下断点,这时候需要一定经验,js调试过程下断点时最好在,代码所在的 return 语句 或者 函数 的开头和结尾打上断点     

 刷新网页,成功断下,发现pre 被绑定在了 window._pt_ ,

接下来 全局搜 _pt_,发现没什么用,找不到生成的地方

此时静下心思考,搜不到应该是因为字符串被加密 或者 参数是动态生成,怎么办呢?

一般遇到这样的情况,我们可以看下这次请求是什么类型的,如果是XHR,那么就可以下xhr断点,然后查看调用栈寻找关键代码

如何查看请求类类型呢,资源面板左侧,找到js文件,鼠标右键,选择在 网络面板 中打开,如下

 

 

 然后发现并不是XHR,是script类型的

有基础的都知道xhr是什么, 这里是script代表这个js文件在HTML的script标签里,怎么办呢? 那就打 script 断点呗

 监听哪里添加window._pt_,  作用是在调试过程中一旦生成_pt_的值,就能看到,进而就能确定pre生成的大概位置, 接下来, 刷新网页,单步调试

 F10单步调试十几下,有发现了

 再次刷新网页,F10跟进,当刚刚执行到script标签时,按F11步入进去,

 然后格式化代码,发现又是混淆的JS,整体结构跟生成bella的js代码类似,但是多刷新几次,发现是动态混淆,并且复制到本地调试时(Vscode和pycharm都行),发现会卡死 报内存溢出的错误, 经过仔细观察,发现有多处格式化检测,用来内存爆破,真的很恶心人呀,那就先不格式化,运行下看看

 竟然是 undefind, 应该是运行环境不同(浏览器环境和和node环境)条件缺失,造成某些代码没有执行

 回到浏览器,一步步调试,这个过程很漫长很苦B,发现有多处环境检测,环境检测中还有html标签检测,缺什么补什么,经过一番掉头发调试,结果如下

 你以为这就完了吗? 别忘了这是动态混淆的,每次刷新请求 返回的代码时变化的,

要么利用AST技术把代码进行混淆还原,在慢慢梳理进行算法还原,,要想完全还原其实步骤也挺复杂的 ,    我选择用python请求这个HTML, 然后动态的获取script标签里的JS代码,最后效果如下

 至此,pre 的算法分析解决完成,难的是调试过程 ,混淆的代码确实看着不舒服,很多地方都需要一边控制台输出,一边调试。

欢迎私信技术交流!

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
这是一个 SQL 语句,不是 JSON,可以通过以下步骤进行优化: 1. 将 OLD 表示的表名改为实际的表名,这样可以减少解析时间。 2. 将 SELECT 子句中只查询必要的列,避免查询不必要的列,减少 IO 和 CPU 的消耗。 3. 如果可能,可以将一些列合并为一个 JSON 字段,减少查询的列数和数据量。 下面是一个优化后的 SQL 语句示例: SELECT JSON_OBJECT( 'id', OLD.ID, 'business_id', OLD.BUSINESS_ID, 'application_date', OLD.APPLICATION_DATE, 'finish_date', OLD.FINISH_DATE, 'linkman_id', OLD.LINKMAN_ID, 'tomb_id', OLD.TOMB_ID, 'tomb_stone_id', OLD.TOMB_STONE_ID, 'ash_business_id', OLD.ASH_BUSINESS_ID, 'register_user', OLD.REGISTER_USER, 'register_user_name', OLD.REGISTER_USER_NAME, 'register_date', OLD.REGISTER_DATE, 'dept_id', OLD.DEPT_ID, 'dept_name', OLD.DEPT_NAME, 'status', OLD.`STATUS`, 'book_id', OLD.BOOK_ID, 'business_version', OLD.BUSINESS_VERSION, 'is_creatework', OLD.IS_CREATEWORK, 'is_sendcustomer', OLD.IS_SENDCUSTOMER, 'send_user', OLD.SEND_USER, 'send_date', OLD.SEND_DATE, 'user_name', OLD.USER_NAME, 'tomb_designer', OLD.TOMB_DESIGNER, 'tomb_designer_id', OLD.TOMB_DESIGNER_ID, 'design_start_date', OLD.DESIGN_START_DATE, 'design_end_date', OLD.DESIGN_END_DATE, 'tomb_certificate_no', OLD.TOMB_CERTIFICATE_NO, 'contract_no', OLD.CONTRACT_NO, 'contract_print_num', OLD.CONTRACT_PRINT_NUM, 'customer_lock', OLD.CUSTOMER_LOCK, 'customer_user', OLD.CUSTOMER_USER, 'customer_date', OLD.CUSTOMER_DATE, 'pre_book_id', OLD.PRE_BOOK_ID, 'earnest_date', OLD.EARNEST_DATE, 'payoff_date', OLD.PAYOFF_DATE, 'invoice_date', OLD.INVOICE_DATE, 'linkman_name', OLD.LINKMAN_NAME, 'validate_date', OLD.VALIDATE_DATE, 'layer_code_new2', OLD.LAYER_CODE_NEW2, 'bury_date_remark', OLD.BURY_DATE_REMARK, 'design_date_remark', OLD.DESIGN_DATE_REMARK, 'old_tomb_id', OLD.OLD_TOMB_ID, 'contract_date', OLD.CONTRACT_DATE, 'linkman_before_id', OLD.LINKMAN_BEFORE_ID, 'if_save', OLD.IF_SAVE, 'collect_version', OLD.COLLECT_VERSION ) FROM table_name AS OLD;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老妖哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值