攻防世界--web--新手区

攻防世界–web–新手区

0x01 view_source
题目描述:
X老师让小宁同学查看一个网页的源代码,但小宁同学发现鼠标右键好像不管用了。
解题思路:
进去之后显示FLAG is not here

在这里插入图片描述
然后就按F12查看Elements选项,发现flag
在这里插入图片描述

0x02 get_post
题目描述:
X老师告诉小宁同学HTTP通常使用两种请求方法,你知道是哪两种吗?
知识扩充:
HTTP协议中共定义了八种方法,或者叫“动作”来表明对Request-URI指定的资源的不同操作方式,常用的方法为GET和POST,具体介绍如下所示:
HTTP协议中共定义了八种方法或者叫“动作”来表明对Request-URI指定的资源的不同操作方式,具体介绍如下:

  1. GET:向特定的资源发出请求。
  2. POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的创建和/或已有资源的修改。
  3. OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送’*'的请求来测试服务器的功能性。
  4. HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。
  5. PUT:向指定资源位置上传其最新内容。
  6. DELETE:请求服务器删除Request-URI所标识的资源。
  7. TRACE:回显服务器收到的请求,主要用于测试或诊断。
  8. CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

解题思路:
用Firefox打开题目链接后出现:请用GET方式提交一个名为a,值为1的变量
于是就用Firefox浏览器下安装的hackbar插件
不会使用hackbar的参考这篇文章:https://www.jianshu.com/p/02dcc7348436
然后,就按F12找到hackbar
在这里插入图片描述
接着,Load URL并在URL后加上参数?a=1,点击Execute后得到如下界面:
在这里插入图片描述
最后,点击Post data,并在下方输入b=2,点击Execute,便得到flag
在这里插入图片描述

0x03 robots
题目描述:
X老师上课讲了Robots协议,小宁同学却上课打了瞌睡,赶紧来教教小宁Robots协议是什么吧。
知识扩充:
维基百科的解释如下图所示:
在这里插入图片描述

解题思路:
看完上述关于robots的介绍,我就想在URL的后面加上/robots.txt,结果奇迹再现出如下界面:
在这里插入图片描述
接着,我就准备把f1ag_1s_h3re.php再加到URL中,结果发现不行,于是就删除了/robots.txt,然后再在URL的后面加上f1ag_1s_h3re.php,最终出现了flag,哈哈,感觉人生达到了巅峰,感觉人生达到了高潮!!!
在这里插入图片描述

0x04 backup
题目描述:
X老师忘记删除备份文件,他派小宁同学去把备份文件找出来,一起来帮小宁同学吧!
知识扩充:
有关备份文件的可以利用的情况主要有3种

  1. 代码编辑器产生的备份文件

  2. 没有删除版本控制系统(VCS)产生的备份文件

  3. 没有删除开发人员手动备份的文件
    常见备份文件的后缀如下所示:

     .save
     .rar
     .zip
     .7z
     .tar.gz
     .bak
     .swp
     .txt
     .html
     .linux中可能以" ~ " 结尾
    

解题思路:
本人水平不高,只有一个一个地试,最终发现.bak为最终答案
在这里插入图片描述
下载下来文件之后用记事本打开即可得flag
在这里插入图片描述

0x05 cookie
题目描述:
X老师告诉小宁他在cookie里放了些东西,小宁疑惑地想:‘这是夹心饼干的意思吗?’
知识扩充:
cookie在维基百科的定义如下图所示:
在这里插入图片描述
解题思路:
打开题目链接显示如下界面:
在这里插入图片描述
于是便开始用burpsuite抓包分析,找到cookie:look-here=cookie.php在这里插入图片描述
然后就开始在URL后加上/cookie.php,出现如下提示界面:
在这里插入图片描述
我就不信搞不定你了,再用burpsuite抓包找http response,小样,最终还是让我发现了flag!!!
在这里插入图片描述

