51Testing软件测试论坛

标题: SQL注入攻击 [打印本页]

作者: 测试积点老人    时间: 2018-12-21 14:47
标题: SQL注入攻击

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


[attach]120345[/attach]


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

SQL注入过程:


[attach]120346[/attach]


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

[attach]120347[/attach]

.类型处理不当
   // 构造动态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注入?

[attach]120348[/attach]

[attach]120349[/attach]

寻找SQL注入的方法:

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




作者: testuser123.    时间: 2018-12-24 16:58
freebuf




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2