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

web学习-rce远程命令执行以及http协议和简单php安全

rce(第二周)

http协议

一次完整的HTTP访问

  1. DNS 解析域名 → IP
  1. 与服务器建立 TCP 连接
  1. 浏览器构造 HTTP 请求报文 发送
  1. 服务器构造 HTTP 响应报文 返回
  1. 浏览器解析响应(HTML / 图片 / 跳转)
  • HTTP请求结构


其中包含请求方法请求头空行请求体
常见方法:GET(参数在URL),POST(参数在body)
常见绕过的请求头:Host,User-Agant,Referer,Cookie,X-Forwarded-for,Data等

  • HTTP响应结构
  • 其中包含:状态行响应头响应体
    状态码的分类:200(成功),3XX(重定向),4XX(客户端错误->网页不存在),5XX(服务器错误)

PHP学习

php基本格式

Plain Text
<?php
//
相关代码
?>

  • $是变量符,后跟变量名称,区分大小写
  • php是一门弱语言,不用声明数据类型

魔术常量
形如_FILE_这样的预定义常量

_FILE_ //返回文件的完整路径和文件名highlight_file(FILE); //代码高亮的显示当前文件内容

表单数据
$_GET——接受GET请求的参数;
$_POST——接受POST请求的参数;
$_REQUEST——接受几乎所有传递的参数如(GET,POST,cookie等)
文件操作函数
include(),require()(文件必须存在). :导入并执行php文件
fopen():打开文件
file_get_contents():读取文件内容到一个字符串
file_put_contents():将一个字符串写入文件
代码执行函数
eval():执行字符串中的php代码
assert():调试检查是否为true
system(),shell_exec(),exec(),passthru():执行外部程序命令如(ls,whoami等)
反序列化函数
unserialize():将一个已序列化的字符串转回php值
数据库操作函数
mysql_query(),mysqli_query():发送一个mysql查询

RCE

基本函数

  • 有回显: system(),exec("回显最后一行,全部回显需要定义数组变量并输出"),passthru(回显二进制数据经过渲染返回正常数据),
  • 无回显:shell_exec(返回字符串,回显需借用echo等函数),反引号 ,popen(需要用文件读取函数获取fget、fread返回内容,再用输出函数回显,第二个参数是模式r、w),proc_open(),pcntl_exec()

操作系统连接符

  • 拼接命令(';' '&' '&&' '|' '||')

使用&&&需要用url编码->%26
&&
执行下一条命令的条件是上一条命令执行成功
||是上一条命令成功执行则不执行下一条命令(可以绕过**>/dev/null2>&1**完成回显效果)

空格过滤绕过

  • 大括号{cat,flag.php}
  • $IFS,{$IFS},{$IFS$9}
  • 重定向字符<
  • %09(Tab),%20(space)

文件名过滤绕过

  • 通配符? 、*绕过(?指单个字符串,*指所有)

Plain Text
cat fl??.php
cat fl*

  • 单引号,双引号绕过(注意闭合)

Plain Text
cat fl""ag.php

  • 反斜线\绕过

Plain Text
cat fl\ag.p\hp

  • 特殊变量$1~9、9、@、$*
  • 内联执行

Plain Text
a=f;b=la;c=g.ph;d=p;cat $a$b$c$d

  • 利用linux里的环境变量进行拼接


${PATH:5:1}->PATH里面第5个字符开始取第一个字符,下标从0开始

文件读取命令绕过

  • 反向显示(cat->tac)
  • 换读取命令

Plain Text
more
、less:读取每页
tail:末尾十行
nl:读取内容显示行号
od:二进制读取->od -A d -C:以ascii码输出
xxd:同时返回16进制和字符串
sort:排序文件并输出
uniq:删除连续重复的行并输出
file -f:报错回显
grep:正则表达式查找

编码绕过

Plain Text
echo base64编码 | base -d | bash(或者sh)
echo base64编码 | base -d
$(echo base64编码 | base -d)
echo HEX编码(ascii码) | xxd -r -p | bash
printf "shellcode编码" | bash

writeup

[MoeCTF2021]Do you know HTTP

  • 访问页面发现要求HS请求

  • 根据提示用burpsuit抓包然后发送到repeater

修改GET头为HS,发现需要本地请求

  • 添加X-Forwarded-for: 127.0.0.1

  • 用Referer添加页面地址

  • 把User-Agent改为指定浏览器

  • 成功拿到flag

[SWPUCTF 2024秋季新生赛]http标头

  • 提示了发售当天的000;查一下黑神话的发售日期为2024年8月20日,星期二
  • 先抓包,用data头修改日期

  • 然后把User-Agent改为指定浏览器
  • 把cookie也改为指定数值,试了很多种,什么monkey,like等都试了没用,查资料发现是直接用cookie= ,我也是没招了
  • 后面直接添加Referer头就行了

