[SWPUCTF 2022 新生赛]部分WP
目录[*]WEB
[*]1.funny_web
[*]2.奇妙的MD5
[*]3.where_am_i
[*]4.ez_ez_php
[*]5.webdog1__start
[*]6.Ez_upload
[*]7.numgame
[*]8.ez_ez_php(revenge)
[*]9.ez_rec
[*]10.1z_unserialize
[*]11.xff
[*]12.js_sign
[*]13.ez_ez_unserialize
[*]14.funny_php
[*]PWN
[*]1.Does your nc work?
[*]2.Integer Overflow
[*]3.有手就行的栈溢出
[*]REVERSE
[*]1.贪吃蛇
[*]2.babyre
[*]3.easyre
[*]4.xor
[*]5.upx
[*]6.base64
[*]7.base64-2
[*]8.android
[*]9.py1
[*]10.py2
[*]11.pypy
[*]CRYPTO
[*]1.善哉善哉
[*]2.什锦
[*]3.All in Base
[*]4.Welcome to Modern Cryptography
[*]5.Sign
[*]6.Matrix
[*]7.AES
[*]8.爆破MD5
[*]9.Caesar?Ceaasr!
[*]MISC
[*]1.Capture!
[*]2.Coffee Please
[*]3.Convert Something
[*]4.Coding In Time
[*]5.Cover Removed
[*]6.Continue
WEB
1.funny_web
先试试随便填写一点内容,然后显示:用户名是实验室名哦~
得知是 NSS
再次提交后显示:听说密码是招新群某位的QQ
第一时间就想到了我们的谢队的QQ~2122693401
于是进入rea11y.php来到第一道题
首先,这里对参数get作了长度限制,并且要过滤掉flag字符串,如果要输入的指令太长,并且还要输入flag,那么就想,能不能让指向另外一个参数呢?
先测试这个想法能不能通过,于是构造如下payload
?num=12345/https://nssctf.wdf.ink/img/zack/web_dog_final.jpg
很明显这个长度已经远超18的限制,并且flag字符串也没被过滤掉,那就证明了这个思路是正确的。
那么先尝试查看一下当前目录有什么文件呢,让他执行一下ls
?num=12345\!(D:\CTF Tools\SWPU NSS新生赛 2022\web_images\web_dog_final_2.jpg)
发现一个flag.php,那试试cat flag.php?
https://nssctf.wdf.ink/img/zack/web_dog_final_3.jpg
但是很遗憾,没回显,说明这个flag.php是假的
那么尝试一下搜索查看一下根目录有没有
?x=QNKCDZO&y=240610708!(D:\CTF Tools\SWPU NSS新生赛 2022\web_images\web_dog_final_4.jpg)
发现根目录下有一个flag,现在再尝试用cat /flag
<?php
error_reporting(0);
include "flag.php";
highlight_file(__FILE__);
if($_POST['wqh']!==$_POST['dsy']&&md5($_POST['wqh'])===md5($_POST['dsy'])){
echo $FLAG;
}https://nssctf.wdf.ink/img/zack/web_dog_flag.jpg
得到flag,本题结束
6.Ez_upload
先随便传一个文件试试
https://nssctf.wdf.ink/img/zack/ez_upload_wtf.jpg
传不进去,那就打开Burp看看
https://nssctf.wdf.ink/img/zack/ez_upload_burp.jpg
先把文件内容删除试试,再提交看看
https://nssctf.wdf.ink/img/zack/ez_upload_burp_1.jpg
发现成功上传了,那试试传一个phpinfo();
https://nssctf.wdf.ink/img/zack/ez_upload_burp_2.jpg
不正确,那先不用php的文件后缀名再试试呢?
https://nssctf.wdf.ink/img/zack/ez_upload_burp_3.jpg
这里没有再提示文件后缀名的问题,而是另外一个提示。说明很有可能是过滤了<strong> 分析一下代码,就是一个很简单的序列化
这里lt就是要执行的函数,lly是要传给函数的参数
手写一个payload,先看一下目录里面有些啥
<?php
error_reporting(0);
if (isset($_GET['file'])) {
if ( substr($_GET["file"], 0, 3) === "php" ) {
echo "Nice!!!";
include($_GET["file"]);
}
else {
echo "Hacker!!";
}
}else {
highlight_file(__FILE__);
}
//flag.phphttps://nssctf.wdf.ink/img/zack/ez_unserilize_start.jpg
回显只有index.php
看来似乎得想别的办法,试试搜索一下flag呢
?file=php://filter/resource=flag.phphttps://nssctf.wdf.ink/img/zack/ez_unserilize_find.jpg
发现flag在根目录下,那就直接让它显示出来
?file=php://filter/resource=flaghttps://nssctf.wdf.ink/img/zack/ez_unserilize_flag.jpg
找到flag,本题结束。
11.xff
打开靶机显示Must be accessed from Xiaohong's own computer.
先用hackbar添加X-Forwarded-For到127.0.0.1
返回显示Must be jump from Home Page.
再次利用hackbar添加Referer到127.0.0.1
轻松得到flag
https://nssctf.wdf.ink/img/zack/xff.jpg
12.js_sign
启动靶机,打开开发者工具发现指向了main.js,打开后分析
将dGFwY29kZQ==解码后得到提示:tapcode
网上实在是没找到合适的tapcode解码工具,于是我去找了一张tapcode对照表
https://nssctf.wdf.ink/img/zack/tapcode%E5%AF%B9%E7%85%A7%E8%A1%A8.png
按照对照表手动翻译了一遍,得到结果:
<?php
error_reporting(0);
highlight_file(__FILE__);
if (isset($_GET['get'])){
$get=$_GET['get'];
if(!strstr($get," ")){
$get = str_ireplace("flag", " ", $get);
if (strlen($get)>18){
die("This is too long.");
}
else{
eval($get);
}
}else {
die("nonono");
}
}
?>按照平台格式要求,最终flag为NSSCTF{youfindflagbytapcode}
13.ez_ez_unserialize
启动靶机,源码如下
看完后也就是说,要同时满足L1、L2、L3都存在,那就一个一个的分析好了。
先看L1,既要长度小于3,又要数据大于999999999,怎么会有这么奇怪的逻辑判断,不讲武德直接数组绕过
?get=eval($_GET['A']);&A=system('ls');https://nssctf.wdf.ink/img/zack/funny_php_L1.jpg
回显<strong>
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]