攻防世界新手区
目录:
1. view_source
- 这个题很明显的,只需要查看源代码就能看到 flag,但是不能鼠标右键
- 这里可以直接按
F12
键或者Fn+F12
即可 - 也可以在URL前面加上
view-source:
查看源代码
2. robots
# robots协议
1. robots协议也叫robots.txt,是一种存放于网站根目录下的ASCII编码的文本文件
2. robots.txt 文件通常用来告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的。
3. 因为一些系统中的URL是大小写敏感的,所以robots.txt的文件名应统一为小写。
4. robots.txt应放置于网站的根目录下。
- 通过
robots
协议,直接访问根目录下的robots.txt
文件,得到还存在一个f1ag_1s_h3re.php
文件
- 访问链接
http://111.200.241.244:53876/f1ag_1s_h3re.php
,获得 flag
3. backup
- 通过提示,此题考的是备份文件泄露,一般备份文件的后缀名是
.bak
- 直接访问
index.php.bak
下载,打开看到 flag
4. cookie
- 题目名字和提示考的是
cookie
,所以进入链接,右键选择检查 - 在
Network
中Headers
里面找到cookie
(需要刷新一下),找到cookie.php
文件
- 访问
cookie.php
文件,在Response Headers
中看到 flag
5. disabled_button
- 这里考察简单的前端知识,右键调出调试窗口,看到
<input>
标签中有一个disabled
,删除即可
6. weak_auth
- 这里提示 随手设了一个密码 ,然后是登陆页面,所以优先考虑弱口令
- 输入用户名
admin
,密码123456
即可
7. simple_php
-
一个简单的PHP审计,需要使用 GET 方式提交两个变量
-
a
变量使用的是弱类型比较==
,需要等于0
,但是单独使用时不是0
,由于是弱类型比较,使用0a
即可绕过(这里可以是0b
,0abc
等类型的都行) -
b
变量有两个判断,一个是要求不能是数字,然后要求值大于1234
,同样的可以使用弱类型比较绕过 -
访问链接:
http://111.200.241.244:50716/?a=0a&b=12345a
,获得 flag
8. get_post
- 考察简单的GET和POST两种提交方式,推荐使用浏览器插件
HackBar
(也可以使用 burpsuite 抓包修改也可)
9. xff_referer
- 考察的是
xff
和referer
xff
也即X-Forwarded-For
,作用是使Web服务器获取访问用户的IP真实地址,但可以伪造referer
用来告诉浏览器当前连接是从哪个链接跳转过来的
- 使用工具
burpsuite
抓包,发送到Repeater
模块处理(也可以不用,但是通常这么做,用来处理数据比较方便,推荐使用)
- 根据提示,在信息中添加
xff
信息,查看Response
返回的信息,需要伪造referer
- 再添加
referer
字段信息,获得 flag
10. webshell
-
内容考察PHP一句话,这里可以使用蚁剑,菜刀直接连接,然后查看文件,获得 flag
-
但由于这里的一句话使用的是
eval()
函数,能够将里面的内容变成字符串使用,可以理解为变成文件中的代码。 -
嘿嘿,所以直接使用 POST 提交一个
shell
变量,然后变量的内容传入system()
函数即可,就能直接调用系统命令,这么使用会方便很多,但需要注意,传入的内容需要加上一个分号;
-
传入
shell=system('ls');
看到当前页面有一个flag.txt
文件,所以直接cat flag.txt
即可
11. command_execution
- 传入
127.0.0.1
,就是简单的ping
命令
- 使用命令
id
看到能够执行命令,所以内容也很简单,就是很简单的命令执行,使用;
作为间隔,用来执行两条命令
- 直接
find / -name flag.*
,获得 flag 文件的路径 - 拿到路径后,直接
cat
即可
12. simple_js
- 进入链接,弹出一个验证窗口,需要输入密码,但是尝试好几个都是同样的结果
- 直接右键查看代码,看有没有什么好东西,发现了一堆JS代码,里面定义一个函数
dechiffre
,能用来处理传入的ASCII码内容
<html>
<head>
<title>JS</title>
<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>
</head>
</html>
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"));
- 代码里面发现这里调用了函数,还有下面的
alert()
,但没啥关系 - 看到这个
\x
,十六进制编码,直接右键检查,丢在Console
中解码,获得ASCII码内容
- 用python写几行代码,将ASCII码转为字符串,然后前面的提示中有flag格式为
Cyberpeace{}
- 所以将内容放进去尝试一下,成功
asciis = "55,56,54,79,115,69,114,116,107,49,50"
alist = asciis.replace(',', ' ').split(' ')
for i in alist:
print(chr(int(i)), end='')
Cyberpeace{786OsErtk12}