红日安全推出的适合新手入门系列教程专刊上线啦!红日安全专注新手入门教程。转眼间红日安全又成长了一岁,在这一年里,团队成长了很多很多。目前团队所有的文章对外都是公开的,希望可以给新手一个填补空白的地方。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安全,安全培训)
网络安全(黑客)——自学2024
小言同学喜欢挖漏洞
web安全 安全 网络 学习 网络安全 信息安全 渗透测试
01什么是网络安全网络安全可以基于攻击和防御视角来分类,我们经常听到的“红队”、“渗透测试”等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面性,例如Web安全技术,既有Web渗透,也有Web防御技术(WAF)。作为一个合格的网络安全工程师,应该做到攻守兼备,毕竟知己知彼,才能百战百胜。02怎样规划网络安全如果你是一
黑客(网络安全)技术自学30天
一个迷人的黑客
web安全 安全 网络 笔记 网络安全 信息安全 渗透测试
01什么是网络安全网络安全可以基于攻击和防御视角来分类,我们经常听到的“红队”、“渗透测试”等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面性,例如Web安全技术,既有Web渗透,也有Web防御技术(WAF)。作为一个合格的网络安全工程师,应该做到攻守兼备,毕竟知己知彼,才能百战百胜。02怎样规划网络安全如果你是一
自学黑客(网络安全)技术——2024最新
九九归二
web安全 安全 学习 笔记 网络 网络安全 信息安全
01什么是网络安全网络安全可以基于攻击和防御视角来分类,我们经常听到的“红队”、“渗透测试”等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面性,例如Web安全技术,既有Web渗透,也有Web防御技术(WAF)。作为一个合格的网络安全工程师,应该做到攻守兼备,毕竟知己知彼,才能百战百胜。02怎样规划网络安全如果你是一
网络安全(黑客)—2024自学笔记
羊村最强沸羊羊
web安全 笔记 安全 网络安全 网络 python 开发语言
前言一、什么是网络安全网络安全可以基于攻击和防御视角来分类,我们经常听到的“红队”、“渗透测试”等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面性,例如Web安全技术,既有Web渗透,也有Web防御技术(WAF)。作为一个合格的网络安全工程师,应该做到攻守兼备,毕竟知己知彼,才能百战百胜。二、怎样规划网络安全如果你
食品安全培训资料A
飞扬飘雪_a09a
引言食品安全的重要性食品是人类赖以生存的物质基础之一,食品安全直接关系到人体的健康。安全的食品维持了人体正常的生理功能,而不安全的食品则可能给消费者,社会和食品企业都带来不利的影响。食用者发生食物中毒,有时甚至感染传染病如痢疾肝炎。食用者患病带来劳动能力降低,医疗费用的增加。儿童,老人,孕妇,免疫力低下人群,如食用不安全食物,发生食物中毒或传染病,严重的可致死亡。影响本单位本行业甚至本地区的声誉。
网络安全(黑客)0基础到精通,看这一篇就够了!
羊村最强沸羊羊
web安全 安全 网络安全 php 网络 python 开发语言
前言一、什么是网络安全网络安全可以基于攻击和防御视角来分类,我们经常听到的“红队”、“渗透测试”等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面性,例如Web安全技术,既有Web渗透,也有Web防御技术(WAF)。作为一个合格的网络安全工程师,应该做到攻守兼备,毕竟知己知彼,才能百战百胜。二、怎样规划网络安全如果你
2024网络安全-自学笔记
羊村最强沸羊羊
web安全 安全 网络安全 开发语言 php python 网络
前言一、什么是网络安全网络安全可以基于攻击和防御视角来分类,我们经常听到的“红队”、“渗透测试”等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面性,例如Web安全技术,既有Web渗透,也有Web防御技术(WAF)。作为一个合格的网络安全工程师,应该做到攻守兼备,毕竟知己知彼,才能百战百胜。二、怎样规划网络安全如果你
python docker 镜像过大_【转】六种减小Docker镜像大小的方法
weixin_39627408
python docker 镜像过大
转自P牛,vulnhub作者,擅长代码审计和漏洞挖掘,今天看到他的公众号发了一篇这个,正好平时自己的工作也有需求,整理记录如下。=========================================我从2017年做Vulhub开始,一直在和一个麻烦的问题做斗争:在编写Dockerfile的时候,如何减小dockerbuild生成的镜像大小?这篇文章就给大家总结一下我自己使用过的六种减小
网络安全(黑客技术)—0基础自学
羊村最强沸羊羊
网络安全 web安全 开发语言 安全 php python 网络
前言一、什么是网络安全网络安全可以基于攻击和防御视角来分类,我们经常听到的“红队”、“渗透测试”等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面性,例如Web安全技术,既有Web渗透,也有Web防御技术(WAF)。作为一个合格的网络安全工程师,应该做到攻守兼备,毕竟知己知彼,才能百战百胜。二、怎样规划网络安全如果你
常见的几种Web安全问题测试简介
咖啡加剁椒..
软件测试 web安全 安全 功能测试 软件测试 自动化测试 程序人生 职场和发展
Web项目比较常见的安全问题1.XSS(CrossSiteScript)跨站脚本攻击XSS(CrossSiteScript)跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。测试方法:在数据输入界面,添加记录输入:,添加成功如果弹出对话框,表明此处存在一个XSS漏洞。或把url请求中参数改为
HTTP查阅手册地址
iuiyiyut
https://developer.mozilla.org/zh-CN/docs/Web/HTTP教程HTTP概述HTTP缓存HTTPcookiesHTTP访问控制(CORS)HTTP的演变Mozillaweb安全引导HTTP消息典型的HTTP会话HTTP/1.x中的连接管理参考文档HTTP首部HTTP请求方法HTTP状态返回码CSP指令工具与资源Firefox开发者工具MozillaObserv
Shiro-05-5 分钟入门 shiro 安全框架实战笔记
老马啸西风
web 安全 java 安全 架构 开发语言 哈希算法
序言大家好,我是老马。前面我们学习了web安全之SpringSecurity入门教程这次我们来一起学习下另一款java安全框架shiro。什么是ApacheShiro?ApacheShiro是一个功能强大且易于使用的Java安全框架,它为开发人员提供了一种直观而全面的解决方案,用于身份验证,授权,加密和会话管理。实际上,它可以管理应用程序安全性的所有方面,同时尽可能避免干扰。它建立在可靠的界面驱动
web安全之 -- XSS攻击
似水牛年
什么是XSS攻击XSS,即为(CrossSiteScripting),中文名为跨站脚本,是发生在目标用户的浏览器层面上的,当渲染DOM树的过程成发生了不在预期内执行的JS代码时,就发生了XSS攻击。跨站脚本的重点不在‘跨站’上,而在于‘脚本’上。大多数XSS攻击的主要方式是嵌入一段远程或者第三方域上的JS代码。实际上是在目标网站的作用域下执行了这段js代码。为不和层叠样式表(CascadingSt
常见Web安全漏洞的实际案例和攻防技术
清水白石008
web安全 安全
常见Web安全漏洞的实际案例和攻防技术1、SQL注入攻击与防范:通过一个简单的Web应用演示SQL注入攻击,包括入侵者如何通过输入恶意SQL语句来获取敏感数据。提供相应的防范措施,包括参数化查询、ORM框架的使用等,并附上实际代码演示。Copycode#恶意SQL注入语句的示例SELECT*FROMusersWHEREusername='admin'ANDpassword='xxx'OR'1'=
成为一名月薪2万的web安全工程师需要哪些技能?
闪现码狗
现在web安全工程师比较火,岗位比较稀缺,现在除了一些大公司对学历要求严格,其余公司看中的大部分是能力。之前有个咨询的17岁的小伙子学习的就是相关方向,17岁,已经工作2年了……当初也是因为其他的要求比较高,所以才选择的web安全方向。那么成为一名web安全工程师需要哪些技能呢?下面就告诉你。01环境的搭建熟悉基本的虚拟机配置。Kalilinux,centos,Windows实验虚拟机自己搭建II
Web安全-JWT认证机制安全性浅析
Tr0e
Web安全
文章目录认证机制数据结构头部有效载荷签名数据转换安全缺陷密钥爆破认证机制JWT全称是JSONWebToken,是目前非常流行的跨域认证解决方案,在单点登录场景中经常使用到。JSONWebToken直接根据token取出保存的用户信息,以及对token可用性校验,大大简化单点登录。起源说起JWT,我们应该来谈一谈基于token的认证和传统的session认证的区别。传统的Session认证我们知道,
2022-05-27
BOOpan
潘蔚20220527日精进打卡一、感恩感谢同事们辛苦工作感谢王磊组织安全培训感谢刘高平帮忙找工具拆卸配件感谢徐工指导排查异常感谢姐夫帮忙去驿站拿快递感谢朋友请客聚餐感谢婆婆每日辛苦付出二、行善利他参加培训三、反省感悟要从原理开始
Web安全攻防_渗透测试实战指南
立志成为网安大牛
web安全 安全
目录第1章渗透测试之信息收集1.1收集域名信息1.1.1Whois查询1.1.2备案信息查询1.2收集敏感信息1.3收集子域名信息1.4收集常用端口信息1.5指纹识别1.6查找真实IP1.7收集敏感目录文件1.8社会工程学第1章渗透测试之信息收集**1.1收集域名信息**①得知目标域名②获取域名注册信息(域名DNS服务器信息和注册人联系信息)1.1.1Whois查询标准互联网协议,收集网络注册信息
【web安全】渗透测试实战思路
星盾网安
付费专区 web安全 安全
步骤一:选目标1.不建议太小的公司(可能都是请别人来开发的,用现成成熟的框架)2.不建议一线大厂:腾讯,字节,阿里等,你懂的3.不建议政府部门,安全设备多,每年有护网,报警你就死建议:找上市公司与子公司,有开发人员,就有漏洞重点:先在天眼查那些找域名所有上市公司链接:上市公司大全子公司:在官网上找步骤二:优先找登录入口1.用户名枚举2.寻找关键信息,看看官网有没有一些文章发布人的姓名,然后使用工具
小白学安全--web安全入门(非常详细)零基础入门到精通,收藏这一篇就够了
网络安全大白
网络安全 黑客 程序员 安全 web安全
作为一个从知道创与到自建安全团队的资深白帽子,一路也是从不止所谓的web小白历经磨难成长起来的我,给现在正在准备学习web安全的同学一些建议。在我认为,渗透安全的范围其实要学习的东西很广泛的,间接的相当于你要是一个前端工程师,也要是一个后端工程师(其中就包含主流的php,JAVA,python等),如果学习移动端安全,你还要是一个出色的安卓工程师,而网络安全又细分为很多方向,比如系统安全、移动安全
文件上传漏洞--Upload-labs--Pass10--双写绕过
给我杯冰美式
Web安全--文件上传漏洞 web安全 文件上传漏洞
一、什么是双写绕过顾名思义,双写绕过就是双写文件后缀名来进行绕过,如:test.php双写后为test.pphphp。通常情况下双写绕过用于绕过源代码中的str_ireplace()函数。二、双写绕过原理1、首先进行代码审计,源代码中有黑名单和str_ireplace()函数的联合使用,将黑名单中的敏感后缀名全部都进行了删除。这就会使我们上传的test.php上传后变成test.,这就会使Apac
文件上传漏洞--Upload-labs--Pass09(在某些版本的靶场里是Pass10)--点+空格+点 绕过
给我杯冰美式
Web安全--文件上传漏洞 文件上传漏洞 web安全
一、什么是点+空格+点绕过顾名思义,将test.php改为test.php..,观察到后缀名php后多出了点+空格+点。那么点+空格+点是如何进行绕过的,在什么情况下可以使用,让我们结合题目讲解。二、代码审计1、查看题目源代码上半部分,题目采取黑名单,并且对Pass05-Pass07的题目中所出现的漏洞进行了有效修复,意味着我们不再能够使用点绕过/空格绕过/大小写绕过了。2、接着查看源代码下半部分
文件上传漏洞--Upload-labs--Pass07--点绕过
给我杯冰美式
Web安全--文件上传漏洞 文件上传漏洞 web安全
一、什么是点绕过在Windows系统中,Windows特性会将文件后缀名后多余的点自动删除,在网页源码中,通常使用deldot()函数对点进行去除,若发现网页源代码中没有deldot()函数,则可能存在点绕过漏洞。通过点绕过漏洞,可以达到上传含有恶意代码的文件的目的。二、通关思路1、首先进行代码审计,发现网页源代码中缺少对点的处理,即deldot()函数,可以进行点绕过。2、上传test.php文
【web | CTF】BUUCTF [网鼎杯 2020 青龙组]AreUSerialz
星盾网安
CTF php
天命:php的序列化题目简直是玄学,既不能本地复现,也不能求证靶场环境天命:本地php是复现不了反序列化漏洞的,都不知道是版本问题还是其他问题天命:这题也是有点奇怪的,明明用字符串2也应该是可以,但偏偏就不行,神奇了进来题目先看到php代码审计,是反序列化漏洞先看进来入口的逻辑,判断是不是正常的ascii码字符,然后反序列化,可以忽略校验,都是正常的//校验你是不是ascii码里面的合法字符fun
什么是SQL注入,有什么防范措施
安全http
随着互联网的普及和数字化进程的加速,Web攻击已经成为网络安全领域的一大威胁。Web攻击不仅可能导致个人隐私泄露、财产损失,还可能对企业和国家的安全造成严重影响。下面德迅云安全就分享一种常见的web攻击方式-SQL注入,了解下什么是SQL注入,还有面对攻击时有哪些防范措施。通过了解这方面的网络安全知识,可以提高日常的web安全性。什么是SQL注入:SQL注入(SQLInjection)是一种常见的
Web安全研究(六)
西杭
web安全 安全
文章目录HideNoSeek:Camouflaging(隐藏)MaliciousJavaScriptinBenignASTs文章结构IntrojsobfuscationmethodologyExampleHideNoSeek:Camouflaging(隐藏)MaliciousJavaScriptinBenignASTsCCS2019CISPA恶意软件领域,基于学习的系统已经非常流行,并且可以检测新
ACM CCS 2020 · web安全研究学者
丫丫二_97
web安全 web 安全
ACMCCS2020·web安全研究学者锁一下!最近打算整理下这些学者的论文,然后看一下他们的研究脉络。其他四大也应该锁一下。GiovanniVigna学校:UniversityofCaliforniainSantaBarbara(UCSB,加州大学圣巴巴拉分校)研究机构:DepartmentofComputerScience方向:vulnerabilityanalysis,websecurity
2022网络安全超详细路线图,零基础入门看这篇就够了
技术宅不太宅
程序人生 web安全 网络安全 kali渗透 渗透测试 sql注入
一.开始前的思考1.我真的喜欢搞安全吗?2.我只是想通过安全赚钱钱吗?3.我不知道做什么就是随便。4.一辈子做信息安全吗这些不想清楚会对你以后的发展很不利,与其盲目的学习web安全,不如先做一个长远的计划。否则在我看来都是浪费时间。如果你考虑好了参照我的计划进行学习,我不敢保证你实践完多牛逼,但是找6k-9k的工作绝对不成问题。1.目的本问目的是带大家快速入门web安全,不会搞些虚张声势的东西都是
(2022版)零基础入门网络安全/Web安全,收藏这一篇就够了
网络安全-无涯
web安全 安全 网络 网络安全 面试
由于我之前写了不少网络安全技术相关的文章和回答,不少读者朋友知道我是从事网络安全相关的工作,于是经常有人私信问我:我刚入门网络安全,该怎么学?要学哪些东西?有哪些方向?怎么选?这一行职业前景如何?废话不多说,先上一张图镇楼,看看网络安全有哪些方向,它们之间有什么关系和区别,各自需要学习哪些东西。在这个圈子技术门类中,工作岗位主要有以下三个方向:安全研发安全研究:二进制方向安全研究:网络渗透方向下面
Web安全测试之XSS
中科恒信
XSS全称(CrossSiteScripting)跨站脚本攻击,是Web程序中最常见的漏洞。指攻击者在网页中嵌入客户端脚本(例如JavaScript),当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的.比如获取用户的Cookie,导航到恶意网站,携带木马等。作为测试人员,需要了解XSS的原理,攻击场景,如何修复。才能有效的防止XSS的发生。阅读目录XSS是如何发生的HTMLE
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