CTFshow学习笔记---sql盲注:web-174

CTFshow学习笔记---sql盲注:web-174

首先是使用这个靶场的踩坑的地方(搞了一两个小时,都怀疑人生了愣是没有发现,笑死.jpg),靶场调用的时候把174的查询指向了173,需要将跳转url中的select-no-waf-3.php改为select-no-waf-4.php。 

环境回归正常,首当其冲的就是判断闭合,判断闭合的三板斧轮番上:

  1. 数字闭合 直接加注释符合就可以了。
  2. 字符类型的:a、单引号,b、双引号,c、a,b两者加括号。

本次测试中尽量模拟黑盒环境学习(题目给了sql语句的,手动狗头.jpg)测试闭合为 ’ 闭合。

其次来到判断有几个列,order by 直接二分法开测,得到结果2。

然后判断回显直接一键union select ,出现问题了,union select 1,2--+没有回显,百思不得其解(有些时候题目给的环境作为犟种的鄙人非得和出题人反着来),回到题目发现过滤了数字回显。

 

这里是由一些值得注意的,判断列数之前的步骤均没有问题,独独回显位置无法正常显示的时候可以考虑回显被过滤了。使用字符替代数字时记得将类型体现出来(也就是不能union select a,b需要union select ‘a’,’b’)。

       接下来,查数据库:database()代替’a’。查表名使用union select table_name,'b' from information_schema.tables where table_schema=database()--+,发现哎,没回显了!回头想想可能是包含数字被过滤了。

     进入到今天的正式环节-盲注。没有回显我第一时间想到的是延时注入。但是回过头来看之前判断闭合是否成功时我们使用了1’ and 1=1 和1’ and 1=2 发现后者是没有回显的,那我是不是可以将我and后的内容换为我们要的判断呢(先头铁的用延时慢慢使用burp跑,人傻了我)。使用最简单的语句判断是否可行,1' and length(database())=11发现有回显且ctfshow_web也的确是11个字符,得吃得吃,直接变为布尔盲注。

       最后就是布尔盲注三板斧:判断表名长度,用ASCII挨个判断表名;判断列名长度,挨个判断列名,最后就是判断内容长度,挨个判断内容。

       回到刚开始的设想----延时注入1' and if(length(database())=11,sleep(5),1),如果不是burp跑手测记得使用<或者>来进行缩小范围不然会很难受的。

       细节:

1、使用limit 对返回的值进行按个处理例如:

第一个表名长度:'and length((select table_name from information_schema.tables where table_schema='security' limit 0,1))=i--+

第二个表名长度 'and length((select table_name from information_schema.tables where table_schema='security' limit 1,1))=i--+

       2、使用substr(”str”,i,1)来取第i个字符。例如:

                     'and ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))=117--+

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值