SQL Injection(SQL注入漏洞)

Posted 服务器-老张

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Injection(SQL注入漏洞)相关的知识,希望对你有一定的参考价值。

审计前准备:

1、安?php程序(推荐phpStudy)

2、高亮编辑器(推荐 Sublimetext Notepad++)

3、新建一个文本,复制以下变量,这些变量是审计中需要在源码中寻找的

######################

$_SERVER 
$_GET 
$_POST 
$_COOKIE 
$_REQUEST 
$_FILES 
$_ENV 
$_HTTP_COOKIE_VARS 
$_HTTP_ENV_VARS 
$_HTTP_GET_VARS 
$_HTTP_POST_FILES 
$_HTTP_POST_VARS 
$_HTTP_SERVER_VARS 
######################
**********************************************************************************************

审计方法:

1、SQL Injection(SQL注入漏洞)

作为危害和严重性都身居第一的漏洞不得不先说说它的审计方法;


Example 1:

#index.php

<?php 
$id= $_GET[‘id‘]; 
$query= "SELECT * FROM users WHERE id= ‘ “ .$id." ;" 
... 
?> 

上面一段代码翻译过来等同于下面这句话:

index.php?id=1+UNION+SELECT+1,@@version,3,4,5+from+users/* 

Example 2:

#login.php
<?
#Login.php(hacklele)#
$user = $_POST[‘user‘];
$pass = $_POST[‘pass‘]; 
$link = mysql_connect(‘localhost‘, ‘root‘, ‘pass‘) or die(‘Error: ‘.mysql_e rror()); 
mysql_select_db2881064151("sql_inj", $link); 
$query = mysql_query("SELECT * FROM sql_inj WHERE user =‘".$user."‘ AND pas s =‘" .$pass. "‘",$link);
if (mysql_num_rows($query) == 0) {
echo"<scripttype=\"text/javascript\">window.location.href=‘index.html‘;</sc
ript>";
exit; 

$logged = 1;
?>
当用户(可能为攻击者)发送$_POST[‘user‘] , $_POST[‘pass‘]给 login.php时,这 些变量直接存储在SQL请求命令中。如果攻击者发送:

$user = 1‘ OR ‘1‘ = ‘1

$pass = 1‘ OR ‘1‘ = ‘1

将会绕过login.php的登陆验证,读者当注意此类代码。























以上是关于SQL Injection(SQL注入漏洞)的主要内容,如果未能解决你的问题,请参考以下文章

SQL Injection(SQL注入漏洞)

ThinkPHP 1.5.0 漏洞求助

SQL Injection 代码审计 1 (转)FreeBuf.COM

老司机带你学安全测试:SQL注入(SQL Injection)漏洞示例

SQL注入(SQL Injection)

DVWA靶场实战——SQL Injection(Blind)