新手练习过程~ 👇
目录
001:view_source
打开网页,只有一句话:
查看源代码:
1)右击 -> 检查元素(右击不了)
2)"f12":
3)"view-source:网址" 或者 快捷键Ctrl+u:
002:robots
本题考察的是robots协议
robots.txt是一个协议,不是一个命令。robots.txt是搜索引擎中访问网站的时候要查看的第一个文件,它告诉蜘蛛程序(网络爬虫)在服务器上什么文件是可以被查看的。
下面是来自百度的进一步解释👇:
差不多,开始做题:
打开网页,啥也没有😵,f12查看源代码:
flag不在源代码中。根据开始介绍的知识,尝试访问robots.txt文件:
出现了一个php文件,访问再说:
找到√😁
003:backup
一般的备份文件的后缀为.bak
打开网页,出现了一句疑问句:
根据页面提示,尝试访问index.php.bak文件:
下载打开:
004:cookie
根据题目描述:cookie里放了东西
访问页面,并用bp抓包:(也可以 f12 ->网络->找出数据包->消息头->响应头 查看 )
叫我看cookie.php,那看下:
根据页面显示,再看http响应:
005:disabled-button
打开页面,按不了按钮🤔:
根据题目描述:“X老师今天上课讲了前端知识”。那看下前端代码:
在html中disabled属性会禁用按钮
发现有disabled属性,删掉它:
按钮一点,出来了🤗:
006:weak-auth
打开页面,为登录表单:
随便输入提交,显示用admin登录,即用户字段为admin:
上bp,发给intruder,我们尝试爆破password就好了:
加载爆破字典:
开始爆破,长度唯一,密码就它了:
账号密码登录:
007:simple_php
打开网页,出现一段php代码:
阅读代码:
有a和b参数,都是通过get方式传入,flag分成了flag1和flag2;要获得flag1,需要满足“参数a等于0且为真”;要获得flag2,需要满足“参数b不是数字且b要大于1234”。
[小知识点]
1、php中,==是不严格的等于,只比较两个变量的值,不比较数据类型;===比较两个变量的值和类型;在php弱类型中,会使('1234a'==1234)为真;
2、is_numeric()函数:如果是数字和数字字符串则返回TURE,否则返回FALSE。
通过分析,构造其中一个payload:?a="0"&b=1234a:
get√
008:get_post
打开网页,要用get方式提交一个名为a,值为1的变量。
直接在链接后面添加就行:
用post方式提交一个名为b,值为2的变量:
用火狐浏览器中的插件"hackbar"(安装后f12调出):
执行后:
009:xff_referer
打开网页,显示:
打开BP,抓包,发给Repeater,修改X-Forwarded-For字段为所要求的ip:
(XFF字段是用来识别最原始的IP地址的HTTP请求头字段)
返回数据包中,说要指定来源:
因原数据包中没有referer字段,故添加referer字段,来设置来源:
(referer字段会记录该http请求的来源地址)
get√:
010:webshell
可以看到,是php的一句话木马
用工具“中国菜刀”(方便快捷);右击添加:
编辑好后,双击,进入:
双击打开flag.txt就有了√
011:command_execution
打开网页,用 "127.0.0.1|ls" 测试一下(也可以 "127.0.0.1&ls"、"127.0.0.1&&ls"):
可以看到,它执行了ls命令;
找到根目录为上三级:
为了方便快捷,用python编写简易爬虫小脚本:
import requests
url="http://111.200.241.244:60330/"
list=['bin','boot','dev','etc','home','lib','lib64','media','mnt','opt','proc','root','run','run.sh','sbin','srv','sys','tmp','usr','var']
for i in list:
p={"target":"127.0.0.1|ls ../../../%s"%i}
r=requests.post(url,data=p).text
if "flag" in r:
print("flag in:",i)
break
找到flag在home目录下,列出home目录看看:
用cat命令查看flag.txt的内容:
012:simple_js
打开网页,一个输入框:
右击,查看页面源代码:
是一段js代码,有点乱。。。 复制下来,整理一下,进行代码审计🙃:
存在可疑字段 “\x35\x35\x2c....”
[小知识点]:
js中,fromCharCode()方法的作用是 将Unicode编码转为一个字符
因为最后处理的是tab2的值,为了方便,删掉一些无用变量(包括tab1):
把两个for循环合并一下:
把可疑字段换到上面:
保存,用网页打开:
根据题目提示:Flag格式为 Cyberpeace{xxxxxxxxx}
所以Flag为 Cyberpeace{786OsErtk12} 🤗
本题参考攻防世界中的Writeup