黑猫参数逆向

本帖子只仅仅是为了我本人学习笔记,为了我自己以后复习知识点用的,切勿用在商业用途或对平台做出攻击。本人概不负责。

一下简称黑猫吧。

一、分析

ts: 1647858750696
rs: DGIAstYmuAl75cXR
signature: 261a590c26ec211edbdfb9b1ce8692d7d292c5ddbac45f2e34857841fa17e4e7
callback: jQuery111203671219046350367_1647858750679
keywords: 减肥
page_size: 10
page: 2
_: 1647858750684

这其中加密的只有rs、signature。所以要逆向的也就是这两个参数。

二、找到signature加密地方

1.最开始我用了搜索,没找到正确的地方。

2.我点击Initiator跟着调用栈走,只找到了URL发送请求的地方,还是没找到加密的地方,理论上是能找到的,可能是我方法不对。

最后这两个常规方法用完之后,用了一下非常规方法。我将整个JS代码拷贝下来观察。

在观察整个代码结构的过程中发现了一个地方,瞬间秒懂,搜索关键词。

 三、破解加密

        l([p, b, y, d, h, u["type" + e]].sort().join(""));

		p:时间戳                            √
		b:"kTYLEM0wEF8NQjvO"
		y:"$d6eb7ff91ee257475%"    =>js文件中的固定值
		d:关键词
		h:10
		u["type" + e]]

定位到这里一切就很明朗了,挨个找到p, b, y, d, h, u["type" + e],这里面b其实就是最初的时候加密参数rs,而b的加密形成也很简单就在上面不远处,我就不截图了。

注意:这里的l是SHA256加密,我最初被干扰了,因为l返回的值是列表,列表里的元组从十进制转换成16进制正好和最后的加密结果一样,默认一直当做字符串转换成16进制往上逆。后来往上逆的过程中无意间看到了HMAC、Hex让我开始慢慢怀疑;

最后就这些,这个网站其实很简单,实在不知道该怎么再去详细了,再详细就成贴代码上来了;就这吧,每周坚持逆向一个网站,从简到难,一步一步提升自己。

