攻防世界Web刷题记录(新手区)

1.ViewSource

题如其名

Fn + F12

2.get post

3.robots

robots.txt是搜索引擎中访问网站的时候要查看的第一个文件。当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,所有的搜索蜘蛛将能够访问网站上所有没有被口令保护的页面。

于是扫描根目录:

4.backup

打开:

常见的备份文件后缀名有: .git .svn .swp .~ .bak .bash_history .bkf

如111.200.241.244:33798/index.php.bak

5.Cookie

Cookie是当主机访问Web服务器时,由 Web 服务器创建的,将信息存储在用户计算机上的文件。一般网络用户习惯用其复数形式 Cookies,指某些网站为了辨别用户身份、进行 Session 跟踪而存储在用户本地终端上的数据,而这些数据通常会经过加密处理。

那么cookie在哪里?

访问http://111.198.29.45:47911/cookie.php,提示查看http响应包,在网络一栏,可看到访问cookie.php的数据包

点击查看数据包,在消息头内可发现flag

6.disabled_button

按钮按不下去,查看源码

input标签有个disable属性

disabled 属性规定应该禁用的 <input>元素。被禁用的 input 元素是无法使用和无法点击的。

删除源码中的disable属性,按钮即可点击,然后得到Flag。

7.weak_auth

小宁写了一个登陆验证页面,随手就设了一个密码,猜测用户名为admin,密码为123456

得到flag

Burpsuite解法:

随便输入密码,用bp截下发送过去的数据包

发送到Intruder,设定payload

结果:

Burpsuite四种攻击类型:

一 、Sniper模式

  Sniper模式使用一组payload集合,它一次只使用一个payload位置,假设你标记了两个位置“A”和“B”,payload值为“1”和“2”,那么它攻击会形成以下组合(除原始数据外):

攻击序列 位置A 位置B
1 1 no replace
2 2 no replace
3 no replace 1
4 no replace 2

  这种模式主要适用于:竞争条件测试(选择Null payloads),密码、验证码暴力破解,重放攻击等场景

二、Battering ram模式

  Battering ram模式与狙击手模式类似的地方是,同样只使用一个payload集合,不同的地方在于每次攻击都是替换所有payload标记位置,而狙击手模式每次只能替换一个payload标记位置。

攻击序列 位置1 位置2
1 payload1 payload1
2 payload2 payload2

  这种模式主要适用于:撞

三、Pitchfork模式

  草叉模式允许使用多组payload组合,在每个标记位置上遍历所有payload组合,假设有两个位置“A”和“B”,payload组合1的值为“1”和“2”,payload组合2的值为“3”和“4”,则攻击模式如下:

攻击序列 位置A 位置B
1 payload1 payload3
2 payload2 payload4

  这种模式主要适用于:恶意注册

四、Cluster bomb模式

  集束炸弹模式跟草叉模式不同的地方在于,集束炸弹模式会对payload组进行笛卡尔积,还是上面的例子,如果用集束炸弹模式进行攻击,则除baseline请求外,会有四次请求:

攻击序列 位置A 位置B
1 payload1 payload3
2 payload1 payload4
3 payload2 payload3
4 payload2 payload4

8.simple_php

考点:

“php" == 0结果为TRUE,故“php” == 0 and "php"为TRUE,此处php可为其他任意字符串

第二处考点类似,填入b=1235a即可绕过

is_numeric() 函数用于检测变量是否为数字或数字字符串。

php弱类型比较小结

php中有两种比较的符号 == 与 ===

1 <?php
2 $a = $b ;
3 $a===$b ;
4 ?>

=== 在进行比较的时候,会先判断两种字符串的类型是否相等,再比较

== 在进行比较的时候,会先将字符串类型转化成相同,再比较

如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换成数值并且比较按照数值来进行

这里明确了说如果一个数值和字符串进行比较的时候,会将字符串转换成数值

1 <?php
2 var_dump("admin"==0); //true
3 var_dump("1admin"==1); //true
4 var_dump("admin1"==1) //false
5 var_dump("admin1"==0) //true
6 var_dump("0e123456"=="0e4456789"); //true
7 ?> //上述代码可自行测试
1 观察上述代码,"admin"==0 比较的时候,会将admin转化成数值,强制转化,由于admin是字符串,转化的结果是0自然和0相等
2 "1admin"==1 比较的时候会将1admin转化成数值,结果为1,而“admin1“==1 却等于错误,也就是"admin1"被转化成了0,为什么呢?见下
3 "0e123456"=="0e456789"相互比较的时候,会将0e这类字符串识别为科学技术法的数字,0的无论多少次方都是零,所以相等

对于上述的问题我查了php手册

