五分钟制作sql注入靶场

这篇具有很好参考价值的文章主要介绍了五分钟制作sql注入靶场。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

接触安全也快两个月了,学了很多安全的知识,也接触到了渗透测试,前面学习了sql注入和XSS漏洞,听郭老师说可以尝试自己搭建一个靶场,所以开始制作自己靶场!

目录

一、数据库

文件db-creds.inc

接下来创建数据库

连接数据库

二、前端

三、php

四、第二个页面

五、效果展示


一、数据库

文件db-creds.inc

<?php
$dbuser ='root';
$dbpass ='root';
$dbname ="Chen_D";
$host = '127.0.0.1';
?>

接下来创建数据库

文件setup-db.php

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>配置数据库</title>
</head>

<body bgcolor="#000000">

<div style=" margin-top:20px;color:#03C631; font-size:24px; text-align:center"> 
欢迎来战&nbsp;&nbsp;&nbsp;
<font color="#03C631"> 小黑客 </font>
<br>
</div>

<div style=" margin-top:10px;color:#FFF; font-size:23px; text-align:center">
<font size="3" color="#03C631">
正在配置数据库
<br><br> 


<?php
include("../sql-connect/db-creds.inc");
$con = mysql_connect($host,$dbuser,$dbpass);
if (!$con)
  {
  die('数据库连接失败 ' . mysql_error());
  }


	$sql="DROP DATABASE IF EXISTS Chen_D";
	if (mysql_query($sql))
		{echo "[*]...................Chen_D数据库存在,正在删除"; echo "<br><br>\n";}
	else 
		{echo "[*]...................数据库操作失败: " . mysql_error(); echo "<br><br>\n";}


	$sql="CREATE database `Chen_D` CHARACTER SET `gbk` ";
	if (mysql_query($sql))
		{echo "[*]...................成功创建Chen_D数据库";echo "<br><br>\n";}
	else 
		{echo "[*]...................数据库创建失败 " . mysql_error();echo "<br><br>\n";}

//creating table users
$sql="CREATE TABLE Chen_D.users (id int(3) NOT NULL AUTO_INCREMENT, username varchar(20) NOT NULL, password varchar(20) NOT NULL, PRIMARY KEY (id))";
	if (mysql_query($sql))
		{echo "[*]...................成功创建表users";echo "<br><br>\n";}
	else 
		{echo "[*]...................创建表失败 " . mysql_error();echo "<br><br>\n";}


//creating table emails
$sql="CREATE TABLE Chen_D.email
		(
		id int(3)NOT NULL AUTO_INCREMENT,
		email varchar(30) NOT NULL,
		PRIMARY KEY (id)
		)";
	if (mysql_query($sql))
		{echo "[*]...................成功创建表email"; echo "<br><br>\n";}
	else 
		{echo "[*]...................创建表失败 " . mysql_error();echo "<br><br>\n";}

//inserting data
$sql="INSERT INTO Chen_D.users (id, username, password) VALUES ('1', 'admin', 'admin')";
	if (mysql_query($sql))
		{echo "[*]...................插入数据成功";echo "<br><br>\n";}
	else 
		{echo "[*]...................插入数据失败 " . mysql_error();echo "<br><br>\n";}
$sql="INSERT INTO `Chen_D`.`email` (id, email) VALUES ('1', 'ZmxhZ3tDaGVuX0R2ZXJ5c2h1YWl9')";
	if (mysql_query($sql))
		{echo "[*]...................插入数据成功";echo "<br><br>\n";}
	else 
		{echo "[*]...................插入数据失败 " . mysql_error();echo "<br><br>\n";}

?>

</font>
</div>
</body>
</html>

就是动态建立数据库和插入内容啦

运行效果

sql注入靶场,渗透测试,SQL注入,安全,web安全,sql

看过sql-labs源码的同学可以看出来我是直接改的它的源代码,不过这个自己写难度也不算大

连接数据库

<?php

//including the Mysql connect parameters.
include("../sql-connect/db-creds.inc");
@error_reporting(0);
@$con = mysql_connect($host,$dbuser,$dbpass);
// Check connection
if (!$con)
{
    echo "Failed to connect to MySQL: " . mysql_error();
}


    @mysql_select_db($dbname,$con) or die ( "Unable to connect to the database: $dbname");

$sql_connect = "SQL Connect included";

?>

这个就直接照搬了,没有改的必要,数据库到此就部署完毕了

二、前端

