2023NewStarCtf [WEEK2] web 方向超详细wp(题目+思路+拓展知识点)

1、游戏高手

这里需要修改前端js文件,用变量覆盖修改gamescore的值,使得判定为大于100000分。

如果不清楚修改js文件的具体步骤参考这个链接:

使用 firefox 运行时更改 javascript 变量值_如何修改火狐html变量值-CSDN博客

步骤:火狐找到调试器下的js文件,在里面gamescore这一行打断点(点一下347那行的开头就行),然后点击开始游戏,游戏会在打中目标的时候停在断点处,这时候点击控制台,在里面写入gameScore=99999999999然后回车,就相当于给这里的gamescore赋值了99999999999,然后点击左上角这个运行,回到调试器把鼠标移到gamescore上面看看有没有赋值成功,然后点击运行,就能弹出flag

2023NewStarCtf [WEEK2] web 方向超详细wp(题目+思路+拓展知识点)_第1张图片

2、include 0。0

 题目:

  nope

典型的文件包含题,这里过滤了base64和rot13,我用的payload是:

?file=php://filter/convert.iconv.utf-8.utf-7/resource=flag.php

 2023NewStarCtf [WEEK2] web 方向超详细wp(题目+思路+拓展知识点)_第2张图片

把+AHs-和+AH0删掉替换成{},就是flag了

原理:使用其他的过滤器convert.iconv.* 绕过(php://filter中的各种过滤器)

 使用方法:convert.iconv.. 或者 convert.iconv./

这里的分别为输入的字符串编码方式和输出的字符

3、ez_sql

sqlmap就能出,payload:

sqlmap -u 'http://73be49a6-4f58-4bc9-b1f6-0c8daae72f49.node4.buuoj.cn:81/?id=1' -D 'ctf' -T 'here_is_flag' -C 'flag'  --dump   

2023NewStarCtf [WEEK2] web 方向超详细wp(题目+思路+拓展知识点)_第3张图片

 4、Unserialize?

题目如下:

 cmd)){
            @system($this->cmd);
        }
    }
}

@unserialize($_POST['unser']);
?> 

很简单的一个反序列化,用ls -al命令查询一下当前目录文件

  

PHP 序列化的时候 private和 protected 变量会引入不可见字符%00,private是%00类名%00属性名 ,protected为%00*%00属性名 ,注意这两个 %00就是 ascii 码0的字符。这个字符显示和输出可能看不到,甚至导致截断(无法复制),但是url编码后就可以看得清楚.。

下面长得很像麻将的两个就是ascii 码0的字符

2023NewStarCtf [WEEK2] web 方向超详细wp(题目+思路+拓展知识点)_第4张图片

因为是private,序列化出来后会有%00属性导致无法完全复制去burp,而且传参里也不能有空格,应该用%20或者‘+’链接因为最后使用post传参可以识别url编码,所以把空格处替换为%20,payload:

 O:4:"evil":1:{s:9:"%00evil%00cmd";s:6:"ls%20-al";} 

回显成功,但是当前目录文件显示只有一个index文件,没有flag相关文件,这里我们可以查看下上级目录下的所有文件system(ls ..),发现上级目录是html,猜测flag文件在根目录下,而linux中查询根目录下文件的命令为ls /,一试就找到th1s_1s_fffflllll4444aaaggggg文件:

O:4:"evil":1:{s:9:"%00evil%00cmd";s:4:"ls%20/";} 

读取flag,最终payload为:

O:4:"evil":1:{s:9:"%00evil%00cmd";s:33:"nl%20/th1s_1s_fffflllll4444aaaggggg";} 

5、Upload again!

这里发现服务器把php4,phtml这些后缀都过滤了,但是.htaccess上传成功,这里考的应该是.htccess解析漏洞。

原理在此:https://blog.csdn.net/sorryagain/article/details/125080205

简而言之,.htaccess文件的作用域为其所在目录与其所有的子目录,若是子目录也存在.htaccess文件,则会覆盖父目录的.htaccess效果。所以我们可以先上传一个.htaccess文件,里面写入代码告诉服务器将 .jpg 后缀的文件解析为 PHP 脚本,然后上传.jpg格式的图片马

步骤:建一个txt里面写入:

AddType application/x-httpd-php .jpg

然后改名为.htaccess注意不要在.前面加东西,.htaccess是一个固定文件

然后随便找一个.jpg后缀的图片,用notepad打开,写入一句话木马:

先上传.htaccess开路,后上传图片马,然后链接蚁剑在根目录下找到flag

6、R!!C!!E!!

点进去注意到or you wanna to find some leaked information?

leaked information翻译过来就是信息泄露,第一时间想到的是git文件泄露,使用githack得到过滤条件

if (';' === preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['star']))这是一个非常典型的无参数rce题目,这里的正则表达式 [^\W]+\((?R)?\) 匹配了一个或多个非标点符号字符(表示函数名),后跟一个括号(表示函数调用)。其中 (?R) 是递归引用,它只能匹配和替换嵌套的函数调用,而不能处理函数参数。使用该正则表达式进行替换后,每个函数调用都会被删除,只剩下一个分号 ;,而最终结果强等于;时,payload才能进行下一步。简而言之,无参数rce就是不使用参数,而只使用一个个函数最终达到目的。

这里的payload是:

/bo0g1pop.php?star=eval(next(getallheaders()));

getallheaders() 函数用于从 HTTP 请求头中获取所有的头信息,然后调用 next() 函数返回数组中的下一个元素,并将其作为参数传递给 eval() 函数来执行 

然后发现只有UA头的消息回显了,所以我懒得找别的方法选择改ua头:

system("la /");

查找根目录文件

2023NewStarCtf [WEEK2] web 方向超详细wp(题目+思路+拓展知识点)_第5张图片

最后使用cat /flag读取flag,payload如下:

system("cat /flag");

2023NewStarCtf [WEEK2] web 方向超详细wp(题目+思路+拓展知识点)_第6张图片

你可能感兴趣的:(各种ctf的wp合集,网络安全,web安全,php,安全)