技术笔记

SQL注入漏洞详解 第一集

字号+ 作者:sqler 来源:转载 2016-11-24 19:52 我要评论( )

0x01 前言 好久不见,这次讲解sql注入漏洞。 0x02详情 首先我们来学习一下mysql的查询命令,了解网站与数据库的交互是怎么运作的。我这里用phpmyadmin来演示。 [Ap......

0x01  前言    好久不见,这次讲解sql注入漏洞。

0x02  详情
首先我们来学习一下mysql的查询命令,了解网站与数据库的交互是怎么运作的。我这里用phpmyadmin来演示。

[AppleScript] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$conn = mysql_connect('localhost', 'root', 'root') or die('bad!');
mysql_query("SET NAMES binary'");
mysql_select_db('test', $conn) OR emMsg("数据库连接失败");
//执行sql语句
$id = isset($_GET['id']) ? $_GET['id'] : 1;   //从前台get获取参数id的值,当id没赋值的时候,默认为1,即id=1
$sql = "SELECT * FROM news WHERE id={$id}"; //执行sql语句,可以看到id={$id}    将前台获取的值直接带入查询
$result = mysql_query($sql, $conn) or die(mysql_error());
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>新闻</title>
</head>
<body>
<?php
$row = mysql_fetch_array($result, MYSQL_ASSOC);
echo "<h3>{$row['title']}</h3><p>{$row['content']}<p>\n";      //输出从数据库获得的titlecontent的数据到html
mysql_free_result($result);
?>
</body>
</html>

这是我们的代码,鉴于有些兄弟不会PHP,我这里上面都添加了注释。
我们再来看看数据库

值得注意的是,mysql是从第0行开始,不是从第1行   第1行是第0行。记住这个概念

我们继续来看,当请求127.0.0.1/test.php?id=1的时候,我们来看看数据库是怎么执行命令的

可以看到执行了

[AppleScript] 纯文本查看 复制代码
?
1
select * from news where id=1

我们到phpmyadmin里去执行一下

看到返回的是一样的,为什么多了一列id?请上去看看代码,我没输出id,肯定没有。

这里拼接sql语句是存在sql注入漏洞的。
我们添加一个单引号试试


我们用and 1=1  和and 1=2 来测试一下



and1=1返回正常,and1=2是个假命题,所以数据库没返回数据。
我们来构造注入语句,这里我们使用union语句

[AppleScript] 纯文本查看 复制代码
?
1
http://192.168.30.20/test.php?id=1%20union%20select%201,2,3%20from%20admin%23


为什么还是看不到?因为我们只输出两行,所以我们看不到,这时候,我们把id换成一个不存在的值

可以看到   输出了第二列与第三列,union语句的后面的列数需要与前面相同,一般我们就用1,2,3,4......这样去测试列数,或者使用order by来测试,大家可以自行去学习。后面库的列数与前面库的列数不一样会报错

这时我们构造语句

[AppleScript] 纯文本查看 复制代码
?
1
http://192.168.30.20/test.php?id=-1%20union%20select%201,2,user()%20from%20admin%23



爆出当前数据用户。这里是存在注入的。

我们用神器sqlmap跑一遍,验证一下。




可以注入出数据。


本文来自: 蜗蜗侠's Blog-关注网络安全 http://blog.icxun.cn/Note/217.html

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 转大表哥安全狗SQL注入语句(176处)

    转大表哥安全狗SQL注入语句(176处)

    2017-12-05 13:47

  • Mysql注入点在limit关键字后面的利用方法

    Mysql注入点在limit关键字后面的利用方法

    2016-12-18 15:06

  • 一个罕见的MSSQL注入漏洞案例

    一个罕见的MSSQL注入漏洞案例

    2016-12-18 15:03

  • postgresql注入之文件读写

    postgresql注入之文件读写

    2016-12-13 15:25

网友点评
暂时未开启评论功能~