最后添加X-Forwarded-for: 127.0.0.1就结束了

    RCE-labs

    RCE-labsLevel 0

    页面顶上有flag,复制粘贴即可

    RCE-labsLevel 1

    有include ()函数和eval($_POST['a'])函数且接收post输入的‘a’ 直接在hackbar中输入以下payload即可

    Plain Text
    a= echo $flag;

    RCE-labsLevel 2

    根据提示先用GET的提交方式输入?action=r,用随机到的函数构造payload,我第一个运气不好随到了preg_replace,这个函数的\e已经无效弄得我试了很多payload都没用,后面随到了eval,直接在POST中输入content='echo $flag;'就可以得到flag

    Plain Text
    content='echo $flag;

    RCE-labsLevel 3

    接受post输入的命令且以system运行,直接在post栏输入于以下payload即可

    Plain Text
    ls /
    cat flag

    RCE-labsLevel 4

    这题用GET接受ip输入并用system执行,所以直接在url地址构建payload即可,但这题应该过滤了cat函数,所以我改用了sort读取flag

    Plain Text
    ?id=-1; ls /
    ?id=-1; sort /flag

    RCE-labsLevel 5

    GET请求cmd接收,用system执行命令但过滤了flag,在url中构建payload如下:

    Plain Text
    ?cmd=ls /
    ?cmd=cat /fl""ag

    RCE-labsLevel 6

    这关几乎过滤了所有字母和字符但是放开了a和/,然后在网上查了cat命令是放在/bin/中,于是可以用通配符?构造payload (看了网上的payload还是不能理解为什么都是默认flag文件是在根目录下,没有看到一个判断了flag路径的payload

    Plain Text
    /???/?a? /??a?

    RCE-labsLevel 7

    这关是空格绕过加过滤flag,用%09代替空格然后用\绕过正则即可

    Plain Text
    ?cmd=ls%09/
    ?cmd=cat%09/fla/g

    RCE-labsLevel 8

    这关是>/dev/null 2>&1垃圾清理绕过,可以利用 || 的若前这运行成功则后者不运行的命令绕过

    Plain Text
    ?cmd=ls / || ?cmd=cat /flag ||

    学习心得

    学了rce但是没有完全学完,还有长度限制的rce没有写进来,实在是这个图文格式太难转换了,编辑csdn把我本地的学习笔记转进来图片就全没了,这篇的图片都是我一个一个复制粘贴进来的,太痛苦了。总体来说本周了解了http的响应回复机制,自己用docker搭建了靶场,说到docker,这个虚拟环境真是太难弄了,我的虚拟机的windows又不知道为什么不能和docker环境共存,开docker就不能开windows,这有点难受了,基本的php函数和语法格式主要是为了学习rce准备的,希望以后越来越好把,本周的内容还算简单。

    http://www.jsqmd.com/news/881665/

    相关文章:

  • 深度学习结合CT图像预测岩石渗透率:从孔隙网络到升尺度计算
  • 人工智能(AI)
  • 告别apt默认版本!Ubuntu 20.04手动编译安装snaphu 2.0.5完整指南(含gcc/make依赖解决)
  • 鲁棒非参数回归理论:重尾噪声下Huber损失与预测误差分析
  • 量子随机数生成器技术演进与多分布实时生成方案
  • 力学引导机器学习:构建土壤液化地理空间预测新范式
  • 机器学习降维与聚类在光学像差分析中的应用:PCA、FA与HC实战
  • 极验4滑块验证码W参数逆向与Python本地生成
  • VirtualBox虚拟机装完Win10后必做的5件事:共享文件夹、双向粘贴、USB连接全搞定
  • 扩散模型量化技术:挑战、突破与实战指南
  • 传奇 3 光通版手游官网下载:传奇 3 光通版最新官方下载渠道
  • 遥感新手避坑指南:在Windows 10/11上一步步搞定Py6s和6S模型(含MinGW、Fortran配置)
  • 天辛大师谈山东爱济南文化,AI赋能后的泉城文学序列
  • Win10硬盘分区后盘符出现黄色感叹号?别慌,这是BitLocker在‘待机’,教你两招搞定它
  • 告别模糊!深入LightDM钩子:为Arctica-greeter定制专属登录界面缩放(不干扰桌面)
  • AIMS-PAX:基于主动学习的高效机器学习力场构建框架
  • 六年之约-2026.5.23
  • 从一次工期延误看外加剂选型风险
  • Armv8-A架构扩展特性解析:安全、虚拟化与性能优化
  • Masson染色原理、步骤、判读及常见问题
  • 天辛大师浅谈湖湘文化传承,AI赋能考古记之高庙文化真实研究(五)
  • 模拟神经计算电路:噪声与非均匀性挑战下的网络架构优化与再训练策略
  • EByFTVeS:基于BFT共识的VSS方案防御时序攻击,保障DPML安全
  • 机器学习破解致密星物态方程逆问题:从M-R数据反推内部结构
  • 2026年比较好的贵州月嫂培训/贵州月嫂全网热门推荐 - 行业平台推荐
  • 如何在本地部署大模型-ollama_(保姆级教程)
  • 2026年想装修?昆明这些性价比超高的装修机构不容错过!
  • Google Earth Pro 2025( 谷歌地图) 安装教程:乱码解决+地图浏览
  • 2026年知名的电单车铝制品/割草机铝制品/台州托车铝制品厂家推荐与选型指南 - 品牌宣传支持者
  • WebDriver协议层原理与稳定性实战指南