exports = {
        LAWS_FEED: n + "laws/feed",
        INDEX_FEED: n + "index/feed",
        index_article: n + "articles/notice",
        PRAISE: n + "votes/add",
        MY_COMPLAINTS: n + "user/complaints",
        RECEIVED_COMPLAINTS: n + "user/received_complaints",
        COMPLETE_COMPLAINT: n + "complaint/completed/",
        SHARE_AMOUNT_COMPLAINT: n + "complaint/share_amount/",
        SHARE_AMOUNT_LAWS: n + "laws/share_amount/",
        NEW_SEND_MSG: n + "sms/send",
        CHANGE_SEND_MSG: n + "user/cert_send",
        CHANGE_SEND_CODE: n + "user/verify_phone",
        BINGDING_PHONE: n + "user/update_phone",
        MY_COMPLAINT_HISTORY: n + "company/my_search",
        MY_COMPLAINT_HOT: n + "company/hot",
        MY_COMPLAINT_COMPANY: n + "company/search",
        COMPLAINT_STORE: n + "complaint/store",
        COMPLAINT_STORE_UPDATE: n + "complaint/update",
        COMPLAINT_STORE_REPLY: n + "complaint/store_reply",
        COMPLAINT_STAR: n + "complaint/completed_evaluate",
        evaluate_star: n + "complaint/evaluate_after_auto_cocomplete",
        UPLOAD_IMAGES: n + "files/image_uploader?add_water=1",
        SEARCH_SUGGEST: n + "index/suggest",
        SEARCH_RESULT: n + "index/s",
        MESSAGE_LIST: n + "user/message_list",
        GET_VIDEOID: n + "video/create_video_and_notify",
        GET_AUTH_URL: n + "video/get_authed_s3_url",
        REPORT_FEED: n + "articles/feed",
        SELLER_FEED: n + "company/received_complaints",
        SELLER_LIST: n + "company/main_search",
        JURY_FEED: n + "jury/feed",
        JURY_LIST: n + "jury/list_complaints",
        JURY_REPLY: n + "jury/store_reply",
        JURY_INVITE: n + "jury/invite",
        HANDLE_INVITE: n + "jury/handle_invite",
        jury_zan: n + "jury/vote",
        jury_hot: n + "jury/hot",
        jury_hot_comp: n + "jury/hotcomps",
        jury_rank: n + "jury/rank",
        invite_list: n + "jury/jury_list",
        company_search: n + "user/search_recv_complaints?k=",
        complaint_types: n + "company/issues",
        company_billboard: n + "top_rank/rank",
        company_field: n + "top_rank/rank_fields",
        file_hide: n + "complaint/set_atch_hide",
        company_datas: n + "company/get_stast",
        name_hide: n + "complaint/set_anon",
        email_vc: n + "company/email_vc",
        add_email: n + "company/add_email",
        del_email: n + "company/del_email",
        email_list: n + "company/emails",
        group_list: n + "grp_comp/feed",
        group_tslist: n + "grp_comp/feed_by_co",
        group_suggest: n + "grp_comp/suggs",
        group_progress: n + "grp_comp/progs",
        group_comps: n + "grp_comp/comps",
        user_glist: n + "grp_comp/init_grpcomps",
        company_glist: n + "grp_comp/recv_grpcomps",
        group_reply: n + "grp_comp/store_reply",
        group_join: n + "grp_comp/join_info",
        group_store_sugg: n + "grp_comp/store_sugg",
        group_share_img: n + "grp_comp/shr_img",
        group_share: n + "grp_comp/incr_shr_amt/",
        group_file_hide: n + "grp_comp/set_atch_hide",
        group_can_join: n + "grp_comp/can_join",
        heimao315: n + "leadership/get_items",
        dataCompany: n + "company/quick_stat_list",
        dataStat: n + "company/quick_stat",
        join_company: n + "company/apply_settle",
        message_read: n + "user/message_read",
        message_read_all: n + "user/message_read_all",
        top_card_time: n + "top_rank/grprank_span",
        new_rank_card: n + "top_rank/grprank_card",
        filed_rank_card: n + "top_rank/grprank_field_card",
        top_card_list: n + "top_rank/grprank_list",
        week_rank_list: n + "top_rank/riserank_list",
        user_is_law: "".concat(n, "complaint/sync_lawfirm?"),
        all_comp_field: "".concat(n, "complaint/qxzx_fields?"),
        comp_is_field: "".concat(n, "company/field?"),
        comp_is_tip: "".concat(n, "company/get_popup"),
        comp_set_tip: "".concat(n, "company/set_popup"),
        comp_is_notice: "".concat(n, "user/check_agree?"),
        comp_set_notice: "".concat(n, "user/sign_agree?"),
        comp_car_data: "".concat(n, "company/auto_products?")
}



逆向步骤{
	1.分析参数{
		ts: 1647510985452
		rs: kTYLEM0wEF8NQjvO
		signature: 8fd59d909ac559ad5a926e54308d135492ef688b78b163977a143cfbb046495d
		callback: jQuery111207311518370923895_1647510985397
		keywords: 减肥
		page_size: 10
		page: 2
		_: 1647510985399
	}
	其中ts、和_目测是时间戳
	rs、signature、callback不知道是什么含义,其中除了signature外其他两个都没变过
	2.先从signature入手{
		a.全局搜索signature没搜索到,最后走的调用栈,找到了发送请求和加密的JS文件
		b.根据调用栈只找到了发送的入口,依然没找到加密的地方,而且发送入口的URL是被加密后穿过来的
		c.根据b可以理解未发送入口只是被别的地方当做一个函数调用而已,向上追溯并没有追溯到
		d.拷贝了整个js文件后观察到
			exports={
				        LAWS_FEED: n + "laws/feed",
						INDEX_FEED: n + "index/feed",
						index_article: n + "articles/notice",
						PRAISE: n + "votes/add",
						MY_COMPLAINTS: n + "user/complaints",
						RECEIVED_COMPLAINTS: n + "user/received_complaints",
						........
						SEARCH_RESULT: n + "index/s"
			}
		而这其中就有我们发送请求的url参数,然后针对SEARCH_RESULT全局搜索,果然找到了
	}
	3.破解加密参数{
		l([p, b, y, d, h, u["type" + e]].sort().join(""));

		p:时间戳                            √
		b:"kTYLEM0wEF8NQjvO"
		y:"$d6eb7ff91ee257475%"    =>js文件中的固定值
		d:关键词
		h:10
		u["type" + e]]

	}
}

最近有不少想学习这个的同学后台私信我,我平时偶尔看看后台消息,错过了好多小伙伴,我在优快云个人简介中留了我的联系方式,大家有想学的可以通过这个加我,记得加备注哈。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值