测试积点老人 发表于 2018-12-21 14:47:00

SQL注入攻击

所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
SQL注入原理:

web架构通常为三层:
表示层、逻辑层、存储层

SQL注入过程:

转义字符处理不当
   // 构造动态SQL语句
$sql = "select * from tbl where field = '$_GET['input']'";
// 执行SQL语句
$res = mysql_query($sql);
测试:
在下边的网址后边加一个单引号,就会报数据库错误
http://testphp.vulnweb.com/artists.php?artist=1



.类型处理不当
   // 构造动态SQL语句
$sql = "select * from tbl where field = $_GET['user_id']";
// 执行SQL语句
$res = mysql_query($sql);
Mysql内置了一个命令,可以读取文件
* Union all select load_file('/etc/passwd')--
select * from tbl where userid = 1 union all select load_file('etc/passwd')--
该命令会获取数据库管理员的密码

3.查询语句组织不当
user.php?table=user&

4.错误处理不当
即将站点的错误信息暴漏给用户,这样非常危险。

// 构造动态查询语句
$getid = "select * from tbl where userid > 1";
// 执行SQL语句
$res = mysql_query($getid) or die('<pre>'.mysql_error().'</pre>');
5.多个提交处理不当
// 参数是否是一个字符串
if(is_string($_GET["param"])){}

问题:
1.如果web站点禁止输入单引号字符,是否可以避免SQL注入?





寻找SQL注入的方法:

通过get请求
通过post请求
其他http请求,如cookie



testuser123. 发表于 2018-12-24 16:58:23

freebuf:o
页: [1]
查看完整版本: SQL注入攻击