攻防世界web新手

view_source

F12看源码

image-20200717105543297

get_post

进入链接后提示如下:

image-20200717105042516

构造url

image-20200717105235135

提交后提示如下:

image-20200717105348157

再次构造url

image-20200717105410671

提交得到flag

image-20200717105433487

robots

进入链接后什么都没有

看看robots.txt

image-20200717105816695

可以看到disallow的位置就是我们要找的flag

image-20200717105903647

backup

image-20200717110737642

看到index.php,我们看看

image-20200717110832971

发现没有什么变化,那么根据提示,我们看看备份文件,一般备份文件的后缀是.bak

image-20200717110927693

当我们输入index.php.bak时可以下载该文件,下载后打开,得到flag

image-20200717111007209

cookie

image-20200717111232613

抓包看看

image-20200717111309876

那我们就看看cookie.php

image-20200717111344601

提示我们看看响应包,得到flag

image-20200717111438468

disabled_button

image-20200717113546553

看看这个按钮

image-20200717113711469

可以看到这个按钮的作用实际上就是post传递一个auth=flag,那么我们自己传这样一个参数,得到flag

image-20200717113819628

weak_auth

进入后是一个登陆界面,随便输一个用户名密码

image-20200717114325671

说明用户是admin

image-20200717114352984

可以看到这个题就是暴力破解,那么放到burp suite里跑个字典

image-20200717114500113

可以看到密码就是123456

image-20200717114523421

得到flag

simple_php

image-20200717114651376

看php代码说明我们要构造a和b,让a和b的值都满足条件,就可以获得flag

那么首先看a,要a=0为真,a为真,所以a不可能等于0,要想解决这个问题,首先我们要知道php的特性。

由于php为弱类型语言,因此当不同类型的值进行==比较的时候会发生类型转换。正常情况下不同类型的值是不能比较的,php 为了比较进行了数据类型转换。把不同类型的值转换为相同类型后再比较。

具体转换规则可以看这篇文章《彻底解决php判断a==0为真引发的问题-类型转换》,这里不再赘述。

知道了转换规则,那么我们就可以构造了,得到flag

image-20200717115934924

xff_referer

进入后提示如下:

那么我们就在请求包中通过x-forwarded-for伪造ip

image-20200717162612014

注意xff加入的位置,我之前加入到末尾发现页面一直在加载没有响应,我想xff写在请求头中间就好了。

然后发现提示变化:

image-20200717161539728

那么在伪造referer

image-20200717162711288

得到flag

image-20200717162734141

webshell

image-20200717170244887

php的一句话木马,使用中国菜刀连接,中国菜刀可以从这个地方下载,

image-20200717170319974

即可进入服务器

image-20200717170345624

获得flag

image-20200717170404876

当然,如果没有工具,那就手动构造请求post包

一句话木马中的变量是shell,所以我们传的变量就是shell

image-20200717170710704

可以看到返回了当前路径的所有文件,看到了flag.txt

image-20200717170754480

得到flag

command_execution

image-20200717172147730

尝试ping一下本机127.0.0.1

image-20200717172220593

可以看到ping的结果返回到了页面,那么尝试命令注入

命令注入有很多种方法,可以参考这两篇文章:文章1文章2,这里不再赘述

这道题比较简单,没有waf,不需要绕过,我使用 | 进行注入

command 1 | command 2 只执行command2

image-20200717172637290

可以看到执行了ls命令,现在找flag

image-20200717172921373

得到flag

image-20200717172957802

simple_js

image-20200717181134028

随便输一个

image-20200717181148627

看看源码,调试一下js

image-20200717181218694

发现不论输入的密码是什么,最后都会跳到假密码FAUX PASSWORD HAHA

而真密码是初始的pass_enc

image-20200717181342602

那么就把pass的值改为pass_enc,执行一下,注意14行的tab2下标要改成10,因为默认的pass长度为18,而修改后的pass长度为11,所以要修改,否则最后执行的时候p加入的就不是pass的最后一个值了(这个地方坑了我好久)

image-20200717181443038

把获取到的字符串加上题目要求的flag格式即可得到flag


"Imagination will take you everywhere."