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

WEB日常刷题练习(1)

js

题目描述:JavaScrip代码审计,flag{}

题目难度:初级

存在一个js页面

  1. 创建了一个表单元素,包含:
    • 用户名输入框(默认提示文字 "Username")
    • 密码输入框(默认提示文字 "Password")
    • 登录按钮
  2. 输入框有焦点和失焦事件:
    • 获得焦点时清空默认提示文字
    • 失去焦点时恢复默认提示文字(如果为空)
  3. 登录按钮的点击事件包含验证逻辑:
    • 检查用户名和密码是否为空
    • 如果为空则显示相应提示
    • 否则执行一段加密 / 验证逻辑
  4. 代码中包含多个可疑字符串和加密密钥,如:
    • "JaVa3C41ptIsAGo0DStAff"
    • "CaNUknOWThIsK3y"
    • "Java_Scr1pt_Pa4sW0rd_K3y_H3re"

对网站的这些代码进行格式化,eval函数改为alert

然后F12丢进去执行一下

得到以下js:

var strKey1 = “JaVa3C41ptIsAGo0DStAff”;

var strKey2 = “CaNUknOWThIsK3y”;

var strKey3 = String.fromCharCode(71, 48, 111, 100, 33);

if (uname == (strKey3 + (((strKey1.toLowerCase()).substring(0, strKey1.indexOf(“0”)) + strKey2.substring(2, 6)).toUpperCase()).substring(0, 15))) {

var strKey4 = ‘Java_Scr1pt_Pa4sW0rd_K3y_H3re’;

if (upass == (strKey4.substring(strKey4.indexOf(‘1’, 5), strKey4.length - strKey4.indexOf(’’) + 5))) {

alert(‘Login Success!’);

document.getElementById(‘key’).innerHTML = unescape("%3Cfont%20color%3D%22%23000%22%3Ea2V5X0NoM2NrXy50eHQ=%3C/font%3E");

} else {

alert(‘Password Error!’);

}

} else {

alert(‘Login Failed!’);

  1. 定义了四个密钥字符串:
    • strKey1 为固定字符串 "JaVa3C41ptIsAGo0DStAff"
    • strKey2 为固定字符串 "CaNUknOWThIsK3y"
    • strKey3 通过字符编码转换得到(71,48,111,100,33 对应 "Good!")
    • strKey4 为固定字符串 "Java_Scr1pt_Pa4sW0rd_K3y_H3re"
  2. 用户名验证逻辑:
    • 对 strKey1 进行小写处理
    • 截取到第一个 "0" 出现的位置
    • 拼接 strKey2 从第 2 位到第 6 位的字符
    • 转换为大写后截取前 15 位
    • 与 strKey3 拼接得到最终的有效用户名
    • 将输入的 uname 与计算出的有效用户名进行比对
  3. 密码验证逻辑:
    • 在 strKey4 中从位置 5 开始查找第一个 "1"
    • 计算截取范围并得到有效密码
    • 将输入的 upass 与计算出的有效密码进行比对
  4. 验证结果处理:
    • 用户名和密码都正确时,弹出 "Login Success!" 提示,并在 id 为 "key" 的元素中显示一段经过 unescape 解码的内容(实际是一个包含 "a2V5X0NoM2NrXy50eHQ=" 的字体标签)
    • 密码错误时,弹出 "Password Error!" 提示
    • 用户名错误时,弹出 "Login Failed!" 提示

计算有效的用户名

  1. strKey3 的值:通过 String.fromCharCode(71, 48, 111, 100, 33) 转换得到 "Good!"
  2. strKey1 小写处理:"java3c41ptisago0dstaff"
  3. 截取到第一个 "0" 出现的位置:"java3c41ptisago"
  4. strKey2 截取第 2-6 位:"UKNOW"(原字符串 "CaNUknOWThIsK3y" 从索引 2 开始取 5 个字符)

最终有效的用户名为:G0od!JAVA3C41PTISAGO

计算有效的密码

  1. strKey4 为 "Java_Scr1pt_Pa4sW0rd_K3y_H3re"
  2. 查找从位置 5 开始的第一个 "1":在索引 7 的位置
  3. 计算截取范围:从索引 7 开始到字符串末尾
  4. 截取结果:"1pt_Pa4sW0rd_K3y_H3re"

最终有效的密码为:1pt_Pa4sW0rd_K3y_H3re

然后访问 http://3.1.1.1/key_Ch3ck_.txt

直接访问会error

改POST请求加上账户密码重新发送得到flag

uname=G0od!JAVA3C41PTISAGO&upass=1pt_Pa4sW0rd_K3y_H3re

曲奇

访问信息:3.1.1.2(web端口:80)

题目描述:伪造cookie,flag{}

题目难度:初级

解密得到key.txt

http://3.1.1.2/key.txt

抓一个请求包看看什么情况

感觉存在文件包含漏洞,改成包含了key.txt(需要包含的文件名会经过base64编码),现在对index.php进行base64编码再继续文件包含

使用burpsuite发送构造的请求

整理可以使用intruder模块爆出使所有line参数对应出现的代码

然后对完整的PHP代码进行整理

<? php

error_reporting (0) ;

$file=base64 decode (isset ($_GET[ ' file'] ) ?$_GET[ ' file' ] : "") ;

$line=isset ($ GET[ ' line' ] ) ?intval ( $_GET[ ' line' ] ) : 0;

if ($file == ' ') header ("location: index. php?line=&file=a2V5LnR4dA == ") ;

$file list = array(

'O' =>'key. txt' ,

'1' =>'index. php' ,

);

if (isset ($_COOKIE [ 'key'] ) && $_COOKIE [ 'key'] == 'li_lr 480') {

$file_list [2]='thisis_flag.php';

 

Jif(in_array ($file, $file_list) ) {

$fa = file ($file);

echo $fa[$line] ;

}

?>

  1. 首先关闭了错误报告(error_reporting(0)),这会隐藏脚本执行过程中的错误信息
  2. 从 GET 参数中获取并处理输入:
    • 对file参数进行 base64 解码
    • 对line参数进行整数转换,默认为 0
  3. 有一个简单的跳转逻辑:
    • 如果解码后的file为空,则跳转到index.php?line=&file=a2V5LnR4dA==
    • 其中a2V5LnR4dA==是 base64 编码,解码后为key.txt
  4. 定义了一个文件列表数组$file_list:
    • 初始包含两个文件:'key.txt' 和 'index.php'
    • 如果存在名为 'key' 的 Cookie 且其值为 'li_lr 480',则添加 'thisis_flag.php' 到文件列表
  5. 核心功能逻辑:
    • 检查解码后的file是否在允许的文件列表中
    • 如果在列表中,则读取该文件内容并输出指定行($line参数指定的行)

将file参数置为dGhpc2lzX2ZsYWcucGhw(thisis_flag.php的base64码),访问http://127.0.0.1/index.php?line=0&file=dGhpc2lzX2ZsYWcucGhw,用bp抓包,在包中添加一行cookie:key=li_lr_480,可以通过cookie欺骗的方式访问thisis_flag.php文件,添加完毕,点击“go”,就可以得到flag

flag{UHGgd3rfH*(3HFhuiEIWF}

思路很重要

访问信息:3.1.1.3(web端口:80)

题目描述:粗心的程序员,ctf{}

题目难度:初级

F12查看源代码,然后访问 http://3.1.1.3/index.php.bak

$flag='xxx';    

extract($_GET);    

if(isset($shiyan)){       

    $content=trim(file_get_contents($flag));

    if($shiyan==$content){

       echo'ctf{xxx}';     }

     else{      

       echo'Oh.no';}  

     }

file_get_contents()这个函数存在漏洞,用 php://input绕过,所以只要shiyan和post的数值相等即可

http://3.1.1.3/index.php?shiyan=1&flag=php://input

然后对flag进行凯撒解密 ctf{web-shi-yan-bar}

序列化1

访问信息:3.1.1.4(web端口:80)

题目描述:easy反序化,flag:{}

题目难度:初级

抓请求包看看

子目录爆破扫描发现vi编辑器临时文件 index.php.swp

将pass解密,得一个md5值,d28df74179cc31fb1224a032e429d40f,解密md5为20150903,

http://3.1.1.4/changepassword.php?userInfo=a:2:{s:2:“id”;i:3;s:4:“pass”;s:8:“20150923”;}&oldPass=20150923&newPass=111111

身份验证

访问信息:3.1.1.5(web端口:80)

题目描述:网站怎么进行身份验证的,flag{}

题目难度:初级

修改伪造一下请求字段

Host: 127.0.0.1

X-Forwarded-for:127.0.0.1

再看看为什么不是管理员,

修改其中一个值即可Cookie: isadmin=1

到底是不是number

访问信息:3.1.1.6(web端口:80)

题目描述:代码审计,flag{}

题目难度:初级

点击—view the source code

关键码

else if (strlen($_GET[‘password’]) < 8 && _GET['password'] > 9999999) { if (strpos (_GET[‘password’], ‘-’) !== FALSE)

分析:

要获得一个长度小于8,值大于999999的数

所以要用到科学计数法

并且该数中要包含“-”

单纯在数中加“-”会无意义,使用%00截断后,加上*-*

即:原url后加入“1e8%00*-*”

CTF{Ch3ck_anD_Ch3ck}

http://www.dtcms.com/a/406295.html

相关文章:

  • 信阳网站建设的费用潍坊网站建设维护
  • Kafka-消息不丢失
  • 如何查看一个网站用什么程序做的wordpress文章发布保存都不行
  • ReactFlow:构建交互式节点流程图的完全指南
  • 实战:基于 BRPC+Etcd 打造轻量级 RPC 服务——从注册到调用的核心架构与基础实现
  • 多语言网站建设幻境网站开发人员的岗位有
  • 19.9咖啡项目:工程项目级别的IIC主从机模块
  • 【遥感技术】​从CNN到Transformer:基于PyTorch的遥感影像、无人机影像的地物分类、目标检测、语义分割和点云分类
  • PyTorch深度学习遥感影像地物分类与目标检测、分割及遥感影像问题深度学习优化技术
  • html5如何实现网站开发俄文网站推广
  • Vue3》》 ref 获取子组件实例 原理
  • 【C++实战㊶】C++建造者模式:复杂对象构建的秘密武器
  • stm32h743iit6 USB FS 启用 VBUS 或 BCD 前后的区别
  • 资源网站模板网页qq登陆手机版网址
  • vue中.env文件是什么,在vue2和vue3中的区别
  • ADMM 算法的基本概念
  • Vue中如何封装双向绑定的组件
  • 个人网站建设与维护上传wordpress到空间
  • 深入剖析Spring Boot依赖注入顺序:从原理到实战
  • 对象关系映射(ORM)
  • 在VS Code 中为Roo Code 添加 Bright Data 的本地MCP服务器
  • 专业的制作网站开发公司wordpress界面404
  • Python Pillow库详解:图像处理的瑞士军刀
  • AI 时代的安全防线:国产大模型的数据风险与治理路径
  • Deepoc具身智能模型:为传统机器人注入“灵魂”,重塑建筑施工现场安全新范式
  • 鸿蒙NEXT安全控件解析:实现精准权限管控的新范式
  • 创建自己的网站广告图片
  • GraphRAG:引领自然语言处理进入深层语义分析新纪元
  • 免费的个人简历电子版seo怎么优化排名
  • 5、urbane-commerce 微服务统一依赖版本管理规范