sqli-labs笔记(二)

这篇博客详细介绍了SQL注入中的布尔盲注和基于报错的SQL盲注技术,通过sqli-labs的test 2进行实例解析。布尔盲注通过构造逻辑判断获取信息,如利用left()函数判断数据库版本。报错注入则通过错误信息回显获取数据,如使用updatexml()和extractvalue()函数。同时,文章还提到了时间盲注的概念,利用sleep()函数进行延时注入。
摘要由CSDN通过智能技术生成

sqli-lbs笔记:test 2

主要还是参考了《sqlilabs过关手册注入天书》和其他一些各种零散的文章,
参考链接放在文末。

盲注就是在sql注入过程中,sql语句执行的选择后,选择的数据不能回显到前端页面,此时,需要利用一些方法进行判断或者尝试,这个过程称之为盲注。

一、布尔盲注

主要是通过构造逻辑判断
通过利用 left(),substr(),ascii(),ORD(),MID(),regexp正则,like匹配等函数,构造相关的函数语句,根据页面的回显来分析判断所要得到的内容。
对比第四关和第五关的源码,第五关在运行返回结果正确时,只返回you are in…,不会返回数据库当中的信息了,这与第四关是不同的。
Less-4
Less-4
Less-5
Less-5
(1)利用left(version(),1)/left(database(),1)进行尝试判断数据库版本(判断第一位)

?id=1’ and left(version(),1)=5%23

在这里插入图片描述
这里%23是#的URL编码,和–+(是两个-)的作用是一样的,都是对前边的单引号进行注释(后面为了方便看,把杠杠加换成%23了)。
–+(两个杠!页面不显示ORz)是可以直接用的;但是用#的时候,如果直接输入#会被过滤掉。
这是因为url中的#号代表html页面中的锚点,数据传输过程并不会一起带到后端,也就是这个时候的#并没有起注释作用。把#转换成它的URL编码,就可以正常使用了。
贴一篇sql注释符讲解的贴。 SQL注释符

猜测数据库第一位

?id=1’ and left(database(),1)>‘a’ %23

在这里插入图片描述
这里其实是判断数据库名的第一位字母是否>a。我们已经知道sqli靶场的database是security,很显然s是大于a的,因此得到正常的回显。当我们不知情的情况下,可以用二分法提高注入的效率。

(2)利用substr()、ascii()函数进行尝试
我们已经知道sqli靶场的数据库是security,我们利用substr()和ascii()函数构造相关语句,通过页面的回显来判断数据库的相关信息。
这里的>也可以换成<和=号。它实际上是通过比较ascii值(文末附ascii表),来得到肯定或者否定的结果(其实就是靠猜,通过是否有回显来证明自己的判断是否正确。)。
80是P的ascii值,👇其实是在判断数据库的第一个表的第一个字符,在字母表中的位置是不是在P后面。

?id=1’and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))>80 %23

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值