注入SQL高级利用:
并非所有攻击都旨在盗窃敏感数据库,一些攻击可能更具有破坏性,例如,仅仅提交12个字符的输入,攻击者就能够使用关闭命令(shutdown)关闭一个数据库。
' shutdown--
1:获取数字数据:
两个关键函数:SACII,他将返回字符的ASCII码;
SUBSTRING(或Oracle中的SUBSTR),他将返回输入的子字符串。
这些函数可以结合在一起,以数字形式从一个字符串中提取单独一个字符。
EG:SUBSTRING('Admin',1,1)返回A
ASCII('A')返回65
因此
ASCII(SUBSTR('Admin'1,1))返回65
使用这两个函数,可以系统的将一个有用数据的字符串分割成单个的字符,并以数字形式分别返回每一个字符。在自定义攻击中,可以利用这种技巧,以一次一个字节的速度,迅速获得并重建大量基于字符串的数据。
使用带外通道##
无法直接获得注入查询的结果,可使用带外通道。能够在数据库中执行任意SQL语句后,渗透测试员往往可以利用数据库中的一些内置功能在数据库中与自己建立网络连接,通过它传送从数据库中收集到的任何数据。
MS-SQL:一些老数据库,如MS-SQL2000以及更早的版本。可使用openRowSet命令与外部数据库建立连接并在其中插入任何数据
Oracle##
Oracle中包含大量低权限用户可访问的默认功能,可以使用他们建立连接。
URL_HTTP:向其他主机提出任意HTTP请求
URL_INADDR包旨在将主机解析为ip地址
URL_SMTP包可用于发送电子邮件
URL_TCP包可用于打开任意TCP套接字
MYSQL##
SELECT....INTO OUTFILE 命令可将任意一个查询的输出指向一个文件。指定的文件名可包含UNC路径,允许将输出指向自己计算机的一个文件
eg:select * into outfile '....' from users;
要想接收到文件,必须在计算机上建立SMB共享,允许匿名访问。