简单sql注入
(自己搭建一个页面注入)
页面搭建
使用phpstudy,在WWW目录的index.php中进行代码修改
在localhost界面下,即127.0.0.1打开默认显示index.php的页面
该页面有如下要求:
- 使用Post方法传递参数
- 链接之前自己已生成的数据库
- 字符型注入页面,要求是post传递的参数,输入id,显示username,age,sex
代码如下:
1 | <form action="index.php" method="post"> |
sql注入攻击
1. 判断注入存在与否,判断注入类型
第一幅图
第二幅图
第三幅图
由上述三图可以看出,永真式成功,永假式失败,基本可以判定注入存在且为字符型注入
2. 猜解SQL查询语句中的字段数,为后续union select 做准备
图1
图2
图3
可以看出,order by 6成功,order by 7失败
说明执行的SQL查询语句中有六个字段
3. 确定回显字段顺序
可以看出,返回的是该表的第二、四、五列
4. 获取当前数据库名称
具体输入:
1’ union select 1,database(),3,4,5,6 #
当然,database()在4或5位置也可以
因为在第2位置,所以username显示的结果(ckf)就为库名
5. 获取当前数据库中所引用的表名
具体输入:
1’ union select 1,group_concat(table_name),3,4,5,6 from information_schema.tables where table_schema=database() #
同理,username显示结果(ckf)就为表名
6. 获取引用表中的字段名称
具体输入:
1’ union select 1,group_concat(column_name),3,4,5,6 from information_schema.columns where table_name=’ckf’ #
同理,username上显示的信息就为表单所有的字段
7. 得到目标数据password
具体输入:
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爆破密码
题目地址:http://ctf4.shiyanbar.com/web/root/index.php
1. 右键源码发现最下面有个
怀疑藏有别的目录,于是将password.txt这一字符串替换index.php
链接:http://ctf4.shiyanbar.com/web/root/password.txt
发现有许多的字符串,正确密码应该就在其中,将文本复制下来保存
2. Burpsuit截包
随意输入一串密码后点击确认,使用Burpsuit截包
随后send to intruder
修改完需要爆破的参数后Load之前保存下来的密码文本
start attack后发现长度不同的即为密码