Easy MD5

[BJDCTF2020]Easy MD5

取自[BJDCTF2020]Easy MD5+[安洵杯 2019]easy_web的两道md5绕过。
进去是一个提交数据的页面,随便写一个数据然后抓包重发,发现提示

Hint: select * from 'admin' where password=md5($pass,true)

确定为sql注入,并且得绕过:md5($pass,true)

查查其他师傅的wp知道该函数的用法即绕过方式

师傅说这个可以用ffifdyop绕过,绕过原理是:ffifdyop 这个字符串被 md5 哈希了之后会变成 276f722736c95d99e921722cf9ed621c,这个字符串前几位刚好是’ or ‘6,而 Mysql 刚好又会把 hex 转成 ascii 解释,因此拼接之后的形式是 select * from ‘admin’ where password=’’ or ‘6xxxxx’,等价于 or 一个永真式,因此相当于万能密码,可以绕过md5($pass,true)函数(今年的强网杯也用到了这个方法)。

payload:

?password=ffifdyop

进入到一个新的页面,get两个参数,要求值不相等,但是md5值要相等,是md5的弱类型绕过,用数组就好,md5不能处理数组。

payload

?a[]=1&b[]=2


又进入一个新的页面,这下是md5的强类型绕过,因为没有要求是否是字符串,所以仍然可以用数组来进行绕过。

当然也可以使用特殊的字符串来绕过,之间有保存过利用的字符串,现在就直接利用了。

param1=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2
param2=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2

他们经过url解码后的MD5值相等

[安洵杯 2019]easy_web
多了string,不能用数组绕过了,只能这样子绕过


  转载请注明: XingHe Easy MD5

 上一篇
Ping Ping Ping Ping Ping Ping
ping命令执行是打ctf最常见的一类题,这次将有关知识点总结一下。
2020-10-28
本篇 
Easy MD5 Easy MD5
因为打比赛的时候看见好几个都是md5的强、弱类型绕过,而且自己也没有很好总结这方面的解题经验,为了避免打比赛签完到就走的情况,觉得还是有必要做做笔记。
2020-10-27
  目录