docker搭建sql靶场

发布于 2020-07-21  306 次阅读


这几天带实验室集训,被迫在云端搭建靶场......本地靶场直接套源代码就完了,云端靶场还需要手动配置一下数据库,不过问题不大

STEP 1 搭建WEB环境

直接用docker拖一个lamp就行,不记得怎么操作的话可以康康这篇:docker搭建WEB题

这里还是以 tutum/lamp 为例

STEP 2 配置数据库

数据库忘记密码请看这里:mysql忘记密码

如果数据量不大的话,直接手动进入docker中,打开mysql进行配置即可

docker exec -it xxxx /bin/bash
# 交互模式进入容器,xxxx 为容器的ID
mysql -u root -p
# 输入密码进入数据库,没设置密码就直接敲回车

修改数据库密码(可选)

set password for USER @localhost = password('PASSWD');
# USER为用户名,PASSWD为新密码
# 例如: set password for root@localhost = password('6666');

如果上述方法失败,还可以直接修改用户表:

# 先登陆mysql
use mysql;
# 使用mysql数据库
update user set password=password('123') where user='root';
# 更新密码
flush privileges;
# 刷新缓冲区

然后通过sql语句进行表单的创建和增删改查等。

如果数据量很大,直接使用文件进行数据库的导入导出操作:

mysqldump -h localhost -u root -p users > ./output.sql
# 数据库导出,其中localhost是服务器名,users是数据库名,其后可以直接跟表名,output为输出文件

mysql -h localhost -u root -p xxx < ./input.sql --default-character-set=utf8 
# 数据库导入,其中--default-character-set=utf8 用于解决中文乱码

STEP 3 PHP连接数据库

编写 index.php,使后端连接到服务器

这里给一个简单的参考

index.php:

<?php
$con = mysql_connect("localhost","root","xxxx") or die();
// 创建链接,验证服务器,用户名,密码

mysql_select_db("security");
// 使用的数据库

$ID = $_GET['id'];
// 获取URL中的参数"id"

$sql = "select * from users where id=$ID";
echo "sql operations:  ".$sql."<br>";
$res = mysql_query($sql);
while($rows = mysql_fetch_array($res)){
    echo "ID:".$rows['id']."<br>";
    echo "username:".$rows['username']."<br>";
    echo "password:".$rows['password']."<br>";
}
// 交互,找到符合条件的值就输出
mysql_close($con);
// 断开链接
?>

数据库文件直接拖了sql-lab.sql:

-- DROP DATABASE IF EXISTS security;
CREATE database security;
USE security;
CREATE TABLE users
		(
		id int(3) NOT NULL AUTO_INCREMENT,
		username varchar(20) NOT NULL,
		password varchar(20) NOT NULL,
		PRIMARY KEY (id)
		);
CREATE TABLE emails
		(
		id int(3)NOT NULL AUTO_INCREMENT,
		email_id varchar(30) NOT NULL,
		PRIMARY KEY (id)
		);
CREATE TABLE uagents
		(
		id int(3)NOT NULL AUTO_INCREMENT,
		uagent varchar(256) NOT NULL,
		ip_address varchar(35) NOT NULL,
		username varchar(20) NOT NULL,
		PRIMARY KEY (id)
		);
CREATE TABLE referers
		(
		id int(3)NOT NULL AUTO_INCREMENT,
		referer varchar(256) NOT NULL,
		ip_address varchar(35) NOT NULL,
		PRIMARY KEY (id)
		);

INSERT INTO security.users (id, username, password) VALUES ('1', 'Dumb', 'Dumb'), ('2', 'Angelina', 'I-kill-you'), ('3', 'Dummy', 'p@ssword'), ('4', 'secure', 'crappy'), ('5', 'stupid', 'stupidity'), ('6', 'superman', 'genious'), ('7', 'batman', 'mob!le'), ('8', 'admin', 'admin');

INSERT INTO `security`.`emails` (id, email_id) VALUES ('1', 'Dumb@dhakkan.com'), ('2', 'Angel@iloveu.com'), ('3', 'Dummy@dhakkan.local'), ('4', 'secure@dhakkan.local'), ('5', 'stupid@dhakkan.local'), ('6', 'superman@dhakkan.local'), ('7', 'batman@dhakkan.local'), ('8', 'admin@dhakkan.com');

然后访问该地址即可,例如 http://xiabee.cn:7009/?id=1