CTF学习笔记——[BJDCTF2020]Easy MD5

一、[BJDCTF2020]Easy MD5

1.题目

CTF学习笔记——[BJDCTF2020]Easy MD5_第1张图片

2.解题步骤

题目是一个简简单单查询框。因为太忙好久没做题,之前某次试水看了一次WP,记得是在响应头有信息,摸过来看一下
CTF学习笔记——[BJDCTF2020]Easy MD5_第2张图片
这里一句SQL提示了注入的信息,首先是进行了MD5的运算
CTF学习笔记——[BJDCTF2020]Easy MD5_第3张图片
他会将输入的字符串进行原始的16字符二进制格式加密,然后返回结果,之后再向前看,与admin进行比对。
但是这句md5前面这句查询,可以通过 1 or 1=1绕过。因此出现了万能密码ffifdyop,这个密码在MD5运算后的结果是'or’6\xc9]\x99\xe9!r,\xf9\xedb\x1c
连起来就是select * from 'admin' where password=or’6\xc9]\x99\xe9!r,\xf9\xedb\x1c
理论了解完成,接下来开始实操CTF学习笔记——[BJDCTF2020]Easy MD5_第4张图片
CTF学习笔记——[BJDCTF2020]Easy MD5_第5张图片
在这个页面给出了我们下一步的提示

<!--
$a = $GET['a'];
$b = $_GET['b'];

if($a != $b && md5($a) == md5($b)){
    // wow, glzjin wants a girl friend.
-->

这里提示我们要提交两个变量,要求a!=b且a的md5后的值与b一样。
这里直接百度了,得到了两个变量的值为a=s1885207154a,b=s1836677006a。
其原理是这两个数会被转换成科学计数法,开头为0exxx,由于0开头,php==比较会认为是0比较。因此通过。构造payload:

?a=s1885207154a&b=s1836677006a

CTF学习笔记——[BJDCTF2020]Easy MD5_第6张图片
继续,得到这个页面。flag已经近在咫尺了~

这个地方乍一看与上一个的很像,区别是改成了post提交和三等于。
直接百度,这里可以赋数组,然后数组值为空就可以满足了。
CTF学习笔记——[BJDCTF2020]Easy MD5_第7张图片

3.总结
  1. 百度到了md5的各种绕过姿势和payload,之后可以直接拿来用了)
  2. 在这半年期间做了一届智能车,这期间心很累,很多知识都是不开源的,很多学校有点水平都藏着掖着,软件靠算法传承,硬件靠经验传承。这厚重的知识壁垒不是我短时间内能打破的。也没有那个水平去分一杯羹。已经不对自己目前专业方向有幻想了,准备转行安全,虽然断断续续丢了很多东西,希望下半年可以补回来吧
4.参考资料
  • CTF中常见php-MD5()函数漏洞_等风来-CSDN博客
  • MD5碰撞_weixin_30877493的博客-CSDN博客
  • [CTF]CTF中if (md5(md5( G E T [ ‘ a ’ ] ) ) = = m d 5 ( _GET[‘a’])) == md5( GET[a]))==md5(_GET[‘b’])) 的绕过_baguangman5501的博客-CSDN博客

你可能感兴趣的:(网络安全)