Sqlmap Getshell的方法

ven_quinn   ·   发表于 2021-05-15 15:55:51   ·   技术文章

菜鸡第一次写文章,还望大佬多多指教!
sqlmap大家肯定都玩过,并且都能玩出花了哈哈,这里在网上查找资料知道,可以通过sqlmap一键连接shell,让我们离shell更近一步。
下面就简单写一下getshell的方法和一些小小的要求。

先介绍一下几个命令

—os-cmd=ipconfig #执行cmd命令
—os-shell= #建立shell,该命令可以创建一个对方操作系统的shell,远程执行系统命令,但是需要一些条件。
注:使用–os 命令会向目标写入一个文件上传脚本,然后通过该上传脚本上传shell、meterpreter等,并修改权限(phpversion<4.1.0时)

演示环境

windows server 2008 r2
phpStudy2016、php5.5.38
sqlmap1.3.2.33#dev
sqli-lab靶场

sqlmap getshell的条件

1、网站必须是root权限
2、知道网站的绝对路径
3、PHP关闭魔术引号,php主动转义功能关闭
4、secure_file_priv=值为空(不是null,后面会写)

基本步骤

一、查看当前注入点数据库权限是否为dba:True
sqlmap.py -u “http://192.168.139.137/sql/Less-1/?id=1“ —is-dba


二、寻找绝对路径
sqlmap.py -u “http://192.168.139.137/sql/Less-1/?id=1“ —sql-shell

因为当前数据库权限为root,接下来就可以使用—sql-shell指令对数据库进行寻找路径之旅。
后面我们继续输入命令
sql-shell> select @@datadir;


通过数据库位置,我们能够做一些简单的判断:
1,他是一个phpstudy搭建的站点
2,可以尝试phpstudy的一些目录
3,尝试构造路径: C:\web\WWW\sql

常见的找绝对路径方法:
1,根据网页报错信息
2,phpinfo、探针上一些信息
3,数据库查询、暴力破解
4,也可以查看一些常用的绝对路径

三、查看PHP是否开启魔术引号(如果开了还可以尝试宽字节注入)
测试方法:
1,特殊字符测试是否转义成反斜杠
2,探针、phpinfo等
应该默认是关闭的
在测试SQL注入时候经常使用单引号等测试字符进行测试,查看是否返回反斜杠转义

这里我们可以在本地看到单引号转义被关闭了(magic_Q_gpc)

四、secure_file_priv=值为空
• ure_file_priv的值为null ,表示限制mysqld 不允许导入|导出
• 当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下
• 当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制

这个函数决定了我们能否成功写入文件导入我们的木马,这里使用sql查询语句查询该函数

查询失败以及查询结果为空,这里的原因是某些版本的MySQL默认没有secure_file_priv参数,我们手动添加测试,secure_file_priv=


五、直接getshell
使用—os-shell,此时sqlmap会生成两个文件,一个是文件上传脚本文件,一个是PHP的一句话木马文件
我们可以通过它的文件上传脚本上传一句话马或者是通过他的生成的一句话木马连接菜刀进行管理。
我们上传自己写的test.php,通过菜刀连接。


发现成功连接菜刀!!!

希望不足的得到指正,谢谢啦!!(其实希望打赏一下哈哈哈)

打赏我,让我更有动力~

2 Reply   |  Until 7个月前 | 931 View

Track-聂风
发表于 2021-5-21

期待更好的文章,这个属于基操,加油

评论列表

  • 加载数据中...

编写评论内容

小酒
发表于 7个月前

大佬没看懂啊。

评论列表

  • 加载数据中...

编写评论内容
LoginCan Publish Content
返回顶部 投诉反馈

© 2016 - 2022 掌控者 All Rights Reserved.