攻防世界Web新手练习区题目(view_source到simple_php)WP

目录

view_source​

robots​

Training-WWW-Robots

PHP2​

get_post​

backup​

cookie​

disabled_button​

simple_js​

xff_referer​

weak_auth​

command_execution​

simple_php​


view_source

获取在线场景后访问题目场景

在右键不管用的情况下,可以使用f12或者ctrl+u查看网页源代码,在这里找到flag。

cyberpeace{89390b6098f65c1a6907982df4ab8f7f}

robots

robots协议也称爬虫协议、爬虫规则等,是指网站建立一个robots.txt文件来告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。 搜索引擎则通过读取robots.txt文件来识别这个页面是否允许被抓取。 查看这个网页的robots.txt。

再访问f1ag_1s_h3re.php,就是将robots替换为f1ag_1s_h3re.php即可得到flag。

Training-WWW-Robots

打开后可以看到很多英文,可以翻译一下。

和上一题类似,需要访问robot文件

再访/fl0g.php即可找到flag。

PHP2

翻译一下

PHP2是服务器端脚本语言,主要用于处理和生成网页的内容,当用户访问一个网站时,PHP脚本会在服务器上执行,生成动态的HTML页面,然后将页面发送给用户的浏览器进行显示。

常见的 PHP 脚本通常是保存在以 .php 为扩展名的文件上。这些文件可以存储在web 服务器的文档根目录中,以便通过浏览器访问和执行 所以可以先尝试index.php文件。

能访问,意味着存在这样的脚本文件。 php文件源代码一般放在phps文件上,我们可以尝试一下。

发现了php的文件源代码。 字母的url码就是每一个字母的ascll码,以%+16进制的形式定义

‘a’,‘d’,‘m’,‘i’,‘n’的ascll码的16进制为‘61’,‘64’,‘6d’,‘69’,‘6e’

而浏览器会自动翻译一遍url码,导致最后与直接输入admin没有区别,这时我们想办法再套一层url。而%也是一种特殊字符,可以将它再套一次,搜索后发现%是%25。 所以尝试输入%2561dmin

发现了flag为cyberpeace{feee169d698b9d1d8354ba7f9779057c}

解答完成。

get_post

考察http通常使用的两种请求方式。

按f12打开hackbar

点击load加载网页

提交时先写一个问号再写上a等于1。注意要是英文问号。

点击excute发送,之后又要我们以post方式提交。

打开use post method

在body那里写上b=2

excute后即可得到flag。

backup

backup就是备份文件的意思。

备份文件有很多后缀,可以一个一个去尝试。

发现是bak文件,回车后会自动进行下载。

打开记事本得到flag提交

如果不想一个一个去试还可以使用kali软件进行路径扫描。

cookie

鼠标按右键,检查,找到应用application。

然后访问右边出现的cookie.php

 

response就是响应。

而在network里面我们可以查看response,所以我们从application切换到network。

点击cookie.php。

在headers下翻找到flag提交即可完成这题。

disabled_button

不能按的按钮。

先查看源代码,没发现什么信息。

再使用f12检查。发现没有cookies值,使用network抓包也发现什么都没有。 所以想到题目是前端,所以点击element。看前端代码

右边代码中选到一个不能按的按钮下面那行时按钮亮了,说明找到了按钮的这行代码,可以看到这是一个表格且发送的是post请求

展开,看到disabled这行,尝试修改

右键以html格式修改。

直接删除掉disabled,此时点击其它行解除修改后发现按钮能点击了。

点击按钮后就出现了flag。最后提交即可。

simple_js

点开靶机后可以直接输入密码,但是是输不对的。 然后我们点开源代码。

可以发现一长串js代码。 里面有一串似乎可以被解码的字符串。 \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 所以我们使用python,将这串字符串转化为数字,再将数字转化为ascii码即可得到flag。

pycharm启动!

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"
new_s = s.split(",")
print(s)
# 以逗号为分隔得到一个列表
result = ""
for i in new_s:
    i = chr(int(i))
    #使用for循环,将每个字符转化为int类型再转化为chr类型
    result += i
print(result)

这样得到结果。

Cyberpeace{xxxxxxxxx},放进xxx里即可得到flag。

xff_referer

xff就是识别ip地址的http请求头字段。

referer可以显示网址的来源。 hackbar可以进行发包,我们打开hackbar点击load

下面可以更改header

通过xff的header去访问题目给我们的ip地址

发送后告诉我们必须来自谷歌

再次修改header,并且使用referer并且使用他给我们的网址

然后就能得到flag

weak_auth

弱认证

