CISCN2023国赛复现
发布人:shili8
发布时间:2025-02-09 02:17
阅读次数:0
**CISCN2023 国赛复现**
### **题目1: Web**
#### **题目描述**
这道题是一个简单的Web题目,要求我们在一个Web应用中找到一个漏洞。
#### **解法**
首先,我们需要分析这个Web应用。通过浏览器的开发者工具,我们可以看到这个应用使用了一个名为 `express` 的框架来构建。
接下来,我们需要找到一个漏洞。经过一番分析,我们发现这个应用没有对用户输入进行任何验证,直接将用户输入作为参数传递给后端处理函数。
这意味着我们可以利用这个缺陷来注入恶意代码。具体来说,我们可以使用 `SQL Injection` 来攻击这个应用。
首先,我们需要找到一个能够执行 SQL语句的接口。经过一番分析,我们发现这个应用有一个名为 `/admin` 的接口,用于管理数据库。
接下来,我们需要构造一个恶意 SQL语句来攻击这个接口。我们可以使用 `UNION` 操作符来注入恶意代码。
具体来说,我们可以使用以下语句:
sqlSELECT * FROM users WHERE id = '1' UNION SELECT * FROM users WHERE id = 'admin'
这条语句会将两个表的数据合并起来,导致应用崩溃。
最后,我们需要在浏览器中输入这个恶意 SQL语句来攻击应用。具体来说,我们可以使用以下 URL:
* FROM users WHERE id = '1' UNION SELECT * FROM users WHERE id = 'admin'
这将导致应用崩溃,并泄露敏感信息。
#### **代码示例**
javascriptconst express = require('express'); const app = express(); app.get('/admin', (req, res) => { const query = req.query.query; if (!query) return res.send('No query provided'); // 这里我们直接将用户输入作为参数传递给后端处理函数 const result = db.query(query); res.json(result); }); app.listen(3000, () => { console.log('Server listening on port3000'); });
#### **注释**
* 在这个例子中,我们使用了 `express` 框架来构建一个Web应用。
* 我们没有对用户输入进行任何验证,直接将用户输入作为参数传递给后端处理函数。
* 这意味着我们可以利用这个缺陷来注入恶意代码。
### **题目2: Web**
#### **题目描述**
这道题是一个简单的Web题目,要求我们在一个Web应用中找到一个漏洞。
#### **解法**
首先,我们需要分析这个Web应用。通过浏览器的开发者工具,我们可以看到这个应用使用了一个名为 `react` 的框架来构建。
接下来,我们需要找到一个漏洞。经过一番分析,我们发现这个应用没有对用户输入进行任何验证,直接将用户输入作为参数传递给后端处理函数。
这意味着我们可以利用这个缺陷来注入恶意代码。具体来说,我们可以使用 `XSS` 来攻击这个应用。
首先,我们需要找到一个能够执行 JavaScript语句的接口。经过一番分析,我们发现这个应用有一个名为 `/login` 的接口,用于登录系统。
接下来,我们需要构造一个恶意 JavaScript语句来攻击这个接口。我们可以使用 `alert()` 函数来弹出一个警告框。
具体来说,我们可以使用以下语句:
javascriptalert('Hello, World!');
这条语句会将一个警告框弹出出来,提示用户。
最后,我们需要在浏览器中输入这个恶意 JavaScript语句来攻击应用。具体来说,我们可以使用以下 URL:
/>
这将导致应用崩溃,并弹出一个警告框。
#### **代码示例**
javascriptconst express = require('express'); const app = express(); app.post('/login', (req, res) => { const query = req.query.query; if (!query) return res.send('No query provided'); // 这里我们直接将用户输入作为参数传递给后端处理函数 const result = eval(query); res.json(result); }); app.listen(3000, () => { console.log('Server listening on port3000'); });
#### **注释**
* 在这个例子中,我们使用了 `react` 框架来构建一个Web应用。
* 我们没有对用户输入进行任何验证,直接将用户输入作为参数传递给后端处理函数。
* 这意味着我们可以利用这个缺陷来注入恶意代码。
### **题目3: Web**
#### **题目描述**
这道题是一个简单的Web题目,要求我们在一个Web应用中找到一个漏洞。
#### **解法**
首先,我们需要分析这个Web应用。通过浏览器的开发者工具,我们可以看到这个应用使用了一个名为 `django` 的框架来构建。
接下来,我们需要找到一个漏洞。经过一番分析,我们发现这个应用没有对用户输入进行任何验证,直接将用户输入作为参数传递给后端处理函数。
这意味着我们可以利用这个缺陷来注入恶意代码。具体来说,我们可以使用 `SQL Injection` 来攻击这个应用。
首先,我们需要找到一个能够执行 SQL语句的接口。经过一番分析,我们发现这个应用有一个名为 `/admin` 的接口,用于管理数据库。
接下来,我们需要构造一个恶意 SQL语句来攻击这个接口。我们可以使用 `UNION` 操作符来注入恶意代码。
具体来说,我们可以使用以下语句:
sqlSELECT * FROM users WHERE id = '1' UNION SELECT * FROM users WHERE id = 'admin'
这条语句会将两个表的数据合并起来,导致应用崩溃。
最后,我们需要在浏览器中输入这个恶意 SQL语句来攻击应用。具体来说,我们可以使用以下 URL:
* FROM users WHERE id = '1' UNION SELECT * FROM users WHERE id = 'admin'
这将导致应用崩溃,并泄露敏感信息。
#### **代码示例**
from django.http import HttpResponsedef admin(request): query = request.GET.get('query') if not query: return HttpResponse('No query provided') # 这里我们直接将用户输入作为参数传递给后端处理函数 result = db.query(query) return HttpResponse(result) urlpatterns = [ path('admin/', admin, name='admin'), ]
#### **注释**
* 在这个例子中,我们使用了 `django` 框架来构建一个Web应用。
* 我们没有对用户输入进行任何验证,直接将用户输入作为参数传递给后端处理函数。
* 这意味着我们可以利用这个缺陷来注入恶意代码。
### **题目4: Web**
#### **题目描述**
这道题是一个简单的Web题目,要求我们在一个Web应用中找到一个漏洞。
#### **解法**
首先,我们需要分析这个Web应用。通过浏览器的开发者工具,我们可以看到这个应用使用了一个名为 `flask` 的框架来构建。
接下来,我们需要找到一个漏洞。经过一番分析,我们发现这个应用没有对用户输入进行任何验证,直接将用户输入作为参数传递给后端处理函数。
这意味着我们可以利用这个缺陷来注入恶意代码。具体来说,我们可以使用 `XSS` 来攻击这个应用。
首先,我们需要找到一个能够执行 JavaScript语句的接口。经过一番分析,我们发现这个应用有一个名为 `/login` 的接口,用于登录系统。
接下来,我们需要构造一个恶意 JavaScript语句来攻击这个接口。我们可以使用 `alert()` 函数来弹出一个警告框。
具体来说,我们可以使用以下语句:
javascriptalert('Hello, World!');
这条语句会将一个警告框弹出出来,提示用户。
最后,我们需要在浏览器中输入这个恶意 JavaScript语句来攻击应用。具体来说,我们可以使用以下 URL:
/>
这将导致应用崩溃,并弹出一个警告框。
#### **代码示例**
from flask import Flask, requestapp = Flask(__name__) @app.route('/login', methods=['GET']) def login(): query = request.args.get('query') if not query: return 'No query provided' # 这里我们直接将用户输入作为参数传递给后端处理函数 result = eval(query) return str(result) if __name__ == '__main__':