sql注入-k8凯发旗舰

很多 web 开发者没有注意到 sql 查询是可以被篡改的,因而把 sql      查询当作可信任的命令。殊不知道,sql      查询可以绕开访问控制,从而绕过身份验证和权限检查。更有甚者,有可能通过 sql      查询去运行主机操作系统级的命令。

直接 sql 命令注入就是攻击者常用的一种创建或修改已有 sql      语句的技术,从而达到取得隐藏数据,或覆盖关键的值,甚至执行数据库主机操作系统命令的目的。这是通过应用程序取得用户输入并与静态参数组合成      sql 查询来实现的。下面将会给出一些真实的例子。

由于在缺乏对输入的数据进行验证,并且使用了超级用户或其它有权创建新用户的数据库帐号来连接,攻击者可以在数据库中新建一个超级用户。 

example #1         一段实现数据分页显示的代码...... 也可以被用作创建一个超级用户(postgresql 数据库)。

$offset = $argv[0]; // 注意,没有输入验证!
$query  = "select id, name from products order by name limit 20 offset $offset;";
$result = pg_query($conn, $query);

一般的用户会点击$offset已被斌值的"上一页"、"下一页"的链接。原本代码只会认为$offset是一个数值。然而,如果有人尝试把以下语句先经过       处理,然后加入url中的话:

0;
insert into pg_shadow(usename,usesysid,usesuper,usecatupd,passwd)
    select 'crack', usesysid, 't','t','crack'
    from pg_shadow where usename='postgres';
--

那么他就可以创建一个超级用户了。注意那个 0;       只不过是为了提供一个正确的偏移量以便补充完整原来的查询,使它不要出错而已。

#笔记 #记录
这是一个发言测试。
tougen
2022-11-20
发表评论
投稿
网站地图