本文主要是介绍SQL注入学习part04:(结合sqli-libs学习:41-50关),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
写在前面:
此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出。欢迎各位前来交流。(部分材料来源网络,若有侵权,立即删除)
SQL注入学习part05
- 第四十一关
- 第四十二关
- 第四十三关
- 第四十四关
- 第四十五关
- 第四十六关
- 第四十七关
- 第四十八关
- 第四十九关
- 第五十关
第四十一关
- 尝试发现是数字型的
![在这里插入图片描述](/upload/202108/05/202108051906092983.png)
- 使用语句
;insert into users (id,username,password) values ('41','hacked','hacked'); --+
![在这里插入图片描述](/upload/202108/05/202108051906099751.png)
- 验证
![在这里插入图片描述](/upload/202108/05/202108051906105894.png)
- 注入成功
- get it
第四十二关
- 是一个登录界面,下面忘记密码和重新注册两个点击进去都是无消息的
- 但是在密码后面加应该单引号就报错了
![在这里插入图片描述](/upload/202108/05/202108051906112129.png)
- 单引号后面增加#,未出现任何报错
- 说明闭合符为单引号
- 猜测思路是用sql注入语句进行用户创建然后进行登录
';insert into users (id,username,password) values ('42','zack','zack'); --+
![在这里插入图片描述](/upload/202108/05/202108051906117642.png)
- 尝试用注册的账号密码进行登录
![在这里插入图片描述](/upload/202108/05/202108051906123008.png)
第四十三关
![在这里插入图片描述](/upload/202108/05/202108051906128355.png)
- 这一关可以使用上一关登录的界面进行登录
- 猜测方法应该是注册应该用户名相近的用户进行密码更改然后成功偷梁换柱
- 原用户账号zack,密码zack
- 注册新用户zack’# ,密码123
- 然后更改新用户的密码会发现新用户的密码没有变化
- 原用户zack密码会被改动
- 本来是这样想的,后来发现注册新账号接口无效所以只能使用sql注入来创建新用户
- 不过貌似这一关可以从不同的情景角度来进行注入
![在这里插入图片描述](/upload/202108/05/202108051906133555.png)
- 密码输入添加单引号报错,并且报错结果中出现了括号,说明闭合符包括了括号
- 输入猜测的闭合符加上注释符进行测试
![在这里插入图片描述](/upload/202108/05/202108051906138584.png)
- 测试成功
- 但是思来想去发现如果是在不知道用户和密码的情况下
- 猜测出闭合符的情况下可以使用万能密码进行尝试
- 试一下又不亏
![在这里插入图片描述](/upload/202108/05/202108051906143628.png)
- 因为尝试出注入点在密码处
- 所以随便猜测一个用户名
- 密码处注入语句:
1’) and 1#
- 简简单单就成功登入了
- 或者使用上一题的方法重新注册用户再登录也可以
- get it
第四十四关
![在这里插入图片描述](/upload/202108/05/202108051906149185.png)
- 在尝试闭合符的过程中发现无论怎样都不会有我们想看到的报错语句出现
- 迟钝了一会猜测需要时间盲注
![在这里插入图片描述](/upload/202108/05/202108051906154229.png)
- 猜猜看看
![在这里插入图片描述](/upload/202108/05/202108051906157076.png)
- 很离谱发现使用sleep(3)进行盲注测试不行
- 查找资料(好吧我又看了大佬的wp@东京没有下雨天)
- 发现是没有在sleep后面加分号
![在这里插入图片描述](/upload/202108/05/202108051906159927.png)
![在这里插入图片描述](/upload/202108/05/202108051906162598.png)
- 成功了
- 说明闭合符就是单引号
- 尝试一首手万能密码
![在这里插入图片描述](/upload/202108/05/202108051906165284.png)
![在这里插入图片描述](/upload/202108/05/202108051906169551.png)
- 发现登进去是id对应等于1的数据,说明在用户名可以使用id替换
- 试试用户名为2
![在这里插入图片描述](/upload/202108/05/202108051906174268.png)
- 注入语句是
1'||1;#
- 把1换成2试试
![在这里插入图片描述](/upload/202108/05/202108051906178672.png)
- 可能是碰巧吧
- 总之是注入成功了
- get it
第四十五关
![在这里插入图片描述](/upload/202108/05/202108051906183262.png)
- 情况和上面的差不多
- 用sleep(3)测试出了闭合符为单引号加括号
- 上万能密码
1')||1#
![在这里插入图片描述](/upload/202108/05/202108051906188003.png)
- easyeasy
- get it
第四十六关
![在这里插入图片描述](/upload/202108/05/202108051906192579.png)
-
情况貌似不太明朗
-
查找资料(好吧我又看了大佬的wp@东京没有下雨天)
-
我接下来要说的,非常恐怖,你们听了千万不要害怕
-
这是新的版本
-
sort作为参数,值为排序依据的列
![在这里插入图片描述](/upload/202108/05/202108051906194468.png)
![在这里插入图片描述](/upload/202108/05/202108051906201573.png)
-
情况是这么个情况
-
这张表会根据sort返回的列数进行排序
-
所以可以先判断一下有多少列
![在这里插入图片描述](/upload/202108/05/202108051906203780.png)
-
测试出来了只有三列
-
重新看了一下堆叠注入的概念,多个sql注入语句一起使用,中间采用分号(;)进行分割
-
理解了一下,发现后台的语句是一个order by语句所以使用堆叠注入
![在这里插入图片描述](/upload/202108/05/202108051906206612.png)
-
这边的sleep()是使用成功的
-
说明可以使用时间盲注
-
或者报错注入都可以的
-
?sort=1 and updatexml(1,concat(0x7e,database(),0x7e),1)
![在这里插入图片描述](/upload/202108/05/202108051906208799.png)
第四十七关
![在这里插入图片描述](/upload/202108/05/202108051906210918.png)
![在这里插入图片描述](/upload/202108/05/202108051906213292.png)
第四十八关
- 输入单引号
![在这里插入图片描述](/upload/202108/05/202108051906215337.png)
- 发现报错是不会回显的
- 所以只能使用盲注
- 多次尝试发现
![在这里插入图片描述](/upload/202108/05/202108051906217710.png)
- 貌似没有闭合符这种东西
![在这里插入图片描述](/upload/202108/05/202108051906219986.png)
- 可以看到sleep()是成功使用了的
if(ascii(substr(database(),1,1))>115,sleep(5),0);
- 构造函数进行时间盲注
- get it
第四十九关
- 同样是报错无回显,但是存在闭合符单引号
![在这里插入图片描述](/upload/202108/05/202108051906222198.png)
- 同四十八关进行时间盲注
- get it
第五十关
- 一顿操作后,发现没有闭合符,以及有报错显示
![在这里插入图片描述](/upload/202108/05/202108051906224248.png)
- 那就报错注入吧
?sort=1 and updatexml(1,concat(0x7e,database(),0x7e),1);%23
![在这里插入图片描述](/upload/202108/05/202108051906226299.png)
- 注入成功,但是其实盲注也可以,但没必要
- get it
end
继续摸鱼
这篇关于SQL注入学习part04:(结合sqli-libs学习:41-50关)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!