<!DOCTYPE html>
<html>
<head>
	<title>登录!</title>
		<meta charset="utf-8">
		<link href="css/style.css" rel='stylesheet' type='text/css' />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<script type="application/x-javascript"> addEventListener("load", function() { setTimeout(hideURLbar, 0); }, false); function hideURLbar(){ window.scrollTo(0,1); } </script>
</head>
<body>
	 <!-----start-main---->
	 <div class="main">
		<div class="login-form">
			<h1>我猜你不知道密码</h1>
					<div class="head">
						<img src="images/user.png" alt=""/>
					</div>
				<form>
						<input type="text" name="uname" class="text" value="USERNAME">
						<input type="password" name="passwd" value="Password">
						<div class="submit">
							<input type="submit" value="LOGIN" >
					</div>
					<p style="font-size:15px;color:red;display: none;" id="error" >账号或密码错误</p>
					<p><a href="#">忘记密码了吧</a></p>
				</form>
			</div>
		</div>

sql注入靶场,渗透测试,SQL注入,安全,web安全,sql

三、php

<?php
include("../sql-connect/sql-connect.php");
error_reporting(0);
if(isset($_GET['uname']) && isset($_GET['passwd']))
{
	$uname = $_GET['uname'];
	$passwd =$_GET['passwd'];

	$sql="SELECT  users.username, users.password FROM users WHERE users.username='$uname' and users.password='$passwd' ORDER BY users.id DESC LIMIT 0,1";
	$result1 = mysql_query($sql);
	$row1 = mysql_fetch_array($result1);
		if($row1)
			{
				session_start();
				$_SESSION['flag']="bGVzc18x";
				echo '<script>alert("登陆成功")</script>';
				echo '<meta http-equiv="refresh" content="0; URL=\'email.php\'" />';
				$sql="Update `Chen_D`.`email` set email='ZmxhZ3toaWFzdWRoaWF1c2R9' where id=1";
				mysql_query($sql);

			}
		else
			{
			echo "</br>";			
			echo "</br>";
			echo "</br>";			
			echo "</br>";
			echo "</br>";			
			echo "</br>";
			echo "</br>";			
			echo "</br>";
			echo '<font color= "#0000ff" font size="3">';			
			echo "<script>document.getElementById('error').style.display=''</script>";
			print_r(mysql_error());
			echo "</br>";			
			echo "</br>";
			echo "</font>";  
			}

	}

?>

 其实没啥内容,就是简单的连接数据库,查询密码,因为要跳转网页,另一个页面就是flag所以要加个session,因为数据库的原因这里插入自己专属的flag每一关都不同,这里因为是第一关也不用写防注入的代码

四、第二个页面

第二个页面是用来拿flag的

sql注入靶场,渗透测试,SQL注入,安全,web安全,sql

base64 加密

完整的email代码

<!DOCTYPE html>
<html>
<head>
	<title>登录!</title>
		<meta charset="utf-8">
		<link href="css/style.css" rel='stylesheet' type='text/css' />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<script type="application/x-javascript"> addEventListener("load", function() { setTimeout(hideURLbar, 0); }, false); function hideURLbar(){ window.scrollTo(0,1); } </script>
</head>
<body>
<?php
include("../sql-connect/sql-connect.php");
session_start();
if(!isset($_SESSION['flag']) or $_SESSION['flag']!='bGVzc18x')
	{echo "<script>document.location='index.php'</script>";}
	
	$sql="SELECT email.email FROM email WHERE id='1'";
	$result1 = mysql_query($sql);
	$row = mysql_fetch_array($result1);
		if($row)
			{
				echo '<div style=" margin-top:10px;color:#FFF; font-size:23px; text-align:center">';
				echo "<font size='5' color= '#7923E9'>";
  				echo '你的邮箱是:'. $row['email'];
  				echo '<br>小黑客你知道账号和密码吗';
  				echo"</font></div>";
  				session_destroy();
  							}
		else
			{
			echo'<h1>出错了</h1>';
			}



?>
</body>
</html>

五、效果展示

sql注入靶场,渗透测试,SQL注入,安全,web安全,sql

sql注入靶场,渗透测试,SQL注入,安全,web安全,sql sql注入靶场,渗透测试,SQL注入,安全,web安全,sql

这就是我们搭建的第一关啦,后面在不改变样式只对输入进行过滤或者对输出进行设置的操作就很简单啦,这个页面我打算就做三四关吧,后面换页面,sql-labs 在刷它的时候确实是有点枯燥的,css代码我就不放啦,毕竟不是我自己搞的!文章来源地址https://www.toymoban.com/news/detail-617833.html

