[BJDCTF2020]Easy MD51

提示

  1. 万能密码的md5形式转变
  2. MD5函数的各种性质

这里拿到题目什么都没有只有一个提交框

信息收集

  1. 源代码查看
  2. 抓包查看
  3. 目录扫描
  4. sqlmap尝试跑
  5. 查看框架

这题只需要抓包查看有提示

这里就涉及到MD5以及mysql的性质问题

  1. 看到这种sql语句第一项到的就应该是万能密码or1=1或者or2=2之类的
  2. 一串特定的代码(ffifdyod)被md5加密以后会变成 276f722736c95d99e921722cf9ed621c,这个字符串前几位ascii解释刚好是 ' or '6  
  3. Mysql 刚好又会把 hex 转成 ascii 解释,因此拼接之后的形式是 1select * from 'admin' where password= '' or '6xxxxx' ,类似于or1=1这种万能密码

输入后会跳转到另一个界面

查看源代码

这里我所知道的有两种方法

  1. 数组绕过:a[]=1&b[]=2       这里把a和b变成数组了a不等于b,但是md5加密后会报错为null但是报错以后反而还相等了
  2. 弱等于0e开头绕过:a=240610708&b=QNKCDZO,这样也符合了a和b不相等,当加md5加密以后他们都是0e开头,并且使用的是弱等于'==',所以相等(在php中’===‘是绝对等于,意思就是两边必须完全相等,但是‘==’就相反,反而只用开头相等就行,例如12456==12789或者123456==123)

这些md加密后都是0e开头,网上随便都能搜到的

到第三关

像这一关也可以用数组绕过

除非当数据传入的时候进行了将它变成字符串

比如md5(strval($_POST['param1']))===md5(strval($_POST['param2']))

payload:   param1[]=1&param2[]=2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怪兽不会rap_哥哥我会crash

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值