攻防世界题集 WEB 新手练习区全解
view_source
X老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了。
Ctrl + U,或者在网址前面加上 view-source:
就可以打开源代码了
get_post
X老师告诉小宁同学HTTP通常使用两种请求方法,你知道是哪两种吗?
需要同时发送 GET 和 POST 请求。直接在网址后面跟上 GET 请求参数,然后把 POST 参数作为 params
提交
robots
X老师上课讲了Robots协议,小宁同学却上课打了瞌睡,赶紧来教教小宁Robots协议是什么吧。
先访问网站根目录下的 robots.txt
,得到一个 f1ag_1s_h3re.php
的路径,再打开 f1ag_1s_h3re.php
就能看到 flag 了
backup
X老师忘记删除备份文件,他派小宁同学去把备份文件找出来,一起来帮小宁同学吧!
官方 WP 用了扫目录的脚本,但是直接猜也可以,运气好一次就猜中了,是 index.php.bak
cookie
X老师告诉小宁他在cookie里放了些东西,小宁疑惑地想:‘这是夹心饼干的意思吗?
执行 document.cookie
或者看响应头都能看到 cookie ('look-here=cookie.php'),访问 cookie.php
再看响应头就可以得到 flag 了
disabled_button
X老师今天上课讲了前端知识,然后给了大家一个不能按的按钮,小宁惊奇地发现这个按钮按不下去,到底怎么才能按下去呢?
审查元素编辑 HTML,删掉按钮的 disable 属性就行了
simple_js
小宁发现了一个网页,但却一直输不对密码。(Flag格式为 Cyberpeace{xxxxxxxxx} )
传入的 pass_enc
其实从头到位就没有实际用上过,所以密文和输入什么无关
URL 解码 \x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30
得到一串 ASCII 值,再按十进制转为字母就是 flag 了 (参考)
xff_referer
X老师告诉小宁其实xff和referer是可以伪造的。
用浏览器扩展或者 BurpSuite 抓包伪造请求头的 X-Forwarded-For
和 Referer
weak_auth
小宁写了一个登陆验证页面,随手就设了一个密码。
直接碰运气,账号 admin
,密码 123456
command_execution
小宁写了个ping功能,但没有写waf,X老师告诉她这是非常危险的,你知道为什么吗。
输入 0 | ls /home
会以 ping -c 3 0 | ls /home
执行,发现有一个 /home/flag.txt
,用 cat /home/flag.txt
获取 flag.txt
的内容
simple_php
小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。
<?php
show_source(__FILE__); //高亮显示代码
include("config.php"); //引用config.php,
$a=@$_GET['a']; //传值a,发生错误时不显示
$b=@$_GET['b']; //传值b,发生错误时不显示
if($a==0 and $a){ //如果a==0且a为真
echo $flag1; //输出第一部分flag
}
if(is_numeric($b)){ //如果b为数字或数字字符串
exit(); //退出(即b不可以为数字或者数字字符串)
}
if($b>1234){ //b>1234
echo $flag2; //输出第2部分flag
}
?>
php 是一种弱类型定义的语言,一个变量可以根据环境自动转换自己的类型,因此当变量是数字和字母的组合的时候,只会对比变量中最前面的数字。而 if
表示 "如果真",因此 if($a)
会先将真 (true)
赋值给 $a
再比较。根据 php 语法的特性,得到 a=0a&b=1235a
(参考)