【需求】mitm热加载加个beforeRequest函数、以及hijackHTTPResponse类似的方法
n1ec opened this issue · comments
类似hijackHTTPResponse方法
手动劫持后回显返回包,手动修改后通过该方法进行加密发送到测试的客户端或者前端
场景:改包避免超时
函数大概要求
返回数据前手动修改请求包可以做个加密 OR发送请求的时候也可以根据手动劫持的明文做个加密再发包
说明:
比如以下的返回包,这个是就是通过了hijackHTTPResponse方法进行解密了,通过forward回显到手动截至页面
{
"Code": "200",
"Msg": "操作成功",
"Data": "{“id”:"1","usertype":"user"}"
}
那么需要有个函数是“允许返回数据包前再做一次处理”
和wenfuzz热加载里面的函数差不多
// beforeRequest 允许发送数据包前再做一次处理,定义为 func(origin []byte) []byte
beforeRequest = func(req) {
}
当使用这个调用函数的时候,可以做个加密然后再返回去 ,比如做完的加密如下,当然这只是调用函数里面对其中一个值进行修改,也可以根据业务进行全部加密,按业务需写,
{
"Code": "200",
"Msg": "操作成功",
"Data": "U2FsdGVkX1/Se0ctyky1T0iIa1skzwzWbCO7r2xVtyzCZlGEgLvcpxEogJQuXLmi5Vm3lLDBgq22f5x4W5kLILNOld6EIOnfiEd2DxwiWAnFCOuuERmq4HupFMGdgN+"
}
你是否正在寻找:
# hijackHTTPRequest 每一个新的 HTTPRequest 将会被这个 HOOK 劫持,劫持后通过 forward(modified) 来把修改后的请求覆盖,如果需要屏蔽该数据包,通过 drop() 来屏蔽
# ATTENTION-DEMO:
# hijacked = str.ReplaceAll(string(req), "abc", "bcd")
# 1. forward(hijacked):确认转发
# 2. drop() 丢包
# 3. 如果 forward 和 drop 都没有被调用,则使用默认数据流
# 4. 如果 drop 和 forward 在一个劫持中都被调用到了,以 drop 为准
/*
# Demo2 Best In Practice
hijackHTTPRequest = func(isHttps, url, req, forward, drop) {
if str.Contains(string(req), "/products/plugins/plugin_11") {
modified = str.ReplaceAll(string(req), "/products/plugins/plugin_11", "/products/plugins/plugin_create")
forward(poc.FixHTTPResponse(modified))
}
if str.Contains(string(req), "/products/plugins/plugin_12") {
drop()
}
}
*/
hijackHTTPRequest = func(isHttps, url, req, forward /*func(modifiedRequest []byte)*/, drop /*func()*/) {
}
不是
support yaklang/yaklang#1211