实验吧之让我进去

 

http://ctf5.shiyanbar.com/web/kzhan.php 

 

随便提交一些东西 没有回显  源代码没提示   直接bp

 

 

 

发现可疑的source  变成1看看  go

 

暴源码了

分析代码:的条件

 

 首先判断cookie:getmein 是否为空  (我们从bp这里看是没有这个cookie的,需要自己构造) 接着判断 你提交的username必须是admin  password不能是admin

最后一个条件:你的cookie值要和你服务器未知的secert +提交的username和password组成的md5值相等  这样就得到了flag

 问题是你不知道这个secert值 只知道

是15位的   如果我们知道这个值, 直接自己md5加密就可以算出cookie:getmein

 

我们再看 你的password不能是admin 为什么有这个条件:如果你的password是admin

 我们看返回是数据包有一个    

源码:

Sample-hash的值就是secert+admin+admin字符串的md5加密:如果password是admin:那cookie:getmein就和Sample-hash相等了。所以这道题有点坑。 需要用到:

hash长度拓展攻击  简单来说 :正常我们知道一个字符串a,可以通过md5加密得到密钥

现在我们可以在不知道a的字符串具体字母:(前提知道字符串a的md5值和字符串a的长度) 可以算出字符串(a+b)的md5值  b为你自己精心构造的一个字符串。具体原理我放几个链接供参考。  

http://blog.csdn.net/qq_35078631/article/details/70941204

http://blog.csdn.net/wy_97/article/details/76269819

https://www.cnblogs.com/p00mj/p/6288337.html

 

 

看我们这道题就是这个原理  你已知secert+adminadmin的md5值 还知道 secert的长度,

很明显,你就已经知道secert+adminadmin的长度为20  这就相当于我们上面讲的a 我们再构造一个精心准备的b 就可以算出  (secert+adminadmin(a)+b)的md5值,我们题里面password不能为admin 但必须是已admin开头的字符 因为前提是已知secert+adminadmin的md5值  b后面的构造参考我的链接 讲的很详细,我就不多说了

最后附上 password:admin\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00admin 后面的admin可以修改为任意字符串,前面的不能改

admin%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%c8%00%00%00%00%00%00%00admin

 

然后计算md5值  注意:我计算的不是我这个字符串的md5值 。原理看链接吧。

算出cookie:getmein MD5:e18dfd8404515016d3aeeea2aa196909

用bp添加 得到flag。

Go

 

The flag is CTF{cOOkieS_4nd_hAshIng_G0_w3LL_t0g3ther}

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值