sql注入(基础)题解

1.整形注入

例题:

题目链接CTFHub 技能学习 | 整数型注入

点开网址后出现以上环境

按其要求输入结果如上图

尝试后发现

使用union联合查询一步步找到所需信息数据

解出flag

需要注意的是:

上述语句的结构,可以将information-schema.schemata/tables/columns看作所要查询的范围,而where后的语句作为上一步语句查询获取的信息又使得此步查询更加准确。

此时schema-name与table-schema呼应

table-name与table-name呼应

2.字符型注入

本质上与整形注入相同

区别:

select * from member where id=$id整数型sql语句
select * from member where id='$id' 字符型sql语句
 
与之前不同的是,$id 上多加了一个引号 '  '  ,因此,如过在向之前一样输入 1 or 1=1,后台就会变成:
select * from member where id='1 or 1=1'
很明显这样肯定会数据报错,因此如何过滤引号是关键 ,例如可以输入  ' or 1=1 #  其中,井号键表示注释一行:

select * from member where id='  ' or 1=1 # '
这样查询又为永真

例题:

链接CTFHub 技能学习 | 字符型注入

基本操作相同但为了防止命令被当做字符串需对单引号的作用进行消除

3.报错注入

例题:

题目链接CTFHub 技能学习 | 报错注入

原理:在SQL注入攻击过程中,服务器开启了错误回显,页面会返回错误信息,利用报错函数获取数据库数据。

返回的错误回显中含有数据库信息

初次尝试,发现显示结果不全,推测此题对回显长度有限制

利用mid函数提取剩余flag

4.布尔盲注

布尔型盲注,页面不返回查询信息的数据,只能通过页面返回信息的真假条件判断是否存在注入。

例题:

题目链接:http://challenge-2a93a46eca0419e8.sandbox.ctfhub.com:10800

使用脚本

得到flag

5.时间盲注

注:

在SQL注入攻击过程中,服务器关闭了错误回显,单纯通过服务器返回内容的变化来判断是否存在SQL注入 。

可以用benchmark,sleep等造成延时效果的函数。

如果benkchmark和sleep关键字被过滤了,可以让两个非常大的数据表做笛卡尔积产生大量的计算从而产生时间延迟;

或者利用复杂的正则表达式去匹配一个超长字符串来产生时间延迟。

例题:

题目链接:http://challenge-38c5776b5c19cb38.sandbox.ctfhub.com:10800

利用脚本计算

可直接获取flag

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值