随便输入之后告诉我要以admin的形式登录。

打开burp的拦截,将名字使用admin,密码随便,可以看到burp拦截了数据包。

将这个数据包发送到repeater,重发器,然后发送。

可以看到response里告诉我们密码错误。 并且题目告诉我们需要一个密码字典。 将包发生到intruder,攻击器。 选择sniper,修改payloads。

点击payload里的load,将blasting-dictionary里的常用密码导入。

常用密码github里有,可以去下载。

回到上一个页面,选择爆破的地点,点击Add选择密码add,可以发现图标有变化。

最后点击start attack开始攻击。状态码(status code)为200就代表成功。 等待爆破完成。密码正确时显示的length是不同的,根据这一点可以判断出正确的密码。

发现密码为123456,从而得到flag cyberpeace{fc155350c0dda4d8257867bc0a3d8a32}

command_execution

先尝试ping一下本地回环,127.0.0.1

ping完后发现返回的有-c,而-c代表是linux的操作系统。 所以我们可以尝试拼接来绕过ping,可以一条命令后接分号再接命令,此时linux会先进行第一条命令再执行第二条命令,也可以使用管道符号连接,此时会只执行后面那条命令,只会显示后面的那条命令的结果。

这样做后看到出现了index文件。ls是用于查看当前目录的。

查看环境变量,发现是个apache的服务。

查看根目录。

查看根目录下的home目录发现flag.txt。

使用cat指令去查看home目录下的flag文件。发现了flag。

cyberpeace{bfd162c9f242eb8d1b3f50391ed8dbce}

要是没有发现flag在home目录下,可以使用find命令去查找。

这个linux指令查找根目录下的名为flag.txt的文件。

simple_php

打开后可以看到这是一个php的代码审计问题。 给a赋值一个‘a’ 给b赋值一个‘b’

两个等于是一个松散比较,发现当我们传入一个字符串时,在php8.0.0前的版本字符串与0==也代表为true。

给a传入一个字符串后,if判断时,前面为true,后面因为是字符串也为true,所以得到flag1。 使用&符号可以同时传递参数。

这里表示b不能是数字,是数字或数字字符串就退出。 但是我们可以输入9999a,在后面加上一个a,这样就不是数字也不是数字字符串,但它可以与后面的1234进行比较,从而得到flag2。

web新手区这11道题就写完了。

Web Python Template Injection 是一种常见的 Web 漏洞类型,通常缩写为 SSTI(Server Side Template Injection)。该漏洞是由于 Web 应用程序未正确处理用户输入导致的,攻击者可以通过构造恶意输入来执行任意代码或获取敏感信息。 Python 作为一种流行的 Web 开发语言,广泛应用于 Web 应用程序中。Python Web 框架(如 Flask、Django 等)通常使用模板引擎来生成动态内容。在模板引擎中,可以使用变量、表达式、条件语句、循环语句等功能来生成动态内容。然而,如果在模板引擎中直接使用用户输入作为变量或表达式的一部分,而没有对用户输入进行适当的验证和过滤,就可能导致模板注入漏洞。 例如,在 Flask 应用程序中,可以使用 Jinja2 模板引擎来生成动态内容。如果在模板中使用了用户输入的变量,攻击者可以构造恶意输入来执行任意代码。例如,以下代码中的 name 变量可能是用户输入的: ```python from flask import Flask, render_template, request app = Flask(__name__) @app.route('/') def index(): name = request.args.get('name', '') return render_template('index.html', name=name) if __name__ == '__main__': app.run(debug=True) ``` 在 index.html 中,可以使用 {{ name }} 来显示用户输入的 name 变量。如果攻击者在 name 中注入了模板代码,就可能导致模板注入漏洞。例如,攻击者可以构造如下的输入: ``` {{ ''.__class__.__mro__[1].__subclasses__()[414]('/etc/passwd').read() }} ``` 这段代码在模板引擎中会被解释为调用 Python 的 subprocess.Popen 函数执行命令 /etc/passwd,并读取其输出。攻击者可以通过这种方式执行任意代码,获取敏感信息或者直接控制服务器。 为了防止 SSTI 漏洞,开发人员应该对用户输入进行严格的验证和过滤,避免在模板引擎中直接使用用户输入作为变量或表达式的一部分。可以使用 Python 的安全模板引擎(如 jinja2-sandbox、jinja2-timeout 等)来限制模板执行的权限,或者使用模板引擎提供的安全过滤器(如 escape、safe 等)来过滤用户输入。此外,还应该及时更新 Web 应用程序和相关组件,以避免已知的漏洞攻击。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柏箱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值