0x06 disabled_button
题目描述:
X老师今天上课讲了前端知识,然后给了大家一个不能按的按钮,小宁惊奇地发现这个按钮按不下去,到底怎么才能按下去呢?
知识扩充:
基本前端知识HTML,CSS,JavaScript,抽时间自己学去吧,多学点东西反正没坏处
解题思路:
打开题目链接显示出如下界面:
在这里插入图片描述
按钮不能按,估计就是什么属性的问题,于是就又按F12进入开发者工具,大佬们的博客都是对disabled这个属性进行处理,有两种方法:
在这里插入图片描述
方法一:
删除代码:disabled=""
然后点击网页上的flag图标就可以得到flag了
方法二:
将disabled=""改为disabled=“false”
然后点击网页上的flag图标就可以得到flag了
在这里插入图片描述

0x07 simple_js
题目描述:
小宁发现了一个网页,但却一直输不对密码。(Flag格式为 Cyberpeace{xxxxxxxxx} )
知识扩充:
JavaScript,python
解题思路:
打开题目链接显示出如下界面:
在这里插入图片描述
首先,随便输入之后出现如下界面:
在这里插入图片描述
接着,查看一下网页的源代码
在这里插入图片描述
发现了pass变量,写一个python函数将pass变量转化为字符,结果为FAUX PASSWORD HAHA
在这里插入图片描述
然后,看到fromCharCode,八成这与flag有关系,尝试其转换为十进制,并转换为ASCII码相对应的字符
在这里插入图片描述
在这里插入图片描述
最后,发现了flag

0x08 xff_referer
题目描述:
X老师告诉小宁其实xff和referer是可以伪造的。
知识扩充:
XFF和Referer的介绍如下所示:
在这里插入图片描述
在这里插入图片描述
解题思路:
打开题目链接显示ip地址必须为123.123.123.123出如下界面:
在这里插入图片描述
首先,便用burpsuite抓包并添加如下条目:

X-Forwarded-For: 123.123.123.123

在这里插入图片描述

在这里插入图片描述

接着,将其发到Repeater中又发现了新要求
在这里插入图片描述
于是乎,便接着填加下面的条目

Referer:www.google.com

在这里插入图片描述
最后,发现了flag
在这里插入图片描述

0x09 weak_auth
题目描述:
小宁写了一个登陆验证页面,随手就设了一个密码。
知识扩充:
弱口令,burpsuite的使用,字典破解
解题思路:
打开题目链接显示一个验证登录的界面:
在这里插入图片描述
首先,首先随便输入一些东西,发现了username必须为admin
在这里插入图片描述
然后,我这两天在研究弱口令的题目,所以就往这个方向来试,利用burpsuite的Intruder来试试吧
在这里插入图片描述
接着,再将其发到Intuder中并点击Clear§和Add§,并设置如下参数进行暴力破解
在这里插入图片描述
在这里插入图片描述

最后,找到了登录密码123456,利用username为admin和password为123456登录成功获得flag

在这里插入图片描述
在这里插入图片描述
最后,发现了flag