到了这里,关于五分钟制作sql注入靶场的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SQL注入测试-业务安全测试实操(10)

    测试原理和方法 SQL注入就是通过把SQL命令插入Web表单提交或输入域名页面请求的查询字符串最终达到欺骗服务器执行恶意的SOL命令的目的。具体来说,它是利用现有应用程序,将(恶意)SOL命令注入后台数据库引擎执行的能力,它可以通过在Web表单中输入 (恶意)SOL 语句获取一个

    2024年02月09日
    浏览(27)
  • Web安全:SQL注入漏洞测试.

    SQL注入就是 有些 恶意用户在提交查询请求的过程中 将SQL语句插入到请求内容 中,同时程序的本身对用户输入的内容过于相信, 没有对用户插入的SQL语句进行任何的过滤 ,从而 直接被SQL语句直接被服务端执行 ,导致数据库的原有信息泄露,篡改,甚至被删除等风险。 SQL注

    2024年02月05日
    浏览(41)
  • Burpsuite靶场——SQL注入

    在本篇文章中,咱们将解释什么是 SQL 注入,描述一些常见的例子,解释如何发现和利用各种 SQL 注入漏洞,并总结如何防止 SQL 注入。 废话不多说,开始正篇。 SQL注入漏洞(SQL injection)是web层面最高危的漏洞之一。曾在2008-2010连续三年期间位列OWASP年度十大漏洞排行榜第一

    2024年02月07日
    浏览(40)
  • Pikachu靶场—sql注入通关

    创作不易,给个关注吧,有任何问题可以评论或者私聊 关卡详情 根据图上来看,这关有个下拉菜单可以选数字。由于从url看不到什么变化,我们用burpsuite抓包看一下。确定是post请求 因为题目指出是数字型的注入,所以就不用找闭合了,直接使用 order by 探测列数,这里探测

    2024年02月13日
    浏览(38)
  • DVWA靶场中SQL注入

    1.1.1.Low级别   1)判断注入类型当输入1和1 and 1=2的时候均能够正常返回数值,证明不是数字型输入。那么这里基本上就能够判断是字符型注入。   2)判断字符型注入。输入1’ and 1=2 #的时候出现报错,证明存在字符型注入,并且单引号闭合。   3)判断有多少列当输入

    2024年02月03日
    浏览(39)
  • 【SQL注入漏洞-06】HTTP头部注入靶场实战

    常见的sql注入一般是 通过请求参数或者表单进行注入 ,HTTP头部注入是 通过HTTP协议头部字段值进行注入 。 产生HTTP头部注入的条件: 能够对请求头消息进行修改 修改的请求头信息能够带入数据库进行查询 数据库没有对输入的请求信息做过滤 User-Agent :是Http协议中的一部分

    2024年02月02日
    浏览(47)
  • bwapp靶场笔记 -SQL注入篇

    ​ 启动靶场 查询数据库名字,以及所有的表名称 11 union select 1,2,database(),GROUP_CONCAT(table_name) ,5,6,7 from information_schema.tables where table_schema=database() # blog,heroes,movies,users,visitors 查询需要表的字段名 11 union select 1,2,database(),GROUP_CONCAT(COLUMN_name) ,5,6,7 from information_schema.COLUMNs where tabl

    2024年02月06日
    浏览(46)
  • pikachu靶场-4 SQL注入漏洞

    在OWASP发布的TOP 10 中,注入漏洞一直是危害排名第一的漏洞,其中主要指的是SQL Inject漏洞。 一个严重的SQL注入漏洞,可能会直接导致一家公司破产! 数据库输入漏洞,主要是开发人员在构建代码时,没有对输入边界进行安全考虑,导致攻击者可以通过合法的输入点提交一些

    2023年04月20日
    浏览(40)
  • Web安全:SQL注入漏洞测试(防止 黑客利用此漏洞.)

    SQL注入就是 有些 恶意用户在提交查询请求的过程中 将SQL语句插入到请求内容 中,同时程序的本身对用户输入的内容过于相信, 没有对用户插入的SQL语句进行任何的过滤 ,从而 直接被SQL语句直接被服务端执行 ,导致数据库的原有信息泄露,篡改,甚至被删除等风险。 SQL注

    2024年02月13日
    浏览(28)
  • 一次简单的SQL注入靶场练习

    为了巩固SQL注入以及实战演练的需要,我们来做一次简单的关于SQL注入的实战靶场练习 靶场下载地址: https://download.vulnhub.com/pentesterlab/from_sqli_to_shell_i386.iso 因为是linux系统,大家要注意安装的是linux的Debian系统,系统才能正常的运行,然后在设置里放置iso光盘就可以了。 安

    2023年04月10日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包