AntSword编码器与解码器

编码器

编码器核心参数

编码器的三个参数:pwd, data, ext

data与pwd

蚁剑的编码器中,data是一个Object对象,此处可以简易理解为一种Key->Value形式。

data['_']是存放原始Payload的地方,正常使用需要将其取出赋给data[pwd]

ext

ext 参数是编码器扩展信息。目前ext参数中有2个值,opts(WebShell配置) 和 rsa(蚁剑客户端rsa配置)。

opts中包括了WebShell的基础信息(比如:连接地址、密码、编码器、解码器、文字编码)、HTTP配置信息(Header和Body),还有其它配置(例如:数据分割符、分片大小等)。

可以通过ext参数动态修改 HTTP 请求,实现每次请求都不一样,也可以将payload放入header中。

示例

下面是一个示例编码器:

对于编码器来说,重要3个参数
pwd,data,ext

理解了三个参数的作用,学会使用方法后,我们就可以完全自定义http请求包,这也是编码器的核心作用。

对应shell配置

之后在Burp中可以查看具体流量

解码器

解码器的原理就是在执行的Payload后,加入调用对应解码器的代码,从而修改返回结果编码。
此处需要注意,解码器需要使用对应的WebShell语言去编写

实际解码器的流程:
编写解码器(asoutput)->蚁剑发送Payload时追加使用对应解码器(asoutput)进行输出->蚁剑收到WebShell输出后再对结果进行解码(decode_buff)从而正常回显。
如果不编写对应的decode_buff,会出现类似下面的样子:

总结

实际上编码器其实就是用JavaScript先对Payload进行一次编码再发送,相应的服务端WebShell也要进行对应的解码操作。

因此理论上可以利用脚本语言内置的字符串操作函数(大小写变换、反转、移位、异或、替换、截取、进制转换等)随意排列组合, 对Payload进行变形、加密、编码、混淆,在不依赖任何扩展的情况下,真正意义上做到自定义流量过WAF,不拘泥于AES加密。

而更进一步,AntSword是模块化的,不同模块没有绑定关系,可以灵活变更。

整个蚁剑客户端、编码器、WebShell、解码器的流程大致如下:

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