一、SQL注入
1.数字型注入
随便选一个,抓包
可以看到是POST
直接加一个真命题
可以看到都爆出来了。
2.字符型注入
先输入‘ 有报错,所以存在SQL注入。
我们直接构造payload:1' or 1=1#
OK
3.搜索型注入
也是加单引号,发现报错,存在SQL注入点。
这个类型,我们推测用的是SQL语句中的like来进行模糊判断
那我们就可以猜测模糊查询的字段应该是'%查询内容%'
那么我可以构造
1%' or 1=1#
ok。
4.xx型注入
说白了就是闭合的符号不一样,我们构造payload
1') or 1=1#
ok
5.insert/update注入
学过数据库,知道insert就是在数据库中添加数据
那么我们注册一个账号,是不是就是在数据库中添加了账号数据
那么我们可以在注册页面插入我们的注入语句
我们猜测后台的mysql语句应该是
insert into user(name,password,sex,phone,address1,address2) value('xxx',123,1,2,3,4)
那我们可以在xxx的位置构造我们的注入语句
xxx' or updatexml(1,concat(0x7e,database()),0) or '
可以看到通过报错获取到了数据库名称
我们来分析一下后台的SQL语句
insert into user(name,password,sex,phone,address1,address2) value('xxx' or updatexml(1,concat(0x7e,database()),0) or '',123,1,2,3,4)
说一下问什么这样构造payload,首先介绍一个函数updatexml() : 是mysql对xml文档数据进行查询和修改的xpath函数,updatexml函数的作用就是改变(查找并替换)xml文档中符合条件的节点的值
- 语法:updatexml(xml_document,XPthstring,new_value)
- 第一个参数是字符串
- 第二个参数是指定字符串中的一个位置(Xpath格式的字符串)
- 第三个参数是将要替换成什么
- Xpath定位必须是有效的,否则则会发生错误
接下来是update注入
我们先正经注册一个账号,然后登陆。
还是和之前一样,我们要想象,后台的mysql语句是怎么执行的
更新我们的信息,需要用到的时候update语句
当修改性别的时候推测后台执行了
- update tables set sex = '$sex' where name = 'boy';
这样我们可以在$sex处构造语句
- xxx' or updatexml(1,concat(0x7e,database()),0) or '
把构造好的语句插入进去看看
update tables set sex = 'xxx' or updatexml(1,concat(0x7e,database()),0) or '
' where name = 'boy';
就构造了一个闭合,可以查询我们想要查询的内容了
6.delete注入
既然是delete注入,那肯定是在删除这里,我们先随便留几条言.
然后我们开启抓包,进行删除操作。