1. view_source
直接f12查看网页源代码。
2. robots
网站的robots协议通常放在主页下的./robots.txt里,里面是一些可被搜索引擎或爬虫访问以及不可访问的目录。打开后里面有一个f1ag_1s_h3re.php文件,原地址栏加上
/f1ag_1s_h3re.php
访问这个网页,就能看到flag。
3. backup
网页的备份文件一般是以网页名.bak命名的,由于页面要求index.php的备份文件,所以在地址栏后加上
/index.php.bak
访问即可,下载下来一个txt,打开发现flag。
4. cookie
直接f12查看cookie,发现name栏有个look_here,值为cookie.php,加入地址栏
/cookie.php
访问之,根据页面提示查看response,flag就在其中。
5. disabled_button
修改前端代码,去掉input标签里的disabled属性,点击按钮即可获取flag。
6. weak_auth
这就是所谓弱口令了,直接通过burp用弱口令字典爆破。
7. simple_php
分析页面php代码,查阅相关资料可知,php的变量赋值都是通过字符串进行进行的,当一个纯字符串和数字比较的时候,会作为0来比较,而作为bool类型的时候,则会当作true,所以要是第一个if成立,只需要a=‘abc’(abc为任意纯字符串)。
而is_numeric()函数则是判定变量值是否是纯数字,而字符串和数字比较的时候会取字符串里的数字来判断,所以为了跳过第二个if,还要使第三个if成立,需要让b=‘1235abc’(1235为任意大于1234的数字,abc为任意字符或字符串),所以在地址栏后加上
/?a=abc&&b=1235abc
即可获取flag。(参考:ctf-web-攻防世界基础题simple_php)
8. get_post
先提交一个get请求,即在地址栏后加上
/?a=1
页面提示再提交一个post请求,用hackbar插件,使post可用,然后url栏加上地址,body栏加上b=2,然后execute就行了。
9. xff_referer
页面提示了ip地址为123.123.123.123,然后用burp抓包放到repeater里然后构造xff,即
X-Forwarded-For: 123.123.123.123
然后send,发现返回里有一个新的script,提示来源https://www.google.com,再次构造referer,即
Referer: https://www.google.com
再次send就能获取flag了。
(这里有个问题,当你直接复制整个地址到referer里的时候,返回可能出现错误,但如果把复制的//改为人工输入,就能成功了,这点我也没弄清楚…)
10. webshell
一句话木马,打开网址环境发现shell,用连接软件(比如中国菜刀,蚁剑啥的,我这里用的蚁剑),配置好环境后,直接右键添加数据,url填地址栏的,连接密码就是页面提示的shell,添加成功后连接服务器就能看到flag.txt了。
(配置蚁剑环境的时候碰到一个问题,下载好源码后显示代码解压出错:[object Object],其实这时代码的压缩包已经在目录下了,只要自己手动解压就好了)
11. command_execution
这里先提一下windows下的相关命令
command1 & command2 :不管command1执行成功与否,都会执行command2(将上一个命令的输出作为下一个命令的输入),也就是command1和command2都执行
command1 && command2 :先执行command1执行成功后才会执行command2,若command1执行失败,则不执行command2
command1 | command2 :只执行command2
command1 || command2 :command1执行失败,再执行command2(若command1执行成功,就不再执行command2)
尝试PING:
127.0.0.1 | ls /
用以查询目录,发现有个home目录,然后尝试
127.0.0.1 | ls /home/
可以发现flag.txt,于是用
127.0.0.1 cat /home/flag.txt
即可获取flag。
(参考:XCTF_Web_新手练习区:command_execution)
12. simple_js
打开网页需要输入密码,但无论怎么输显示FAUX PASSWORD HAHA,查看一下源码,发现问题出在script里,分析后发现按照当前的代码,的确怎么会显示上面的结果,往下发现一串
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"));
flag应该就是这个了,可以通过js的String.fromCharCode()方法修改代码输出,也可以通过python打印
#!/usr/bin/env python
def flag():
str = "\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".split(',')
flag = ""
for i in str:
flag += chr(int(i))
print(flag)
flag()