Web学习之路(BUUCTF刷题之旅4)

目录

一、[BJDCTF2020]Easy MD5

二、[极客大挑战 2019]BuyFlag


一、[BJDCTF2020]Easy MD5

打开后只有一个提交查询的界面,在源代码里没有找到任何东西。

输入了一些值,发现只能GET传参password。

在消息头里发现Hint: select * from 'admin' where password=md5($pass,true)

我们知道:数据库会把16进制转换成Ascii码解释。

然后就没思路了...

这里看了大佬的wp,发现输入了"ffifdyop"。

md5(ffifdyop)会返回16进制。

这时原来的语句为:

"select * from 'admin' where password='' or'6蒥欓!r,b' "

or后面的句子第一个字母是非0打头的数字符,比如为 ‘ 1abc ’ 或者 ‘ -1bde ’都会被认为是true。

以0开头会认为是false。

提交查询后看到了页面跳转:

 查看页面源代码,发现了不得了的东西:

这个其实很简单,用数组绕过即可。构造Payload为:

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

 这里我们看到md5强比较,因为md5不能处理数组,所以md5(param1[])返回false,===两边都返回false,自然就相等(同样弱比较也可以用数组绕过进行操作)

我们绕过比较md5用的数组:param1[]=1&param2[]=2(这里注意POST传值)

拿到flag。

二、 [极客大挑战 2019]BuyFlag

进入题目环境后,我们可以看到:

查看页面源代码,发现:

  • 要进行post传参password和money
  • postword不能为数字 但是又要和404相等(使用弱类型,构造为404a)
  • money要为1亿但是 php版本太低了,1亿又太大了(科学计数法或者数组可以绕过)

 没有任何回显,可能是需要进行抓包。

修改"user=0"为"uesr=1"。

然后构造payload:password=404a&money=1e10

拿到flag。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AI仿生道士

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

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

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

打赏作者

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

抵扣说明:

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

余额充值