0x10 webshell
题目描述:
小宁百度了php一句话,觉着很有意思,并且把它放在index.php里。
知识扩充:
中国菜刀(China Chopper)历史背景(个人觉得挺励志的故事):
作者是一个退伍军人,生长在一个贫穷的农村,据说初中也没读完,英语更是不咋地,但他却自学掌握了C++/J2ME/PHP/JSP/ASP.NET(C#,VB,C++,delphi,J#)/ASP/MySQL/MsSQL/Oracle/Informix/PostgreSQL/DB2/Sybase/Access/UNIX/LINUX/WIN/SEO/Flash(AS)/PhotoShop/Freehand

等等,当初在六七年前台湾闹独立的时候,他在国民党和民进党的网站上留下了“只有一个中国”的黑页,一举成名,真是十分硬气的一个人物,让我无限钦佩。
解题思路:
打开题目链接显示一个挑衅你的界面,瞧不起谁啊,看我用中国菜刀搞定你:
在这里插入图片描述
首先,下载中国菜刀(China Chopper),官网链接如下所示:
http://www.zhongguocaidao.net/
然后,打开中国菜刀,并对其做出如下配置后添加:
在这里插入图片描述
接着,发现了flag.txt,索性在URL后面继续添加

/flag.txt

在这里插入图片描述

最后,成功获得了flag

0x11 command_execution
题目描述:
小宁写了个ping功能,但没有写waf,X老师告诉她这是非常危险的,你知道为什么吗。
知识扩充:
对于看到ping或者ping命令却没有弄waf时就要想到命令注入。
具体注入方法:
看到ping命令就可以利用截断来执行新的命令。
首先测试所有的截断符号:

‘$’
‘;’
‘|’
‘-’
‘(’
‘)’
‘反引号’
‘||’
‘&&’
‘&’
‘}’
‘{’
'%0a’可以当作空格来用;

利用截断符号配合普通命令简单问题基本就出来;

解题思路:
打开题目链接显示ping功能界面:
在这里插入图片描述
首先,ping一下自己主机127.0.0.1,发现能ping通
在这里插入图片描述
然后,尝试命令拼接

127.0.0.1 && ls

在这里插入图片描述

接着,根据大佬的思路找到所以的txt文件并回显

127.0.0.1 &&find / -name "*.txt"

在这里插入图片描述

最后,利用下面命令查看flag.txt的内容,找到了flag

127.0.0.1 && cat /home/flag.txt

在这里插入图片描述

0x12 simple_php
题目描述:
小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。
知识扩充:
php代码审计
1、php弱類型之“”與“=”

<?php
$a == $b ;
$a === $b ;
?>

== 在進行比較的時候,會先將字符串類型轉化成相同,再比較

如果一個數值和字符串進行比較的時候,會將字符串轉換成數值

=== 在進行比較的時候,會先判斷兩種字符串的類型是否相等,再比較

<?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轉化成數值,強制轉化,由於admin是字符串,轉化的結果是0自然和0相等;

“1admin”==1 比較的時候會將1admin轉化成數值,結果爲1;

而“admin1“==1 卻等於錯誤,也就是"admin1"被轉化成了0;

“0e123456”=="0e456789"相互比較的時候,會將0e這類字符串識別爲科學技術法的數字,0的無論多少次方都是零,所以相等。

所以題目中,

if($a==0 and $a)

若滿足,則需向上面例子中的

var_dump("admin"==0);  //true
var_dump("1admin"==1); //true

相類似,故我選擇了

a=0a

也可以有其他的構造方法。

2、is_numeric() 函數
is_numeric() 函數用於檢測變量是否爲數字或數字字符串。

<?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 是數字嗎? ]

即:

若變量爲數字或數字字符串,則if()語句爲真。

題目中,

if(is_numeric($b)){
    exit();
}

當b爲數字或數字字符串,則執行exit()

當b不爲數字或數字字符串,則執行下一步。

爲了得到flag2,則b應不爲數字或數字字符串。

3、%00截斷
%00是空格的意思

具有截斷作用

爲使b不爲數字或數字字符串,且b>1234

故使用%00的截斷

即:

b=12345%00

上述知识扩充转载于台湾同胞的台部落:
https://www.twblogs.net/a/5d207157bd9eee1ede06470f

解题思路:
打开题目链接显示出php代码,这肯定得去审计:
在这里插入图片描述
首先,以GET方式获得两个参数a和b,如果a和b满足一定条件,则打印flag1和flag2,猜测将flag1和flag2拼接就能够得到完整flag
接下来看代码

if($a==0 and $a){ 
    echo $flag1; 
} 

意图也很明显,a的值要既是0,又不是0,利用php的强弱类型,方式很多,我选下面的一种

a=0e10

然后,另一段关于b的代码

if(is_numeric($b)){ 
    exit(); 
} 
if($b>1234){ 
    echo $flag2; 
} 

要求的b不能是数字,但又必须大于1234,利用如下类型绕过
b=12345a

综合上述,得出URL为?a=0e10&b=12345a

最后,在地址栏的后面加上上面的URL得出flag
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值