提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
题目
BUUCTF的[HCTF 2018]admin 1
一、做题步骤
1.注册一个账号
注册后,发现admin被注册了
另外注册一个用户:12,密码:12的账号
2.收集信息
1.post页面,写一个弹窗,发现只会提示上交成功,但是不会有弹窗
2.change password页面
查看源代码,发现
https://github.com/woadsl1234/hctf_flask/
登录这个页面,可以下载源码
下载一个压缩包
3.审计代码
1.查看routes.py
......
def register():
name = strlower(form.username.data)
......
def login():
name = strlower(form.username.data)
......
def change():
name = strlower(session['name'])
......
strlower()函数 将输入的字符串都变成小写
4.获取flag
有两种方法
①暴力破解
得到密码:123
用户名:admin 密码:123 登录后得到
flag{e208585c-74b2-48ec-9208-fd029769b726}
②unicode欺骗
根据routes.py里的代码
用ᴬᴰᴹᴵᴺ注册,登录后经过一次strlower()函数,变成ADMIN
修改密码时再经过一次strlower()函数,变成admin
所以修改的密码就会识别成admin用户修改的密码
1.用ᴬᴰᴹᴵᴺ注册,密码:147
2.用ᴬᴰᴹᴵᴺ登录,密码:147
3.修改密码:741
4.用admin登录,密码741
得到flag{e208585c-74b2-48ec-9208-fd029769b726}