我发现一些为网站编写的旧代码(2009)在某些情况下在搜索查询中将SQL保存为$ _GET变量!
执行搜索时,详细信息将被POSTED然后进行清理,结果将使用MySQL中的LIMIT子句进行分页。如果有多个页面(即+30个结果),页面是HTML中的锚链接,其中包含一个包含SQL语句的GET var。
我知道,这绝对不是这样做的方法。这是我刚刚看到它的旧代码。这需要修复。
所以我已修复它,清理它并使用另一种方法重新加载SQL,但是:
我的问题是:
页面输出与缩略图相关的数据,所有数据都输出为命名数组var(原始子句是SELECT *
子句),所以如果有人滥用GET变量,页面本身只会输出名为
我已经设法使用GET滥用来删除数据库中的行,我想只有在结果不涉及任何返回的输出(例如DELETE)时才滥用,但我不知道;因此,用户可以在GET子句中输入任何内容,但只获得所编码内容的显示输出(即30行数组中的命名列) - 这个有缺陷的漏洞可以打开哪些其他滥用?
更多细节:代码是MySQLi
答案 0 :(得分:2)
像SQLMAP这样的工具可以接管整个服务器,无论用户想要什么,都可以使用它。
有一个未经过清理的数据库输入甚至不再是黑客攻击,它等待有人在你的机器上运行一个脚本,并从那时起基本拥有它。
答案 1 :(得分:1)
攻击者可以做什么取决于您的数据库配置和数据库用户访问权限。如果您创建一个新用户,该用户只能选择那个指定的表,并将该用户用于该特定脚本,那么它可以做的就是从该表中读取数据。
这仍然是不好的做法。永远不要使用它。