手动漏洞挖掘(DVWA)SQL注入

    SQL注入的原因是因为服务器没有对 客户端数据进行判断,并且前端的数据是攻击者可以控制,攻击者就可以构造不同的语句对数据库进行任意操作
 
寻找SQL注入点方式:
  • 1.查看是否报错,从而判断是否对输入的SQL语句进行筛查
还是基于DVWA,我们输入'1'的时候:
提示我们输入错误,这里显示'1'''说明页面在接受我们输入的时候,是将我们的数据放置""中,所以这里才显示我们输入'1',而最后提交的数据为'1''',原因是默认为'' '' 我们加入'1'时候,提交的数据位'''1''',此时前面两个单引号构成闭合,剩余的只有'1''',所以会形成以上。
如果我们输入1''那么会构成''1''''.此时''1''会构成闭合,留下1'',程序接受了输入的1,结果会正常执行:
 
 
  • 2.Bool类型的检测
我们输入1'and'2'='2
此时语句构成为 ''1'and'2'='2''  。'1'会构成闭合剩余一个' 。and语句后'2'='2'为真构成闭合,最后剩余个一个'。最后剩余的和前面剩余的构成闭合,此时闭合内都为真,真即为1,所以结果显示如下: 
 
  • 3.确定查询的字段个数,以及查询信息在哪一列
我们要确定查询的SQL语句查询了哪些字段,判断的目的,确定查询的字段,每个字段的确定,是为了我们后续注入的点
使用的方法为: order by语句
order by 后面跟我们要猜测是字段个数
order by 3查询是否为3个字段我们可以这样写
'5'order by 3'
但是如果这样写3后面多出一个"。为了将"去掉可以用--空格 将后面内容注释掉,最后修改的语句为5'order by 3 -- (注意空格)
这是我们输入以上语句的结果,它表示无法识别3列,经过测试2列为正常列数
这里我们可以猜测查询语句为:
select first_name.suname from users where id=' ' 
 
  • 4.联合查询union
确定两个字段,我们可以进行联合查询
union select ......或者union all
但是我们需要在之前加一个' 分号。为了将程序准备的最后一个分号闭合,
最后的结果为 where id= '查询数字'union select 1,2--  '
第二个分号将之前闭合,后面继续用-- 将最后一个分号注释掉
效果如上,验证我们猜测的select语句
在select后面也可放上函数user(),查看数据库的当前用户
同样可以查询virsion()
以5开头,可以猜测目标数据库为mysql数据库
同理还有datebase()函数,查看当前使用的数据库名称
其他的函数还有:
@@datadir  查看数据库文件位置,类似于pwd
@@version_compile_os  查看操作系统版本
@@hostname 机器主机名
CONCAT_WS(CHAR(32,58,32),user(),database(),version())
可以把多个函数组合在一起,COBCAT_WS是吧多个字符串连接到一起
char为空格:空格 

转载于:https://www.cnblogs.com/Tempt/p/11156959.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值