CTF之懵懂时期系列---后台登录

自己发现一种创新的攻击方式不适于现在的学习成长。现在最主要的任务是:多见各种题型、动手实践、总结思路、记录思路下的具体步骤。总之就是,做的广、记得多。目前绝不提倡创新。

参考资料:http://mslc.ctf.su/wp/leet-more-2010-oh-those-admins-writeup/

在实验吧这样这道题:http://ctf5.shiyanbar.com/web/houtai/ffifdyop.php
后台登录界面
一看到这样的输入框,就立马想到了SQL注入,为什么?登录口令肯定需要和数据库验证的。

于是查看页面源代码:
网页源代码
这两句话是关键:
$ result=mysqli_query($ link,$ sql);
if(mysqli_num_rows($result)>0)
也就是说,查询的结果大于0,就可以绕过去了,我们看下他暴露的语句:

“SELECT * FROM admin WHERE username = ‘admin’ and password = '”.md5($password,true)."’"

所以这里,只要我们能够组造出’or’(xxx)'的语句,就能够成功注入。
使用的加密方式是md5($password,true),16位原始二进制的字符串。

问题在于,如何找到这样一个解密后能够变成’or’(xxx)'的字符串。
加密与解密过程
md5($password, true)是上图中加密的思路,16位原始二进制字符串的转化。
解密思路就如上图。

这里稍微提一下,关于flag的问题:
flag_key
这里的ffifdyop其实就是答案要的字符串,填入即可得到flag。
当然,不排除有某位大神只是抱着试一试的态度,把这个字符输入把flag拿到手,不容否认,在渗透当中,不一定所有的答案都是由层层逻辑环环相扣得来的,有可能就是突然的一个灵感而来,拿到了想要的信息。这也是渗透的一方面能力—运气。

但是,更多的是,我们要不断地学习新的知识、思路以及科学的过程把答案稳稳地拿在手上,才是主要的。

尝试下,从解密的思路获取一下,并借鉴其他文章的知识。

这里稍等一下,我发现之前自己的思路太过复杂。

只要使用同样的MD5生成方法,并判断结果的字符中有没有我们需要的值即可。
理想是
'or ‘1’='1这种,但是碰撞几率太小。运算时间肯定很长,不是我们需要的。

好在mysql中,存在这样的机制:
MySQL中or 1(xxx),只要之前是数字,且不为0,那么就默认后面的结果是true。
(trash) 'or '1(trash)即可,数字也不一定非要是1,1~9都可以,这样能够提高爆出效率。

但是我翻了下大神的评论,其实还可以更简单。
只要满足一个条件即可:
‘=’
之前的’是用于闭合前面的password,默认值是0,而后一个’是用来闭合后面的’,这样就等于
password = ’ ’ = ’ ’
当然。password不可能等于’ ',也就是password != '‘结果等于0,而后的’ '也就是相当于0。更简单。

现在使用PHP脚本进行跑一下(因为本身也就是PHP语言进行的md5验证)
看来得习惯和学习PHP语言才行了!

知识点

1、or 1(trash)即为true
2、要想得出md5后的值包括一些符号,有办法了,暴力破解
3、这道题 ‘=’ 也可以

只能说学到,不敢说感悟到,多学、多反思、少说。

这里由于公司的电脑,php版本可能比较混乱,准备回家把这个脚本补上,把结果跑出来。

<?php 
for ($i = 0;;) { 
 for ($c = 0; $c < 1000000; $c++, $i++)
  if (stripos(md5($i, true), '\'or\'') !== false)表示字符串?
   echo "\nmd5($i) = " . md5($i, true) . "\n";
 echo ".";
}
?>
 
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值