avatar

CTF-JarvisOJ-Web-Login

题目入口:http://web.jarvisoj.com:32772/

首先先F12看一下有没有php可以注入,然后没有发现注入点,但是发现了http header里面有hint。

1
Hint: "select * from `admin` where password='".md5($pass,true)."'"

那么这道题突破点只能是找到密码了。

md5($pass,true) 是将pass转化为md5,然后在转化为字符串
如果存在某一个md5转为hex然后再转化为字符串,且字符串= or 1 的条件,那么就可以得到flag了
你们可以写算法强行爆破出一种情况。
这里提供一个字符串: ffifdyop
输入这个字符串得到flag

总结: 对于php和数据库来说,中间过程,即md5($pass,true),是存在危险性的,md5的保存方式也不一定安全。

提示: md5(string,raw) 当raw=true时,返回是将string转化为md5之后再转化为hex,再转化为字符串。如以下例子

1
2
3
4
content: ffifdyop
hex: 276f722736c95d99e921722cf9ed621c
raw: 'or'6\xc9]\x99\xe9!r,\xf9\xedb\x1c
string: 'or'6]!r,b

所以raw参数很重要,且 sql语句中,

1
or 数据

好像都是当成立处理,即为真

文章作者: 咲夜南梦
文章链接: http://yoursite.com/2018/11/20/CTF-JarvisOJ-Web-Login/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 咲夜南梦's 博客
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论