nssctf web入门(2)

目录

[SWPUCTF 2021 新生赛]easy_md5

[SWPUCTF 2021 新生赛]include

[SWPUCTF 2021 新生赛]PseudoProtocols


这里通过nssctf的题单web安全入门来写,会按照题单详细解释每题。题单在NSSCTF中。

想入门ctfweb的可以看这个系列,之后会一直出这个题单的解析,题目一共有28题,打算写10篇。

[SWPUCTF 2021 新生赛]easy_md5

[SWPUCTF 2021 新生赛]easy_md5​​​​​​

<?php 
 highlight_file(__FILE__); #显示这个文件的代码
 include 'flag2.php';      #包含flag文件
 
if (isset($_GET['name']) && isset($_POST['password'])){  #if判断通过get请求name变量通过post请求password变量
    $name = $_GET['name'];  #定义name
    $password = $_POST['password']; #定义password
    if ($name != $password && md5($name) == md5($password)){  #要求name和password值不同但md5值相同
        echo $flag;
    }
    else {
        echo "wrong!";
    }
 
}
else {
    echo 'wrong!';
}
?>

这里记住md5的题基本都是这个,md5弱比较,md值为0e开头的会被识别为科学计数法结果为

0所以我们直接搜索md5值为0e开头的值就行

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

这里面的都是

 得到FLAG

[SWPUCTF 2021 新生赛]include

[SWPUCTF 2021 新生赛]include

按他说的传入一个file

<?php
ini_set("allow_url_include","on");   #通过ini_set是allow_url_include的选项改为on allow_url_include为on代表允许远程服务器上包含php文件
header("Content-type: text/html; charset=utf-8");
error_reporting(0); #通过error_reporting关闭错误报告
$file=$_GET['file']; #通过get获取file变量赋值给file
if(isset($file)){    #if判断
    show_source(__FILE__);   #show_source将当前文件输出到页面上
    echo 'flag 在flag.php中';
}else{
    echo "传入一个file试试";
}
echo "</br>";
echo "</br>";
echo "</br>";
echo "</br>";
echo "</br>";
include_once($file); #include_once将$file变量指定的文件包含进来,并执行文件中的php代码
?>

这里include开了肯定是文件包含,我们使用php伪协议通过base64过滤器将文件内容转为base64内容

php://filter/read=convert.base64-endode/resource=flag.php

php://filter/read 是一种特殊的数据源,用于读取并过滤输入数据。read 表示读取操作,即将数据源的内容读取到 PHP 程序中。可以在 read 后面指定一个或多个过滤器,用于对数据进行过滤和转换。

 在通过base64解密

[SWPUCTF 2021 新生赛]PseudoProtocols

[SWPUCTF 2021 新生赛]PseudoProtocols

这里和上面一样的使用伪协议

 base64解密

 

 

 

 

<?php
ini_set("max_execution_time", "180");  #ini_set 设置php运行时间的选项 max_execution_time为180表示php程序最多可以运行180秒
show_source(__FILE__); #通过show_source将当前文件源码输出到页面
include('flag.php'); #包含flag.php
$a= $_GET["a"];   #通过get方法获取a变量赋值给a
if(isset($a)&&(file_get_contents($a,'r')) === 'I want flag'){ #通过if判断先判断是不是空,然后通过file_get_contents读取变量$a'r'代表已只读的方法打开。如果读取成功会返回文件内容如果读取失败返回flase
	echo "success\n";
	echo $flag;
}
?>

很明显我们要构造$a的内容为a通过data方式传递a的内容为I want flag

 这里我们要明白通过url指定的a的值为I want flag 是不行的因为file_get_contents在解析url时会把a的值当为地址去解析即去$a=I want flag中获取数据打开,而$a=I want flag中没有数据。

通过data  中file_get_contents会直接将数据I want flag读取 

data:<MIME type>[;charset=<charset>][;base64],<data>
其中 <MIME type>是数据类型 test/plain 代表文本类型 image/png代表图片类型
<charset> 代表字符编码 如 utf-8 gb2312
<base64> 指示数据部分是否进行了base64编码
<data> 数据部分可以是文本,图片,等等

  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

许允er

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值