mirror of
https://github.com/Li4n0/revsuit.git
synced 2026-09-26 08:31:52 +08:00
feat: complete basic functions
Support http,dns and mysql connection. Support custom http, dns response. Support dns rebinding. Support mysql load local files and jdbc deserialize exploit.
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
<template>
|
||||
<div>
|
||||
<a-modal
|
||||
title="Auth with token"
|
||||
:visible="visible"
|
||||
:confirm-loading="confirmLoading"
|
||||
@cancel="cancel"
|
||||
@ok="auth"
|
||||
>
|
||||
<a-input v-model.lazy="token" placeholder="Your token"/>
|
||||
</a-modal>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import {store} from "@/main";
|
||||
import {ping} from "@/api/ping"
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
confirmLoading: false,
|
||||
token: localStorage.getItem("token")
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
visible: function () {
|
||||
return !store.authed
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
token: function (val) {
|
||||
localStorage.setItem("token", val)
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
auth() {
|
||||
this.confirmLoading = true;
|
||||
ping().then(() => {
|
||||
store.authed = true;
|
||||
this.confirmLoading = false;
|
||||
}).catch(e => {
|
||||
if (e.response.status === 403) {
|
||||
this.$notification.error({
|
||||
message: 'Wrong token',
|
||||
description:
|
||||
'Your token is wrong, please check your server config file.',
|
||||
style: {
|
||||
width: '600px',
|
||||
marginLeft: `${335 - 600}px`,
|
||||
},
|
||||
duration: 2.5
|
||||
});
|
||||
}
|
||||
this.confirmLoading = false;
|
||||
})
|
||||
|
||||
},
|
||||
cancel() {
|
||||
store.authed = true;
|
||||
}
|
||||
},
|
||||
};
|
||||
</script>
|
||||
@@ -0,0 +1,103 @@
|
||||
<template>
|
||||
<div>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="24">
|
||||
<a-form-model-item label="Name" :rules="rules.name" prop="name">
|
||||
<a-input v-model="form.name"
|
||||
placeholder="Please enter rule name"
|
||||
:readOnly="readOnly"
|
||||
/>
|
||||
</a-form-model-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="24">
|
||||
<a-form-model-item :rules="rules.flagFormat" prop="flag_format">
|
||||
<span slot="label">
|
||||
Flag Format
|
||||
<a-tooltip title="1. Only when the request contains content that satisfies the flag format, the request will be captured.
|
||||
2. Please use regular expression syntax.
|
||||
3. The character '*' means to capture all requests.
|
||||
4. Advanced usage: When the format uses grouping, the platform will only notify the user or push to the client when the first group appears for the first time.">
|
||||
<a-icon type="question-circle-o"/>
|
||||
</a-tooltip>
|
||||
</span>
|
||||
<a-input
|
||||
v-model="form.flag_format"
|
||||
style="width: 100%"
|
||||
placeholder="please enter flag format"
|
||||
:readOnly="readOnly"
|
||||
/>
|
||||
</a-form-model-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="24">
|
||||
<a-form-model-item prop="rank">
|
||||
<span slot="label">
|
||||
Rank
|
||||
<a-tooltip title="When request match multiple rules, high-rank rules will be matched first">
|
||||
<a-icon type="question-circle-o"/>
|
||||
</a-tooltip>
|
||||
</span>
|
||||
<a-input-number style="width: 100%"
|
||||
v-model="form.rank"
|
||||
v-decorator="['rank']"
|
||||
:disabled="readOnly"
|
||||
placeholder="0"
|
||||
>
|
||||
</a-input-number>
|
||||
</a-form-model-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="16">
|
||||
<a-col :span="12">
|
||||
<a-form-model-item>
|
||||
<div class="ant-form-item-label">
|
||||
<label for="push-to-client">Push to Client
|
||||
<a-tooltip placement="topLeft" title="Whether push to client when capture flag with this rule.">
|
||||
<a-icon type="question-circle"/>
|
||||
</a-tooltip>
|
||||
</label>
|
||||
</div>
|
||||
<a-switch v-model="form.push_to_client" id="push-to-client" :disabled="readOnly"/>
|
||||
</a-form-model-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-form-model-item>
|
||||
<div class="ant-form-item-label">
|
||||
<label for="notice">Notice
|
||||
<a-tooltip placement="topLeft" title="Whether notice with bot when capture flag with this rule.">
|
||||
<a-icon type="question-circle"/>
|
||||
</a-tooltip>
|
||||
</label>
|
||||
</div>
|
||||
<a-switch v-model="form.notice" id="notice" :disabled="readOnly"/>
|
||||
</a-form-model-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "BasicRule",
|
||||
data() {
|
||||
return {
|
||||
rules: {
|
||||
name: [
|
||||
{required: true, message: 'Please input rule name', trigger: 'blur'},
|
||||
],
|
||||
flagFormat: [
|
||||
{required: true, message: 'Please input flag format', trigger: 'blur'},
|
||||
]
|
||||
},
|
||||
}
|
||||
},
|
||||
props: ['form', 'readOnly']
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
Reference in New Issue
Block a user