当一个字符串被当作一个数值来取值,其结果和类型如下:如果该字符串没有包含'.','e','E'并且其数值值在整形的范围之内
该字符串被当作int来取值,其他所有情况下都被作为float来取值,该字符串的开始部分决定了它的值,如果该字符串以合法的数值开始,则使用该数值,否则其值为0。
1 <?php
2 $test=1 + "10.5"; // $test=11.5(float)
3 $test=1+"-1.3e3"; //$test=-1299(float)
4 $test=1+"bob-1.3e3";//$test=1(int)
5 $test=1+"2admin";//$test=3(int)
6 $test=1+"admin2";//$test=1(int)
7 ?>

所以就解释了"admin1"==1 =>False 的原因

9.xff_referer

点开看到:

XFF漏洞也称为IP欺骗。

有些服务器通过XFF头判断是否是本地服务器,当判断为本地服务器时,才能访问相关内容。

如:

X-Forwarded-For: 127.0.0.1
X-Forwarded-For: 192.168.1.1

故:修改XFF头的信息,即可绕过服务器的过滤。

右键发送到repeater,并在包尾添加X-Forwarded-For: 123.123.123.123,发送

收到回应:必须来自https://www.google.com

在包尾添加:Referer: https://www.google.com

得到flag:

10.Webshell

前情提要:一句话木马工作原理

<?php @eval($_POST['shell']);?>

这是php的一句话后门中最普遍的一种。它的工作原理是:

首先存在一个名为shell的变量,shell的取值为HTTP的POST方式。Web服务器对shell取值以后,然后通过eval()函数执行shell里面的内容。

实例:

<?php @eval($_POST['shell']);?>

将以上代码写入webshell.php文件中然后放在站点目录下通过浏览器访问,以POST方式传入shell=phpinfo();

解法1:使用HackBar

POST:shell=system("find / -name 'flag*'");//在系统中查找名字中带有flag的文件并显示路径

继续POST:shell= system(“cat /var/www/html/flag.txt”);

得到flag:

解法2:使用Burpsuite

同理,拦截到页面请求,将其转到Repeater,并在最下方加入请求参数:shell = system(“find / -name ‘flag*’”);

查看Response,最下方有目标文件路径:

修改Repeater中的请求参数为:shell= system(“cat /var/www/html/flag.txt”);

查看Respond中的flag:

解法3:使用蚁剑

如图所示

连接后即可看到flag

11.command_execution

本题考的是命令执行漏洞方面的知识。

首先,我们要知道命令执行漏洞是什么:

当应用需要调用一些外部程序去处理内容的情况下,就会用到一些执行系统命令的函数。如PHP中的system,exec,shell_exec等,当用户可以控制命令执行函数中的参数时,将可注入恶意系统命令到正常命令中,造成命令执行攻击。

比如题目中,直接把用户输入的参数不经过过滤直接放在ping命令之后,而恶意攻击者可以在输入的参数中用&&截断,而执行下一个恶意命令

常见的连接符有:

常见连接符 举例 效果
; A;B 先执行A,再执行B
& A&B 简单拼接,A B之间无制约关系
| A|B 显示B的执行结果
&& A&&B A执行成功,然后才会执行B
|| A||B A执行失败,然后才会执行B

ping本机,有回显:

再输入:127.0.0.1 && find / -name "flag*"

相当于ping -c 127.0.0.1 && find / -name "flag*";在成功执行ping 127.0.0.1命令后,执行在本地找flag的指令

于是cat flag:

输入127.0.0.1 && cat "/home/flag.txt",得到flag:

12.simple_js

输错密码,检查元素,发现js代码

function dechiffre(pass_enc){
var pass = "70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65";//FAUX PASSWORD HAHA
var tab = pass_enc.split(',');//split() 方法用于把一个字符串分割成字符串数组。
var tab2 = pass.split(',');
var i,j,k,l=0,m,n,o,p = "";
i = 0;
j = tab.length;
k = j + (l) + (n=0);
n = tab2.length;
for(i = (o=0); i < (k = j = n); i++ ){
o = tab[i-l];
p += String.fromCharCode((o = tab2[i]));
if(i == 5)
break;
}
for(i = (o=0); i < (k = j = n); i++ ){
o = tab[i-l];
if(i > 5 && i < k-1)
p += String.fromCharCode((o = tab2[i]));
}
p += String.fromCharCode(tab2[17]);
pass = p;
return pass;
}
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")); h = window.prompt('Enter password');
alert( dechiffre(h) );

发现无论输入什么密码,都会提示FAUX PASSWORD HAHA

由于String["fromCharCode"](xxx)String.fromCharCode(xxx)是一样的

所以那段话就是将一串16进制转成ascii码再转成字符,即得到flag

