PHP等言语SQL注入的问题51CTO博客 - 凯发娱乐

PHP等言语SQL注入的问题51CTO博客

2019-03-06 10:22:47 | 作者: 觅波 | 标签: 注入,经过,查询 | 浏览: 2611

博客已搬运:SQL注入

   很多人在做开发的时分并没有留意到SQL的查询是能够被改掉的,其实SQL却是最不安全的要素之一,经过SQL,更有可能去直接履行体系指令,在服务器上新建用户,修正暗码等操作也不是不可能。

   直接 SQL 指令注入就是***者常用的一种创立或修正已有 SQL 句子的技能,然后到达取得躲藏数据,或掩盖要害的值,乃至履行数据库主机操作体系指令的意图。这是经过应用程序取得用户输入并与静态参数组合成 SQL 查询来完成的。

$offset = $argv[0]; // 留意,没有输入验证!
$query  = "SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET $offset;";
$result = pg_query($conn, $query);


这是最一般的分页比方,可是假如有人把下面的句子经过unlencecode()编码今后,

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


再把这句子刺进到url今后.就会在数据的表中刺进一个用户(经过字段猜想,不过肯定是刺进数据了)

留意那个 0; 只不过是为了供给一个正确的偏移量以便弥补完好本来的查询,使它不要犯错罢了。 ,这个是手册上的比方

$query  = "SELECT id, name, inserted, size FROM products
                  WHERE size = '$size'
                  ORDER BY $order LIMIT $limit, $offset;";
$result = odbc_exec($conn, $query);


能够在本来的查询的基础上增加另一个 SELECT 查询来取得暗码:

'
union select '1', concat(uname||'-'||passwd) as name, '1971-01-01', '0' from usertable;
--



再比方:

<?php
$query  = "SELECT * FROM products WHERE id LIKE '%$prod%'";
$result = mssql_query($query);
?>


假如***提交 a%' exec master..xp_cmdshell 'net user test testpass /ADD' -- 作为变量 $prod的值,那么 $query 将会变成


<?php
$query  = "SELECT * FROM products
                    WHERE id LIKE '%a%'
                    exec master..xp_cmdshell 'net user test testpass /ADD'--";
$result = mssql_query($query);
?>



   有人说以上的***有必要得知道数据表的结构等阿,可是没人能确保他们获取不到这些信息阿,不论经过猜想仍是,比方用户表最常用的就是user,admin表,什么节点表access啊,不是没有可能

   并且还有经过修正form表单,增加躲藏域的方法来提交表单,asp的更恐惧, 经过sql注入来猜想数据库句子之类的,而mysql中sql言语不对会报错,不过,仍然不要信任他人输入的数据。

   最好对每个客户端发送的数据进行严厉的检查过滤。以确保网站的安全。并且,能够的话,最好树立一个日志体系,便利你检查网站是否没***过。

   PHP中免费的开源产品,如dede,帝国,dz,ecshop等,使用者不再少量!不过,越是开源的产品越风险!由于他人很简单就很获取到你的数据库结构,网站目录结构!网站一切代码!***网站也垂手可得:

   举例说明,dedeV5.7的

footer.jpg

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表凯发娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章