红日安全推出的适合新手入门系列教程专刊上线啦!红日安全专注新手入门教程。转眼间红日安全又成长了一岁,在这一年里,团队成长了很多很多。目前团队所有的文章对外都是公开的,希望可以给新手一个填补空白的地方。2020年,团队开始新的方向,和一些安全培训厂商进行合作,希望做出更多安全作品。感谢团队每一位成员为团队的辛勤付出,希望每一个人在团队里面有更大的作为。也感谢一直在后面默默支持我们的红粉,也祝愿你们在新的一年学到更多的干货!
1.1 PHP安全入门到精通 1.1.1 概述
PHP安全入门到精通书刊,年后全部放出。为了团队发展,个人在闲暇时间为团队做了一个PHP安全入门到精通书籍,本次书籍摘出一部分让大家入门,更详细的会在年后发出,此次书籍希望让没有基础的安全人员也可以写自己网站,搭建自己的PHP工具和PHP靶场平台。本次专刊发表几节,因为整体文章还没有写完,所以先放出一部分供大家学习。后续文章在年后第二次专刊将在此奉献,希望大家在新的一年里,学习到更多的技能。全部内容如下:
1.1.2 PHP基础知识
1.1.2.1 全局变量认识
1.1.2.1.1 $GLOBALS
globals是PHP内置的可以自动获取当前页面中的所有变量的内容.
代码解释
1.1.2.1.2 $_SERVER
$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。
代码解释:
echo '';foreach($_SERVER as $key =>$value){echo '';echo ''.$key.''.''.$value.'';echo '';}echo '';?>
1.1.2.1.3 $_FILES
说明:获取上传文件的信息代码说明:hr.html
红日安全文件名:
Hr.php
0){echo "错误:: " . $_FILES["file"]["error"] . "";}else{echo "上传文件名: " . $_FILES["file"]["name"] . "";echo "文件类型: " . $_FILES["file"]["type"] . "";echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . "kB";echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"] ."";// 判断当期目录下的 upload 目录是否存在该文件// 如果没有 upload 目录,你需要创建它,upload 目录权限为 777if (file_exists("upload/" . $_FILES["file"]["name"])){echo $_FILES["file"]["name"] . " 文件已经存在。 ";}else{// 如果 upload 目录不存在该文件则将文件上传到 upload 目录下move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . $_FILES["file"]["name"]);echo "文件存储在: " . "upload/" .$_FILES["file"]["name"];}}}else{echo "非法的文件格式";}?>
1.1.2.1. 4 $_GET:URL方式传递数据
说明:其实就是浏览器的地址栏传递方式,传递方式:URL地址?参数1=值1&参数2=值2……………………………传递形式:表单的get方式和超链接方式
代码解释:
USERNAME:PASSWORD:
$_GET方式是在URL地址栏里面直接对接传输。
1.1.2.1. 5 $_POST: HTTP POST方式传递数据
说明:通过HTTP协议的post方式来传递数据。POST方式传输是在地址栏里面看不见地址,例如隐式传输。利用谷歌浏览器查看。
USERNAME:PASSWORD:
1.1.2.1. 6 $_REQUEST
默认三种方式都可以提交。如果设置接受get方式,我们以POST方式进行提交,浏览器会找不到该值。1.1.3二正则表达式
1.1.3.1 正则表达式入门1.1.3.1.1 入门简介
在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。很可能你使用过Windows/Dos下用于文件查找的通配符(wildcard),也就是和?。如果你想查找某个目录下的所有的Word文档的话,你会搜索.doc。在这里,*会被解释成任意的字符串。和通配符类似,正则表达式也是用来进行文本匹配的工具,只不过比起通配符,它能更精确地描述你的需求——当然,代价就是更复杂——比如你可以编写一个正则表达式,用来查找所有以0开头,后面跟着2-3个数字,然后是一个连字号“-”,最后是7或8位数字的字符串(像010-12345678或0376-7654321)。正则表达式就像筛子,将我们需要的内容(符合规则的内容)漏下去,将不符合规则的内容过滤掉而我们学习正则表达式,主要是如何定义这一套规则1.1.3. 2 正则表达式相关的函数
1) preg_match 使用正则表达式(规则)对字符串进行筛选,筛选到一个结果即停止
2) preg_match_all 使用正则表达式(规则)对字符串进行筛选,筛选到结果先保存到数组,并继续筛选,直到字符串结束
3) preg_replace 使用正则表达式(规则)对字符串进行筛选,再将筛选的内容进行替换
4) preg_split 使用正则表达式(规则)对字符串进行拆分explode()是根据某个字符进行分割
使用 preg_split 可以先根据定义的规则进行筛选,再根据筛选的结果拆分字符串
1.1.3.3 正则表达式应用场景
用户注册时,先定义用户名的规则(字母、数字、下划线的组合,6-10位),然后再使用该规则验证用户的输入
内容采集(将其他网站的内容采集下来,保存到我们的数据库),需要告诉程序需要哪些内容(定义好规则)1.1.3.4 表达式语法
定界符:表示规则的边界,从哪里开始到哪里结束
元字符:元字符就表示筛选的内容(一个字符)例如:我们可以使用一个字符表示筛选的就是这个字符
$reg='/W/';$str='helloWorld';preg_match($reg,$str,$match);var_dump($match);
除了使用一个字符表示筛选的字符之外,正则表达式还提供了一些特殊的符号表示筛选的内容例如:可以使用转义字符表示筛选范围中的一个\w 表示筛选的内容是字母、数字、下划线中的任意一个\W \w的反义词,表示除了字母、数字、下划线之外的任意一个字符
\d,表示筛选数字(0-9)范围中的任意一个
\D,表示除了数字之外的任意一个字符
\s:space空格\S:除了空格之外的任意一个字符
表示**中的任意一个字符[a-z],小写的a到小写的z之间的任意一个字符[hel],表示hel这几个字母之间的任意一个[^hel],中括号里面的^表示非,除了hel之外的任意一个字符
英文的点号,表示除了换行符之外的任意一个字符
|竖线,表示 或者
量词默认情况下,正则表达式采用的是贪婪模式(尽可能多的匹配)量词表示元字符的数量,也就是筛选的内容的长度{m},固定数量m个{n,m},表示最少n个,最多m个{n,} ,表示最少n个,最多无穷个*,表示0个或多个+,表示至少1个?,表示0个或1个
? 的特殊使用? 如果放在元字符后面,表示0个或1个,但是如果放在量词的后面表示将贪婪模式修改为懒惰模式(尽可能少的匹配)举例说明:
^ $ 表示从开始到结束
模式修正符模式修正符,用来对前面的正则表达式进行修饰作用1) i忽略大小写没有使用i模式修正符的时候
使用i模式修正符,表示忽略大小写
2) s,表示万能点模式 没有使用s修饰符的代码
使用s以后
3) U,表示将贪婪模式修改懒惰模式
默认是贪婪模式,就会尽可能多的去匹配
4) 分组的使用 使用正则表达式进行匹配的时候,可以使用()将需要的内容括起来,每个小括号的内容就会当做一个小组,并保存到数组中。第一个()的内容会保存到数组下标为1的元素中第二个()的内容会保存到数组下标为2个元素中以此类推Ÿ $res=‘/(.+)<\/a>/’ ;筛选URL
1.1.3.5 正则实例
用户名验证
6-30位,字母、数字、下划线组合,字母开头
$reg='/^[a-zA-Z]\w{5-29}$/';$res='ehllo1123';preg_match($reg,$res,$match);if($match){echo "success";}else{echo "fail";}
手机号验证
使用正则表达式(规则)对字符串进行筛选,筛选到一个结果即停止
密码验证
6-20位,字母、数字或符号如果纯字母、纯数字的话,提示密码太简单了如果字母、数字的组合的话,提示密码比较安全如果是字母、数字、特殊符号的组合,提示密码杠杠的
邮箱验证
邮箱没有固定的规则,该规则自己定,可以参考下面的合法的邮箱,自己定义规则
正则漏洞
$ip = '1.1.1.1 abcd'; // 可以绕过if(!preg_match("/(\d+).(\d+).(\d+).(\d+)/",$ip)) {die('error');} else {echo('key...');}
在这里没有限制开始和结束,导致输入危险字符绕过。n 第二个案例利用\s空格在shell环境下执行命令成功。
$file_name = $_GET["path"];if(!pregmatch("/^[/a-zA-Z0-9-s]+.rpt$/m", $file_name)) {echo "regex failed";} else {echo exec("/usr/bin/file -i -b " . $file_name);}
n 第三个正则案例
https:// blog.chaitin.cn/phpmail er-cve-2016-10033/ 1.1.4 socket函数讲解1.1.4.1 socket 介绍 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。相同的有MySQL等类似操作,而MySQL它只是已经封装好了,我们直接调用就可以。连接服务端,输入账号和密码就可以。而socket貌似只给我们提供了一堆函数。通过函数我们可以去直接利用。关于socket,我们讲两种方案,一种是基于内核的socket,另外一种是PHP扩展带有的socket功能。l 基于内核的socketŸ fsockopenŸ pfsockopenl PHP扩展模块带有的socket功能Ÿ socket_createŸ socket_bindŸ socket_connectŸ socket_accept首先先讲关于扩展模块socket功能。Socket连接图(图片来源于网络),其实和Python原理是一样的。
Ÿ socket关键函数—socket_create()socket的关键函数1:socket_create($net参数1,$stream参数2,$protocol参数3)作用:创建一个socket套接字,说白了,就是一个网络数据流。返回值:一个套接字,或者是false,参数错误发出E_WARNING警告Ÿ socket关键函数—socket_connect()socket_connect($socket参数1,$ip参数2,$port参数3)作用:连接一个套接字,返回值为true或者false参数1:socket_create的函数返回值参数2:ip地址参数3:端口号Ÿ socket关键函数—socket_bind()socket_bind($socket参数1,$ip参数2,$port参数3)作用:绑定一个套接字,返回值为true或者false参数1:socket_create的函数返回值参数2:ip地址参数3:端口号Ÿ socket关键函数—socket_listen()socket_listen($socket参数1,$backlog 参数2)作用:监听一个套接字,返回值为true或者false参数1:socket_create的函数返回值参数2:最大监听套接字个数Ÿ socket关键函数—socket_accept ()socket_accept($socket)作用:接收套接字的资源信息,成功返回套接字的信息资源,失败为false参数:socket_create的函数返回值Ÿ socket关键函数—socket_read ()socket_read($socket参数1,$length参数2)作用:读取套接字的资源信息,返回值:成功把套接字的资源转化为字符串信息,失败为false参数1:socket_create或者socket_accept的函数返回值参数2:读取的字符串的长度Ÿ socket关键函数—socket_wrete ()socket_write($socket参数1,$msg参数2,$strlen参数3)作用:把数据写入套接字中返回值:成功返回字符串的字节长度,失败为false参数1:socket_create或者socket_accept的函数返回值参数2:字符串参数3:字符串的长度Ÿ socket关键函数—socket_close ()socket_close($socket)作用:关闭套接字返回值:成功返回true,失败为false参数:socket_create或者socket_accept的函数返回值函数讲解完成以后,我们需要对socket建立服务端和客户端。首先一下是建立服务端。
Server_socket.php
小提示:请注意上面的socket_bind,socket_listen,socket_accept三个函数的执行顺序不可更改,也就是说必须先执行socket_bind,再执行socket_listen,最后才执行socket_accept客户端代码Client_server.php 1, "usec" => 0));//发送套接流的最大超时时间为6秒socket_set_option($socket, SOL_SOCKET, SO_SNDTIMEO, array("sec"=> 6, "usec" => 0));/*设置socket连接选项,这两个步骤你可以省略///连接服务端的套接流,这一步就是使客户端与服务器端的套接流建立联系if(socket_connect($socket,'127.0.0.1',8888) == false){echo 'connect failmassege:'.socket_strerror(socket_last_error());}else{$message = 'l love you 我爱你 socket';//转为GBK编码,处理乱码问题,这要看你的编码情况而定,每个人的编码都不同$message = mb_convert_encoding($message,'GBK','UTF-8');//向服务端写入字符串信息if(socket_write($socket,$message,strlen($message)) ==false){echo'failtowrite'.socket_strerror(socket_last_error());}else{echo 'client write success'.PHP_EOL;//读取服务端返回来的套接流信息while($callback = socket_read($socket,1024)){echo 'server return message is:'.PHP_EOL.$callback;}}}socket_close($socket);//工作完毕,关闭套接流
1.1.4.2 PHP fsockopen 使用方法讲解 讲解fsockopen函数,主要是后面我们会讲到主机端口扫描,所以这个函数我们必须讲解。上面在讲socket编程的时候,已经稍微讲解一点fsockopen函数。phpfsockopen是一个非常强大的函数,支持socket编程,可以使用fsockopen实现邮件发送等socket程序等等,使用fsockopen需要自己手动拼接出header部分,本文章向大家介绍fsockopen使用方法和实例讲解,需要的朋友可以参考一下。Php fsockopen介绍fsockopen — 打开一个网络连接或者一个Unix套接字连接。语法:resource fsockopen ( string $hostname [, int $port = -1 [, int&$errno [, string &$errstr [, float $timeout =ini_get("default_socket_timeout") ]]]] )参数:(1)hostname 如果安装了OpenSSL,那么你也许应该在你的主机名地址前面添加访问协议ssl://或者是tls://,从而可以使用基于TCP/IP协议的SSL或者TLS的客户端连接到远程主机。(2)port 端口号。如果对该参数传一个-1,则表示不使用端口,例如unix://。(3)errno 如果errno的返回值为0,而且这个函数的返回值为 FALSE ,那么这表明该错误发生在套接字连接(connect())调用之前,导致连接失败的原因最大的可能是初始化套接字的时候发生了错误。(4)errstr 错误信息将以字符串的信息返回。(5)timeout 设置连接的时限,单位为秒。返回值:fsockopen() 将返回一个文件句柄,之后可以被其他文件类函数调用(例如:fgets() , fgetss() , fwrite() , fclose() 还有 feof() )。如果调用失败,将返回 FALSE 。
更详细可以参考手册。(http:// php.net/manual/zh/funct ion.fsockopen.php )案例:尝试去访问一个本地80端口,我们查看一下返回值,有什么效果。
\n";}else{fputs($fp,"GET / HTTP/1.0\N HOST:127.0.0.1\n\n");while(!feof($fp)){echo fgets($fp,128);}fclose($fp);}
和BurpSuite访问效果相同。
内容显示效果是一样的呢。我们可以看到如果返回200证明80端口开启。以这个原理,我们开始写一个端口扫描器,利用fsockopen函数。既然测试端口,我们先看一下常见安全端口和对应属性一般默认常用端口扫描介绍:
3311:3312 kangle主机管理系统3389 远程登录4440 rundeck是用java写的开源工具5672 rabbitMQ5900 VNC6082 varnish 参考WooYun: Varnish HTTP accelerator CLI 未授权访问易导致网站被直接篡改或者作为代理进入内网6379 redis 一般无认证,可直接访问7001 weblogic8080 tomcat8089 jboss8161 activeMQ8649 ganglia集群系统监控软件9000 fastcgi服务9090 IBM服务9200,9300 elasticsearch 参考WooYun: 多玩某服务器ElasticSearch命令执行漏洞9999 amg加密版10050 zabbix11211 memcache 未授权访问27017,28017 mongodb 未授权访问 mongodb默认无口令登录3777 大华监控设备50000 sap netweaver远程命令执行漏洞50060 50070 hahoop、apache hasoop21 默认是ftp端口 主要看是否支持匿名,也可以跑弱口令22 默认是ssh端口23 默认是telnet端口25 默认是smtp服务53 默认是DNS123 是NTP161,162,8161 snmp服务(8161 IBM一款产品所开放的SNMP)389 ldap团体443 openssl 、hearthleed512,513 rlogin服务或者是exec873 rsync 主要看是否支持匿名,也可以跑弱口令1433 mssql数据库1080 socks代理1521 oracle1900 bes默认后台2049 nfs服务2601,2604 zebra路由 默认密码zebra2082,2083 cpanel主机管理系统3128,3312 squid代理默认端口,如果没设置口令很可能就直接漫游内网了3306 mysql数据库4899 R-admin 连接端4440 rundeck rundeck 参考WooYun: 借用新浪某服务成功漫游新浪内网8834 nessus4848 glashfish
我们需要在代码里面设置相关数组,设置端口一个数组,然后在设置一个属性的数组。简单框架如下
红日安全
根据框架,我们开始补充代码,进行不断加强。代码只是入门级代码,我们没有进过任何修饰。
首先我们定义了一个表格头,内容如下
id
Port
Server
Status
核心PHP文件如下
$value){
if($value <0 || $value>255){
die("Invalid IP");
}
}
//判断ip地址是否符合,利用两个函数,一个ip2long函数。另外一个利用
explode函数,explode函数主要对ip地址进行分割。ip2long — 将 IPV4 的
字符串互联网协议转换成长整型数字
}
$port=array(
21,
23,
25,
79,
80,
110,
135,
137,
138,
139,
143,
443,
445,
1433,
3306,
);
$msg=array(
'Ftp',
'Telnet',
'Smtp',
'Finger',
'Http',
'Pop3',
'Location Service',
'Netbios-NS',
'Netbios-DGM',
'Netbios-SSN',
'IMAP',
'Https',
'Microsoft-DS',
'MSSQL',
'MYSQL',
'Terminal Services',
);
//定义了两个数组,一个是端口数组,另外一个是对端口的解释。
foreach($port as $key =>$value){
echo '';
echo ''.$key.' ';
echo ''.$value.' ';
echo ''.$msg[$key].' ';
$fp=@fsockopen($ip,$value,$errno,$errstr,1);
$res=$fp?'Open ':'Close ';
echo ''.$res.' ';
}
//主要通过fsockopen这个函数进行判断端口是否打开,如果为真则返回
true,为假则执行false
?>
你怎么看待红日发布的这款新专刊?
你认为他有爆红的潜质嘛?
欢迎在评论区留言分享你的观点和看法
你可能感兴趣的:(代码审计,web安全,安全培训)
【WEB安全】任意URL跳转
1.1.漏洞介绍URL跳转漏洞(URLRedirectionVulnerability)又叫开放重定向漏洞(OpenRedirectVulnerability),是一种常见的网络安全漏洞,它存在于许多网站和应用程序中。该漏洞的根本原因是没有对用户提供的URL进行充分的验证和过滤,导致攻击者可以通过构造恶意URL,将用户重定向到任意的网站或应用程序中。1.2.漏洞危害以攻击用户客户端为主,对服务器本
深入理解跨站请求伪造(CSRF):原理、危害与防御
weixin_47233946
信息安全 csrf 网络 前端
引言跨站请求伪造(Cross-SiteRequestForgery,CSRF)是一种常见的Web安全漏洞,攻击者通过伪装用户身份执行非授权操作。根据OWASP(开放网络应用安全项目)的统计,CSRF曾多次入选十大Web安全威胁。本文将深入剖析CSRF的工作原理、潜在危害及防御策略。一、CSRF攻击原理1.1核心机制CSRF利用用户在目标网站(如银行网站)的已认证会话,诱骗其在不知情时发起恶意请求。
比较系统的web安全学习路线
蚁景网安
网络安全 安全性测试 web安全 linux 1024程序员节
更新中ing操作系统基础VM的安装虚拟机介绍VMwareWorkstation软件的安装VMware安装操作系统VMware网络配置详解虚拟机使用保存快照配置网络桥接模式NAT模式仅主机模式windows命令基础linux基础更换源设置中文安装中文输入法ubuntu系统设置root用户自动登录Linux目录结构文件权限VI/VIM的使用linux命令云服务器介绍VPS的作用云服务器提供方案介绍Do
【web安全】SQLMap 参数深度解析:--risk 与 --level 详解
目录简介一、--risk参数:测试风险控制1.基本定义2.各级别详细对比risk=1(默认)risk=2risk=33.使用建议二、--level参数:测试深度控制1.基本定义2.各级别详细对比level=1(默认)level=2level=3level=4level=53.技术实现差异4.使用建议三、参数组合策略1.经典组合方案2.DVWAHigh级别推荐四、性能与效果对比1.测试数据统计2.资
网络安全/Web安全/渗透测试入门/信息收集
&Sinnt&
网络安全 web安全 网络 安全
网络安全/Web安全/渗透测试入门/信息收集本篇文章主要讲解如何进行信息收集,列举了在信息收集中常见的工具和手段。原文地址:sinblog一,whois查询WHOIS查询是一种查找域名注册信息的工具或服务。WHOIS是一个协议,允许用户查询某个域名或IP地址的域名、注册信息以及其他相关互联网的详细数据。WHOIS数据库由多个注册商提供和注册机构维护,公开提供域名注册人的信息。自己购买一个域名,配置
2025web建议
随便收集的信息新手入门路线推荐第一步:Web安全相关概念建议学习时间:2周学习内容如下:1、熟悉基本概念(SQL注入、上传、XSS、CSRF、一句话木马等)。2、通过关键字(SQL注入、上传、XSS、CSRF、一句话木马等)进行Google。3、阅读《Web安全深度剖析》,作为入门学习还是可以的。4、看一些渗透笔记/视频,了解渗透实战的整个过程,可以Google(渗透笔记、渗透过程、入侵过程等)。
Web安全测试详解
点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快随着互联网时代的蓬勃发展,基于Web环境下的应用系统、应用软件也得到了越来越广泛的使用。目前,很多企业的业务发展都依赖于互联网,比如,网上银行、网络购物、网络游戏等。但,由于很多恶意攻击者想通过截获他人信息去谋取利益,因此,会对Web服务器进行攻击。攻击的方式也非常多,常见的有SQL注入、跨站脚本攻击、跨站请求伪造、缓存区溢出等。由此,我
[ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(4-2)XSS注入相关面试题
寒蝉听雨[原ID_PowerShell]
面试总结 渗透测试自学篇 渗透测试面试分享 渗透测试 升职加薪 网络安全 XSS注入面试题 网络安全面试题 1024程序员节
博主介绍博主介绍:大家好,我是_PowerShell,很高兴认识大家~✨主攻领域:【渗透领域】【数据通信】【通讯安全】【web安全】【面试分析】点赞➕评论➕收藏==养成习惯(一键三连)欢迎关注一起学习一起讨论⭐️一起进步文末有彩蛋作者水平有限,欢迎各位大佬指点,相互学习进步!渗透方向的岗位,涉及到的知识点是很广泛的。这里我总结了整个一系列的面试题,可能没有覆盖到全部的知识面,但是应该是比较全面的
【web安全】远程命令执行(RCE)漏洞深度解析与攻防实践
KPX
web安全 安全 web安全 windows linux 漏洞
目录摘要1.RCE漏洞概述1.1基本概念1.2漏洞危害等级2.RCE漏洞原理深度分析2.1漏洞产生条件2.2常见危险函数2.2.1PHP环境2.2.2Java环境2.2.3Python环境3.RCE利用技术进阶3.1基础注入技术扩展3.1.1命令分隔技术3.1.2参数注入技术3.2高级绕过技术3.2.1编码混淆3.2.2字符串拼接3.3盲注技术3.3.1时间延迟检测3.3.2DNS外带数据3.3.
52-【JavaScript-Day 52】告别“野路子”代码:ESLint、Prettier与Web安全入门
吴师兄大模型
javascript 开发语言 ecmascript java 人工智能 大模型 ESLint
Langchain系列文章目录01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南02-玩转LangChainMemory模块:四种记忆类型详解及应用场景全覆盖03-全面掌握LangChain:从核心链条构建到动态任务分配的实战指南04-玩转LangChain:从文档加载到高效问答系统构建的全程实战05-玩转LangChain:深度评估问答系统的三种高效方法(示例生成、手
JavaScript代码审计工具
叶梓诺
javascript 开发语言 ecmascript 前端
我整理的一些关于【Java】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/bLN8S1如何实现一个JavaScript代码审计工具作为一名刚入行的小白,你可能对如何创建一个JavaScript代码审计工具感到困惑。在这篇文章中,我将引导你完成整个流程,并提供具体的代码示例和说明。我们将采取结构化的步骤来确保你能够理解每个阶段。流程概述创建JavaSc
Web学习:SQL注入之联合查询注入
kaikaile1995
前端 学习 sql
SQL注入(SQLInjection)是一种常见且危害极大的Web安全漏洞,攻击者可以通过构造恶意的SQL语句窃取、篡改数据库中的数据,甚至控制整个数据库服务器。本文将深入探讨SQL注入的一个重要变种——联合查询注入(Union-basedSQLInjection),介绍其原理、常见攻击方式、以及防御措施。SQL注入概述SQL注入是指将恶意的SQL代码插入到应用程序的输入字段中,使得这些代码被意外
[ vulhub漏洞复现篇 ] Drupal XSS漏洞 (CVE-2019-6341)
寒蝉听雨[原ID_PowerShell]
[ 靶场实战 ] vulhub vulhub漏洞复现 Drupal XSS漏洞 CVE-2019-6341 渗透测试 网络安全
博主介绍博主介绍:大家好,我是_PowerShell,很高兴认识大家~✨主攻领域:【渗透领域】【数据通信】【通讯安全】【web安全】【面试分析】点赞➕评论➕收藏==养成习惯(一键三连)欢迎关注一起学习一起讨论⭐️一起进步文末有彩蛋作者水平有限,欢迎各位大佬指点,相互学习进步!文章目录博主介绍一、漏洞编号二、影响范围三、漏洞描述四、环境搭建1、进入CVE-2019-6341环境2、启动CVE-20
【代码审计】安全审核常见漏洞修复策略
秋说
Java代码审计 网络安全 代码审计
文章目录1.异常信息泄露修复建议不推荐用法推荐用法2.文件上传漏洞错误示例(缺乏校验)安全示例(含格式/扩展名校验)3.SQL注入漏洞(MyBatis${})示例修复建议4.生成组件间接依赖生成依赖树建议5.间接依赖组件的漏洞什么是间接依赖后端修复1后端修复2前端修复1前端修复26.XSS(跨站脚本攻击)错误示例(存在风险)安全示例(自动转义)修复建议7.接口未鉴权修复建议8.路径遍历漏洞错误示例
【安全建设 | 从0到1】企业安全体系建设线路
秋说
网络安全
文章目录一、安全体系建设v1.0——快速治理1.1安全风险初现1.2配置合适的安全负责人1.3识别主要风险点1.4快速风险削减策略Web安全治理(按优先级)业务风控治理移动安全治理员工行为安全治理口令安全治理钓鱼与社工防御合规治理二、安全体系建设v2.0——系统化建设2.1基于ISMS建设信息安全管理体系2.2基于BSIMM构建安全开发工程能力BSIMM简介常见问题应对2.3构建可复用的技术安全架
2025学年湖北省职业院校技能大赛 “信息安全管理与评估”赛项 样题卷(二)
落寞的魚丶
网络空间安全(职业技能大赛) # 信息安全管理与评估赛项 2025湖北职业技能大赛 高职组 信息安全评估赛项 样题赛题 网络加固
2025学年湖北省职业院校技能大赛“信息安全管理与评估”赛项样题卷(二)第一部分:第二部分:网络安全事件响应、数字取证调查、应用程序安全任务书任务1:应急响应(可以培训有答案)任务2:通信数据分析取证(40分)任务3:基于Windows计算机单机取证(120分)第三部分应用程序安全任务4:HP代码审计(40分)第三部分:网络安全渗透、理论技能与职业素养任务一:人力资源管理系统(60分)可以培训任务
2025学年湖北省职业院校技能大赛 “信息安全管理与评估”赛项 样题卷(四)
落寞的魚丶
网络空间安全(职业技能大赛) # 信息安全管理与评估赛项 2025职业湖北职业技能大赛 职业技能大赛省赛 高职组 信息安全评估与管理赛项
2025学年湖北省职业院校技能大赛“信息安全管理与评估”赛项样题卷(四)第二部分:网络安全事件响应、数字取证调查、应用程序安全任务书任务1:应急响应(可以培训有答案)任务2:通信数据分析取证(40分)任务3:基于Windows计算机单机取证(120分)任务4:PHP代码审计(40分)第三部分:网络安全渗透、理论技能与职业素养任务一:商城购物系统(60分)可以培训任务二:办公系统(60分)任务三:F
如何在FastAPI中打造坚不可摧的Web安全防线?
url:/posts/9d6200ae7ce0a1a1a523591e3d65a82e/title:如何在FastAPI中打造坚不可摧的Web安全防线?date:2025-06-28T08:37:03+08:00lastmod:2025-06-28T08:37:03+08:00author:cmdragonsummary:Web安全三要素包括机密性、完整性和可用性。机密性通过加密算法保护数据传输和
【代码审计】通过类型转换绕过校验,实现任意账户密码重置
秋说
网络安全 代码审计
未经许可,不得转载。文章目录背景漏洞描述风险分析1.code字段默认值为02.empty(0)判断失效3.利用MySQL类型转换绕过empty限制复现验证修复建议背景在Web系统开发中,密码找回功能往往涉及用户邮箱与随机验证码的匹配校验。如果验证逻辑存在疏漏,可能会引发严重的安全问题,如任意账户密码重置等高危漏洞。本文将分析一个典型的逻辑漏洞案例,并结合MySQL的类型转换行为深入探讨其产生原因。
深入理解CSRF攻击与防护机制
布兰妮甜
javascript csrf 防护机制 前端
Hi,我是布兰妮甜!在当今高度互联的Web应用环境中,安全威胁无处不在。CSRF(跨站请求伪造)作为一种常见的Web安全漏洞,长期位居OWASPTop10安全威胁榜单。这种攻击方式利用了网站对用户浏览器的信任,可能导致用户在不知情的情况下执行非预期的操作,如资金转账、密码更改等。本文将深入剖析CSRF攻击原理,详细介绍多种有效的防护机制,并提供实用的JavaScript代码示例,帮助开发者构建更加
构建一个AI驱动的SQL注入测试系统
一、引言在当今这个高度数字化的时代,数据已成为组织最宝贵的资产之一。无论是互联网平台、电商系统,还是企业内部信息化系统,其背后都离不开数据库支撑。数据库的安全性,直接关乎企业的数据完整性、隐私合规性乃至品牌信誉。而SQL注入(SQLInjection)作为最经典、最普遍的Web安全漏洞之一,至今仍是黑客攻击的主力武器之一。尽管业界已提出各种手段来预防SQL注入,如参数化查询、ORM封装、Web应用
2025学年湖北省职业院校技能大赛 “信息安全管理与评估”赛项 样题卷(五)
2025学年湖北省职业院校技能大赛“信息安全管理与评估”赛项样题卷(五)第二部分:网络安全事件响应、数字取证调查、应用程序安全任务书任务1:应急响应(可以培训有答案)任务2:通信数据分析取证(40分)任务3:基于Windows计算机单机取证(120分)第三部分应用程序安全任务4:C代码审计(40分)第三部分:网络安全渗透、理论技能与职业素养任务一:门户网站(60分)可以培训任务二:办公系统(60分
2025学年湖北省职业院校技能大赛 “信息安全管理与评估”赛项 样题卷(一)
落寞的魚丶
网络空间安全(职业技能大赛) # 信息安全管理与评估赛项 2025年湖北职业技能大赛 信息安全评估赛项 高职组 赛题样题 网安全配置
2025学年湖北省职业院校技能大赛“信息安全管理与评估”赛项样题卷(一)第一部分:网络平台搭建与设备安全防护任务书DCRS:DCFW:DCWS:WAF:第二部分:网络安全事件响应、数字取证调查、应用程序安全任务书任务1:应急响应(可以培训有答案)任务2:通信数据分析取证(40分)任务3:基于Windows计算机单机取证(120分)第三部分应用程序安全任务4:Java代码审计(40分)第三部分:网络
2025年渗透测试面试题总结-2025年HW(护网面试) 14(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。目录1.SQL注入原理2.XXE攻击(XML外部实体注入)3.SQL注入分类⚙️4.Windows提权方法5.文件上传绕过技巧️6.代码审计核心要点7.逻辑漏洞类型8.验证码绕过方法️9.CSRF原理10.无工具的子域名收集2025年HW(护网面试)141、sql注入原理2、
React 19 的 useActionState 如何防御 CSRF 攻击
前端布洛芬
大白话前端八股 react.js csrf 前端
大白话React19的useActionState如何防御CSRF攻击在前端开发的“修罗场”里,每一个前端工程师都在与需求变更、性能优化、兼容性问题“斗智斗勇”,而安全问题更是悬在头顶的“达摩克利斯之剑”。尤其是CSRF(跨站请求伪造)攻击,作为Web安全领域的“常客”,让不少开发者头疼不已。好在React19带来了useActionState这个“秘密武器”,今天就带大家一探究竟,看看它是如何筑
网络安全项目实战:Python在网络安全中的应用
kleo3270
本文还有配套的精品资源,点击获取简介:网络安全项目工程是一个用Python编写的程序,重点在于实现特定的安全功能或进行网络安全性分析。本项目详细解析了如何使用Python执行特定命令以实现网络安全性,涵盖了网络编程、加密、数据分析、Web安全、认证授权、异常检测等技术。同时,还涉及到网络扫描、渗透测试以及入侵检测系统,使用Python库进行各种网络安全操作。1.Python在网络安全中的应用概述网
618号外:MS08067安全实验室也做安全培训了
Ms08067安全实验室
java 编程语言 安全 人工智能 项目管理
全新红队攻防直播培训课程重磅来袭直播培训的目标是让您学会而不是仅仅给您一堆视频教程去看私塾式小班精讲,可免费重听!课程费用每期班定价2999,首期班618首发价1999(含图书一本),限额35人,每个报名学员都享受免费的重听权益,一次没学懂就再来一遍。请有意参加培训的学员抓紧报名qq:8946723学习资源每位报名学员免费邮寄一本《内网安全攻防;渗透测试实战指南》,并提供课程中需要的相关软件和环境
华为内部的Web安全原则笔记
Web安全原则1.认证模块必须采用防暴力破解机制,例如:验证码或者多次连续尝试登录失败后锁定帐号或IP。说明:如采用多次连续尝试登录失败后锁定帐号或IP的方式,需支持连续登录失败锁定策略的“允许连续失败的次数”可配置,支持在锁定时间超时后自动解锁。2.对于每一个需要授权访问的页面或servlet的请求都必须核实用户的会话标识是否合法、用户是否被授权执行这个操作,以防止URL越权。说明:防止用户通过
求助帖:学Java开发方向还是网络安全方向前景好
Jerry404_NotFound
安全 java 开发语言 渗透 代码审计 Python 网络安全
最近网络安全被一个培训机构吹得天花乱坠,虽然他家既有网安又有java和UI,我也是学软件工程的(山西某211,此机构是每年和我们学校合作的校企公司),但那里的老师仍然大力推荐我学网络安全(渗透、代码审计)。培训机构邀请来的技术大佬还说软件开发方向不行了,高薪还是要看网安。而且听了他们说的话,我好像感觉我确实对Java开发敲代码之类的不怎么感兴趣(我的数学很差);我觉得网络安全还挺有意思的,还有一点
网站漏洞检测方法有哪些
在数字化时代,网站安全已成为企业和个人的生命线。一次数据泄露可能导致数百万损失,而黑客攻击平均仅需5分钟即可侵入未防护的系统。如何有效识别漏洞屏障?以下是经实践验证的四大核心方法:一、人工代码审计:深度挖掘隐藏风险原理:由安全工程师逐行审查源代码,定位逻辑漏洞(如越权访问、业务缺陷)。适用场景:金融系统、电商平台等高安全性需求场景。案例:某银行支付接口因未校验用户会话ID,被审
java解析APK
3213213333332132
java apk linux 解析APK
解析apk有两种方法
1、结合安卓提供apktool工具,用java执行cmd解析命令获取apk信息
2、利用相关jar包里的集成方法解析apk
这里只给出第二种方法,因为第一种方法在linux服务器下会出现不在控制范围之内的结果。
public class ApkUtil
{
/**
* 日志对象
*/
private static Logger
nginx自定义ip访问N种方法
ronin47
nginx 禁止ip访问
因业务需要,禁止一部分内网访问接口, 由于前端架了F5,直接用deny或allow是不行的,这是因为直接获取的前端F5的地址。
所以开始思考有哪些主案可以实现这样的需求,目前可实施的是三种:
一:把ip段放在redis里,写一段lua
二:利用geo传递变量,写一段
mysql timestamp类型字段的CURRENT_TIMESTAMP与ON UPDATE CURRENT_TIMESTAMP属性
dcj3sjt126com
mysql
timestamp有两个属性,分别是CURRENT_TIMESTAMP 和ON UPDATE CURRENT_TIMESTAMP两种,使用情况分别如下:
1.
CURRENT_TIMESTAMP
当要向数据库执行insert操作时,如果有个timestamp字段属性设为
CURRENT_TIMESTAMP,则无论这
struts2+spring+hibernate分页显示
171815164
Hibernate
分页显示一直是web开发中一大烦琐的难题,传统的网页设计只在一个JSP或者ASP页面中书写所有关于数据库操作的代码,那样做分页可能简单一点,但当把网站分层开发后,分页就比较困难了,下面是我做Spring+Hibernate+Struts2项目时设计的分页代码,与大家分享交流。
1、DAO层接口的设计,在MemberDao接口中定义了如下两个方法:
public in
构建自己的Wrapper应用
g21121
rap
我们已经了解Wrapper的目录结构,下面可是正式利用Wrapper来包装我们自己的应用,这里假设Wrapper的安装目录为:/usr/local/wrapper。
首先,创建项目应用
&nb
[简单]工作记录_多线程相关
53873039oycg
多线程
最近遇到多线程的问题,原来使用异步请求多个接口(n*3次请求) 方案一 使用多线程一次返回数据,最开始是使用5个线程,一个线程顺序请求3个接口,超时终止返回 缺点 测试发现必须3个接
调试jdk中的源码,查看jdk局部变量
程序员是怎么炼成的
jdk 源码
转自:http://www.douban.com/note/211369821/
学习jdk源码时使用--
学习java最好的办法就是看jdk源代码,面对浩瀚的jdk(光源码就有40M多,比一个大型网站的源码都多)从何入手呢,要是能单步调试跟进到jdk源码里并且能查看其中的局部变量最好了。
可惜的是sun提供的jdk并不能查看运行中的局部变量
Oracle RAC Failover 详解
aijuans
oracle
Oracle RAC 同时具备HA(High Availiablity) 和LB(LoadBalance). 而其高可用性的基础就是Failover(故障转移). 它指集群中任何一个节点的故障都不会影响用户的使用,连接到故障节点的用户会被自动转移到健康节点,从用户感受而言, 是感觉不到这种切换。
Oracle 10g RAC 的Failover 可以分为3种:
1. Client-Si
form表单提交数据编码方式及tomcat的接受编码方式
antonyup_2006
JavaScript tomcat 浏览器 互联网 servlet
原帖地址:http://www.iteye.com/topic/266705
form有2中方法把数据提交给服务器,get和post,分别说下吧。
(一)get提交
1.首先说下客户端(浏览器)的form表单用get方法是如何将数据编码后提交给服务器端的吧。
对于get方法来说,都是把数据串联在请求的url后面作为参数,如:http://localhost:
JS初学者必知的基础
百合不是茶
js函数 js入门基础
JavaScript是网页的交互语言,实现网页的各种效果,
JavaScript 是世界上最流行的脚本语言。
JavaScript 是属于 web 的语言,它适用于 PC、笔记本电脑、平板电脑和移动电话。
JavaScript 被设计为向 HTML 页面增加交互性。
许多 HTML 开发者都不是程序员,但是 JavaScript 却拥有非常简单的语法。几乎每个人都有能力将小的
iBatis的分页分析与详解
bijian1013
java ibatis
分页是操作数据库型系统常遇到的问题。分页实现方法很多,但效率的差异就很大了。iBatis是通过什么方式来实现这个分页的了。查看它的实现部分,发现返回的PaginatedList实际上是个接口,实现这个接口的是PaginatedDataList类的对象,查看PaginatedDataList类发现,每次翻页的时候最
精通Oracle10编程SQL(15)使用对象类型
bijian1013
oracle 数据库 plsql
/*
*使用对象类型
*/
--建立和使用简单对象类型
--对象类型包括对象类型规范和对象类型体两部分。
--建立和使用不包含任何方法的对象类型
CREATE OR REPLACE TYPE person_typ1 as OBJECT(
name varchar2(10),gender varchar2(4),birthdate date
);
drop type p
【Linux命令二】文本处理命令awk
bit1129
linux命令
awk是Linux用来进行文本处理的命令,在日常工作中,广泛应用于日志分析。awk是一门解释型编程语言,包含变量,数组,循环控制结构,条件控制结构等。它的语法采用类C语言的语法。
awk命令用来做什么?
1.awk适用于具有一定结构的文本行,对其中的列进行提取信息
2.awk可以把当前正在处理的文本行提交给Linux的其它命令处理,然后把直接结构返回给awk
3.awk实际工
JAVA(ssh2框架)+Flex实现权限控制方案分析
白糖_
java
目前项目使用的是Struts2+Hibernate+Spring的架构模式,目前已经有一套针对SSH2的权限系统,运行良好。但是项目有了新需求:在目前系统的基础上使用Flex逐步取代JSP,在取代JSP过程中可能存在Flex与JSP并存的情况,所以权限系统需要进行修改。
【SSH2权限系统的实现机制】
权限控制分为页面和后台两块:不同类型用户的帐号分配的访问权限是不同的,用户使
angular.forEach
boyitech
AngularJS AngularJS API angular.forEach
angular.forEach 描述: 循环对obj对象的每个元素调用iterator, obj对象可以是一个Object或一个Array. Iterator函数调用方法: iterator(value, key, obj), 其中obj是被迭代对象,key是obj的property key或者是数组的index,value就是相应的值啦. (此函数不能够迭代继承的属性.)
java-谷歌面试题-给定一个排序数组,如何构造一个二叉排序树
bylijinnan
二叉排序树
import java.util.LinkedList;
public class CreateBSTfromSortedArray {
/**
* 题目:给定一个排序数组,如何构造一个二叉排序树
* 递归
*/
public static void main(String[] args) {
int[] data = { 1, 2, 3, 4,
action执行2次
Chen.H
JavaScript jsp XHTML css Webwork
xwork 写道 <action name="userTypeAction"
class="com.ekangcount.website.system.view.action.UserTypeAction">
<result name="ssss" type="dispatcher">
[时空与能量]逆转时空需要消耗大量能源
comsci
能源
无论如何,人类始终都想摆脱时间和空间的限制....但是受到质量与能量关系的限制,我们人类在目前和今后很长一段时间内,都无法获得大量廉价的能源来进行时空跨越.....
在进行时空穿梭的实验中,消耗超大规模的能源是必然
oracle的正则表达式(regular expression)详细介绍
daizj
oracle 正则表达式
正则表达式是很多编程语言中都有的。可惜oracle8i、oracle9i中一直迟迟不肯加入,好在oracle10g中终于增加了期盼已久的正则表达式功能。你可以在oracle10g中使用正则表达式肆意地匹配你想匹配的任何字符串了。
正则表达式中常用到的元数据(metacharacter)如下:
^ 匹配字符串的开头位置。
$ 匹配支付传的结尾位置。
*
报表工具与报表性能的关系
datamachine
报表工具 birt 报表性能 润乾报表
在选择报表工具时,性能一直是用户关心的指标,但是,报表工具的性能和整个报表系统的性能有多大关系呢?
要回答这个问题,首先要分析一下报表的处理过程包含哪些环节,哪些环节容易出现性能瓶颈,如何优化这些环节。
一、报表处理的一般过程分析
1、用户选择报表输入参数后,报表引擎会根据报表模板和输入参数来解析报表,并将数据计算和读取请求以SQL的方式发送给数据库。
2、
初一上学期难记忆单词背诵第一课
dcj3sjt126com
word english
what 什么
your 你
name 名字
my 我的
am 是
one 一
two 二
three 三
four 四
five 五
class 班级,课
six 六
seven 七
eight 八
nince 九
ten 十
zero 零
how 怎样
old 老的
eleven 十一
twelve 十二
thirteen
我学过和准备学的各种技术
dcj3sjt126com
技术
语言VB https://msdn.microsoft.com/zh-cn/library/2x7h1hfk.aspxJava http://docs.oracle.com/javase/8/C# https://msdn.microsoft.com/library/vstudioPHP http://php.net/manual/en/Html
struts2中token防止重复提交表单
蕃薯耀
重复提交表单 struts2中token
struts2中token防止重复提交表单
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
蕃薯耀 2015年7月12日 11:52:32 星期日
ht
线性查找二维数组
hao3100590
二维数组
1.算法描述
有序(行有序,列有序,且每行从左至右递增,列从上至下递增)二维数组查找,要求复杂度O(n)
2.使用到的相关知识:
结构体定义和使用,二维数组传递(http://blog.csdn.net/yzhhmhm/article/details/2045816)
3.使用数组名传递
这个的不便之处很明显,一旦确定就是不能设置列值
//使
spring security 3中推荐使用BCrypt算法加密密码
jackyrong
Spring Security
spring security 3中推荐使用BCrypt算法加密密码了,以前使用的是md5,
Md5PasswordEncoder 和 ShaPasswordEncoder,现在不推荐了,推荐用bcrpt
Bcrpt中的salt可以是随机的,比如:
int i = 0;
while (i < 10) {
String password = "1234
学习编程并不难,做到以下几点即可!
lampcy
java html 编程语言
不论你是想自己设计游戏,还是开发iPhone或安卓手机上的应用,还是仅仅为了娱乐,学习编程语言都是一条必经之路。编程语言种类繁多,用途各 异,然而一旦掌握其中之一,其他的也就迎刃而解。作为初学者,你可能要先从Java或HTML开始学,一旦掌握了一门编程语言,你就发挥无穷的想象,开发 各种神奇的软件啦。
1、确定目标
学习编程语言既充满乐趣,又充满挑战。有些花费多年时间学习一门编程语言的大学生到
架构师之mysql----------------用group+inner join,left join ,right join 查重复数据(替代in)
nannan408
right join
1.前言。
如题。
2.代码
(1)单表查重复数据,根据a分组
SELECT m.a,m.b, INNER JOIN (select a,b,COUNT(*) AS rank FROM test.`A` A GROUP BY a HAVING rank>1 )k ON m.a=k.a
(2)多表查询 ,
使用改为le
jQuery选择器小结 VS 节点查找(附css的一些东西)
Everyday都不同
jquery css name选择器 追加元素 查找节点
最近做前端页面,频繁用到一些jQuery的选择器,所以特意来总结一下:
测试页面:
<html>
<head>
<script src="jquery-1.7.2.min.js"></script>
<script>
/*$(function() {
$(documen
关于EXT
tntxia
ext
ExtJS是一个很不错的Ajax框架,可以用来开发带有华丽外观的富客户端应用,使得我们的b/s应用更加具有活力及生命力。ExtJS是一个用 javascript编写,与后台技术无关的前端ajax框架。因此,可以把ExtJS用在.Net、Java、Php等各种开发语言开发的应用中。
ExtJs最开始基于YUI技术,由开发人员Jack
一个MIT计算机博士对数学的思考
xjnine
Math
在过去的一年中,我一直在数学的海洋中游荡,research进展不多,对于数学世界的阅历算是有了一些长进。为什么要深入数学的世界?作为计算机的学生,我没有任何企图要成为一个数学家。我学习数学的目的,是要想爬上巨人的肩膀,希望站在更高的高度,能把我自己研究的东西看得更深广一些。说起来,我在刚来这个学校的时候,并没有预料到我将会有一个深入数学的旅程。我的导师最初希望我去做的题目,是对appe