一、[BJDCTF2020]Easy MD5
1.题目
2.解题步骤
题目是一个简简单单查询框。因为太忙好久没做题,之前某次试水看了一次WP,记得是在响应头有信息,摸过来看一下
这里一句SQL提示了注入的信息,首先是进行了MD5的运算
他会将输入的字符串进行原始的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
理论了解完成,接下来开始实操
在这个页面给出了我们下一步的提示
<!--
$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
继续,得到这个页面。flag已经近在咫尺了~
这个地方乍一看与上一个的很像,区别是改成了post提交和三等于。
直接百度,这里可以赋数组,然后数组值为空就可以满足了。
3.总结
- 百度到了md5的各种绕过姿势和payload,之后可以直接拿来用了)
- 在这半年期间做了一届智能车,这期间心很累,很多知识都是不开源的,很多学校有点水平都藏着掖着,软件靠算法传承,硬件靠经验传承。这厚重的知识壁垒不是我短时间内能打破的。也没有那个水平去分一杯羹。已经不对自己目前专业方向有幻想了,准备转行安全,虽然断断续续丢了很多东西,希望下半年可以补回来吧