buuctf easymd5

点击f12,查看源代码看看有没有消息

Hint:select * from ‘admin’ where password =md5($pass,ture)

我们要让password=md5($pass,ture)

mysql里面,在用作布尔型判断时,以数字开头的字符串会被当做整型数。

要注意的是这种情况是必须要有单引号括起来的,比如password=‘xxx’ or ‘1xxxxxxxxx’,那么就相当于password=‘xxx’ or 1 ,也就相当于password=‘xxx’ or true,所以返回值就是true。
 

<?php
for ($i = 0;;) {
 for ($c = 0; $c < 1000000; $c++, $i++)
  if (stripos(md5($i, true), '\'or\'') !== false)
   echo "\nmd5($i) = " . md5($i, true) . "\n";
 echo ".";
}
?>

按照大佬们的说法ffifdyop这个字符串md5后是276f722736c95d99e921722cf9ed621c,这里mysql会把hex转成ascii解释,上面这串字符ascii后是’ or’6开头,拼接后的结果就是select * from ‘admin’ where password =’ ‘ or ‘6xxxxx’,因为or的存在所以这就是个永真式,就可以成功绕过md5()函数

输入ffifdyop

 

这里使用了==弱比较

== 在进行比较的时候,会先将两边的变量类型转化成相同的,再进行比较

0e在比较的时候会将其视作为科学计数法,所以无论0e后面是什么,0的多少次方还是0

 我们使用之前两个弱比较相等的值,QNKCDZO和s878926199a,构造payload

?a=QNKCDZO&b=s878926199a

 md5还能通过数组绕过,原理是md5等函数不能处理数组,导致函数返回Null。

根据提示,我们post数据

param1[]=1&param2[]=2

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值