CTFHUB(WEB) 布尔注入

麻烦的来了诶,装作不知道是布尔注入,依然按照题目意思输入1看看

从这里可以知道我们不需要打引号 

哦对了,我们先应该判断是否有注入点,利用真假语句来判断id的值是否可以改变sql语句的变化

通过恒真语句and 1=1和恒假语句and 1=2得知id的值可以改变sql语句的走向,说明这里存在注入点,然后便上网查询一下布尔注入应该要用到哪些函数语句

length()返回长度

这里弊端就是因为都是ctfhub上面的题,只是注入方式改变,数据库名啥的没变,所以只是为了让我们动手用这种方法试验一下,如果去真正的比赛的话可就没有那么容易好找了

1 and length(database())=4 

可以知道数据库名是四个字符的,然后利用substr(x,1,1)分割函数来一个个试是什么字符,利用ascii的值来判断

substr()PHP substr() 函数

 可以得知数据库第一个字符的ascii值是大于110的,利用二分法来做比较快,因为我们知道数据库名肯定就是sqli了,便直接试试是不是等于115来验证我们的想法

 可以确定第一个字符的ascii值就是115也就是s,后面的就不用去猜了,肯定就是sqli了

 接下来我们利用count函数来判断sqli数据库里有几个表

1 and (select count(table_name) from information_schema.tables where table_schema='sqli' )<3

可以知道少于3张表,我们就可以联想到news和flag了,方法随便用,可以用concat和floor这种方法来判断,但是都离不开ascii和count来判断 

count()PHP count() 函数 | 菜鸟教程

1 and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))>109

得知第一个表的第一个字符ascii值大于109,做到这里我就不想做了,如果一直这样猜的话,那如果我们真的ctf比赛的时候,做这一个题不知道要消耗我们多少时间,这里我们了解一下手动注入就行了,后面我用的是sqlmap工具

sqlmap常见命令sqlmap命令详解 - tooltime - 博客园

利用sqlmap来得知数据库有哪些(会有点慢,耐心等一下)

sqlmap.py -u 登录的地址 -dbs

虽然有点时间,但是还是比我们手动注入的快的 

然后利用sqlmap.py -u 输入地址 -D sqli --tables来获取数据库里面的表(这种参数多做就知道了)

发现两张表flag和news,我们可以直接去看字段以及数值了 

sqlmap.py -u 地址 -D sqli -T flag --columns --dump

 flag就出来了,比手动注入容易多了,不过像我这种在学习的还是需要手动注入,少用工具,积累知识,以后厉害了再利用工具来方便点

还有一种方法就是python写一个脚本去跑,可惜太菜写不出来,还在琢磨别人的代码哈哈

 

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值