001 view sourse
右键点不动,我用的是chrome浏览器,f12,在注释中找到flag

002 POST&GET
fiddler中拦截,直接修改webform中元素

执行后,提示需要用POST再发一个b=2的包
用composer功能,需要在请求消息中补充
Content-Type: application/x-www-form-urlencoded
总的如下:

返回消息中得到

cyberpeace{0a18f613f24ab16f422c516f3eff7484}
003 robots
根据题目想到robots协议,在链接后加/robots.txt

在链接后加f1ag_1s_h3re.php,得到flag
关于robots协议
004 backup
在链接后加index.php.bak,下载文件,用记事本打开,得到flag
常见的备份文件后缀名有: .git .svn .swp .svn .~ .bak .bash_history
005 cookie
1.fiddler:
根据提示直接查看cookie:

根据提示访问cookile.php:

查看响应头,发现flag:

2.chorme浏览器
才知道可以不用那么麻烦,直接浏览器就行。链接左侧可以查看cookie:

按f12,刷新后network中可以查看到cookie.php的响应包:

006 disabled_button
1.查看源码,发现disabled标签,f12开发者模式,在elements中删除该标签,按钮变为可点击状态,点击即得flag

2.查看源码,得知这个按钮的意思是用post方式发送auth=flag

在fiddler中发包:

得到flag:

知识点
disabled 属性规定应该禁用 input 元素。
被禁用的 input 元素既不可用,也不可点击。可以设置 disabled 属性,直到满足某些其他的条件为止(比如选择了一个复选框等等)。然后,就需要通过 JavaScript 来删除 disabled 值,将 input 元素的值切换为可用。
注释:disabled 属性无法与 <input type="hidden">一起使用。
007 weak_auth
随便登陆,提示用户名为admin
用admin登陆,提示密码错误。查看源代码,发现提示

猜测需要使用字典爆破,将登陆报文发送到intruder

因为已经知道用户名为admin,只需要爆破密码。标记密码部分:

去随便复制一个弱口令字典(我用的弱口令字典),粘贴到payload里面

开始爆破,发现123456的长度和其他不同

查看123456的响应信息

获得flag
008 command_execution
| command1 && command2 | 先执行 command1,如果为真,再执行 command2 |
|---|---|
| command1 | command2 | 只执行 command2 |
| command1 & command2 | 先执行 command2 后执行 command1 |
| command1 || command2 | 先执行 command1,如果为假,再执行 command2 |
尝试命令127.0.0.1 | ls,得到:

说明存在命令注入漏洞。
构造命令:127.0.0.1|find / -name "flag*"

构造命令:127.0.0.1|cat /home/flag.txt
得到flag

009 simple_php

大概意思是用GET方式获取两个参数a和b,当a=0和a不为0同时成立时获得flag1,当b大于1234并且b不为数字时获得flag2.
这里考察了php的弱类型比较
因为在弱类型比较下,字符串判定为0,所以可以构造a=abc
前面带数字,且不含e、E等的字符串判定为开头数字,构造b=1235a
因为要用GET方式传递参数,可以在fiddler中抓包修改,也可以直接在url后添加?a=abc&b=1235a
010 xff referer
伪造XFF头绕过服务器IP过滤
X-Forwarded-For和Referer
直接拦截请求,添加X-Forwarded-For: 123.123.123.123,提示要来自www.google.com

添加Referer:https://www.google.com

值得注意的是,发包的时候Referer应当在X-Forwarded-For后面
011 webshell
什么是webshell
PHP: eval - Manual

由题目可得密码为shell,使用POST方式传递
在fiddler中用POST发包,构建
shell=system('find / -name "flag*"');

返回信息中有flag.txt,使用cat命令打开该文件
shell=system('cat /var/www/html/flag.txt');

得到flag
012 simple_js
可真是苦了我这个不会js的小白了……
查看源码

看writeup,中间计算的那一部分无论如何都会跳到错误密码。因为js知识太弱实在是没有读懂。(不过似乎这段代码毫无用处(需要补一下js了
python 十六进制表示 0x \x
Python ASCII码与字符相互转换
0x是整型数值,\x是字符。将这串字符显示出来看,发现是一串数字,再用ascii码将这串数字转换为对应的字符串
s = "\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"
s = s.split(',')
print(s)
psw = ""
for i in s:
psw+=chr(int(i))
print(psw)

根据题目要求,构造flag为:Cyberpeace{786OsErtk12}
本文深入探讨了多种渗透测试技巧,包括源代码分析、利用备份文件、Cookie操作、弱认证破解、命令注入、PHP弱类型比较、伪造XFF头、WebShell使用、JavaScript破解等,提供了详细的步骤和实例。

1891





