来自:https://www.cnblogs.com/ichunqiu/p/5749347.html
首先我们需要了解数据是通过什么方式进行输入,这里我总结了三个:
- GET请求:该请求在URL中发送参数。(https://i.cnblogs.com/EditPosts.aspx?opt=1)opt=1就是输入的参数
- POST请求:数据被包含在请求体中。
- 其他注入型数据:HTTP请求的其他内容也可能会触发SQL注入漏洞。
我们先在参数后面加个单引号,如:本应该输入1,我们给他输入1' ,结果查询语句变为:select * from users where id = 1';
sql语句执行失败,所以执行结果会返回一个布尔值,即执行的mysql_query的结果为bool(false)
为了更好的了解MySQL错误,我们在
$sql = mysql_query($querry,$con);
后面加上
if(!$sql)
{
die('<p>error:'.mysql_error().'</p>');
}
这样当应用捕获到数据库错误且SQL查询失败时,就会返回错误信息:(我们在参数中添加单引号返回的错误信息)
error:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1
然后借助这些错误,我们这可以推断应该存在SQL注入。