攻防世界Web刷题记录(新手区)的更多相关文章

  1. 攻防世界Web刷题记录(进阶区)

    攻防世界Web刷题记录(进阶区) 1.baby_web 发现去掉URLhttp://111.200.241.244:51461/1.php后面的1.php,还是会跳转到http://111.200.2 ...

  2. 攻防世界web进阶题—unfinish

    攻防世界web进阶题-unfinish 1.看一下题目提示SQL 2.打开题目看一下源码,没有问题 3.查一下网站的组成:php+Apache/2.4.7+Ubuntu 4.扫一下目录,扫到一个注册页 ...

  3. 攻防世界web进阶题—bug

    攻防世界web进阶题-bug 1.打开题目看一下源码,没有问题 2.扫一下目录,没有问题 3.查一下网站的组成:php+Apache+Ubuntu 只有登录界面 这里可以可以想到:爆破.万能密码.进行 ...

  4. web刷题记录 极客大挑战2019Knife upload buy a flag

    极客2019Knife webshell就是以asp.php.jsp或者cgi等网页文件形式存在的一种代码执行环境,主要用于网站管理.服务器管理.权限管理等操作.使用方法简单,只需上传一个代码文件,通 ...

  5. BUGKU web刷题记录

    web1 直接F12查看源码,得到flag. web2 直接输入验证码答案,长度被限制,修改可输入长度,提交后得到flag. web3 $what=$_GET['what']; echo $what; ...

  6. 攻防世界web新手区

    攻防世界web新手区 第一题view_source 第二题get_post 第三题robots 第四题Backup 第五题cookie 第六题disabled_button 第七题simple_js ...

  7. 攻防世界Web区部分题解

    攻防世界Web区部分题解   前言:PHP序列化就是把代码中所有的 对象 , 类 , 数组 , 变量 , 匿名函数等全部转换为一个字符串 , 提供给用户传输和存储 . 而反序列化就是把字符串重新转换为 ...

  8. 攻防世界 WEB 高手进阶区 TokyoWesterns CTF shrine Writeup

    攻防世界 WEB 高手进阶区 TokyoWesterns CTF shrine Writeup 题目介绍 题目考点 模板注入 Writeup 进入题目 import flask import os a ...

  9. 攻防世界 WEB 高手进阶区 NSCTF web2 Writeup

    攻防世界 WEB 高手进阶区 NSCTF web2 Writeup 题目介绍 题目考点 php基本函数语法 加密解密函数 base64_decode().str_rot13() 字符串反转函数 str ...

随机推荐

  1. WPF 基础 - MultiBinding

    MultiBinding 与 Binding 一样继承自 BindingBase,因此可以使用 Binding 的地方都可以使用 MultiBinding. namespace System.Wind ...

  2. java基础:变量、常量与作用域

    变量就是可以变化的量,每个变量都必须声明其类型,Java 变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域.作用域 类变量 实例变量 局部变量常量初始化后不能在改变值,不会变动的值,它 ...

  3. centos命令上传

    首先安装 lrzsz # yum -y install lrzsz 运行 rz 命令: 在弹出的窗口选择需要上传的文件,文件会被上传至对应的目录下 运行 sz file.name 在弹出的窗口选择保存 ...

  4. 基金 A 类和 C 类、ETF、LOF、QDII 到底是啥?

    ETF 对于初入股市的新手来说,买了一只公司股票容易,想买一个行业的股票就不是很容易了. 比如你要懂得行业里都有谁,每个公司分配多少钱,最主要股票交易最少要交易 1 手也就是 100 股,要是想配置一 ...

  5. P1085_不高兴的津津(JAVA语言)

    package 顺序与分支; /* * 题目描述 津津上初中了.妈妈认为津津应该更加用功学习,所以津津除了上学之外, 还要参加妈妈为她报名的各科复习班.另外每周妈妈还会送她去学习朗诵.舞蹈和钢琴. 但 ...

  6. github文件快速下载

    目录 一,提升加载速度 二,提升下载速度 只是想快速下载文件的直接看第二部分. github加载速度慢究其原因还是伟大的墙的存在.我们需要赞美墙,但就算墙很伟大,问题还是要解决的. 有问题就解决问题, ...

  7. CVPR2021| 行人搜索中的第一个anchor-free模型:AlignPS

    论文地址:https://arxiv.org/abs/2103.11617 代码地址:https://github.com/daodaofr/AlignPS 前言: 本文针对anchor-free模型 ...

  8. 锋利的NodeJS之NodeJS多线程

    最近刚好有朋友在问Node.js多线程的问题,我总结了一下,可以考虑使用源码包里面的worker_threads或者第三方的模块来实现. 首先明确一下多线程在Node.js中的概念,然后在聊聊work ...

  9. Recoil 中多级数据联动及数据重置的合理做法

    前情回顾 书接上回,前面引出了在数据存在级联的情况下,各下拉框之间的默认值及值变化的处理.简单回顾一下: 场景是: 地域下拉决定可选的可用区 默认选中第一个地域,通过设置 atom 的 default ...

  10. 如何讲一个网页转换为jpg?(图片!)

    不需要安装插件!!! 打开网页,打开开发者工具 快捷键: ctrl+shift+p输入>full即可自动下载!