Bugku SQL注入2

在这里插入图片描述
这道题目属实有点牛逼

1.直接
在这里插入图片描述
即可得到 flag

2.这道题属于典型的DS_Store源码泄露,当然还有其他类型(常见web源码泄露总结)(常见的web源码泄露总结).
结果用御剑和bp爆口令好像都无果
因为是属于DS_Store源码泄露,然后就需要用到python脚本来跑一下了,发现了flag目录,直接访问,然后就得到了flag。
在这里插入图片描述DS_Store下载地址:https://github.com/lijiejie/ds_store_exp
支持下载:https://download.csdn.net/download/langtuteng17/10494001

3.下面是看了一个大佬的wp emmm~~感觉确实能学到点东西
打开链接,发现是一道POST注入题(挺头疼的),并且一开始以为给的提示是过滤掉的,后来fuzz(模糊测试)发现并不是;

随便输入一个admin账号
在这里插入图片描述
发现竟然只是密码错误(一定是先判断账号正误,在判断密码正误,既可以在账号处尝试一下布尔注入的方式)

猜一下sql语句 select * from xxx where username=‘xxxx’;(大致是这样)

尝试构造语句测试是否可行
在这里插入图片描述
发现有waf!!(可恨啊) 哈哈哈哈哈 看到了我也笑出了声emm~~
在这里插入图片描述
后面发现过滤了很多包括+ * and or…等等啦,于是自己弄个测试的字典(以前也没有这种习惯,不多后来发现很重要的,特别对于一些过滤严密的!)
在这里插入图片描述测试结果:

确实过滤了很多
在这里插入图片描述
返回长度为370的为过滤掉的,367的为未过滤的,判断方法(点击一个爆破结果,点击response,发现返回为 alert(‘illegal character!!@_@’ ,判断为过滤):
在这里插入图片描述
果然还是要弄个模糊测试啊,不然要判断到什么时候啊,这时候问题又来了,想着要进行布尔注入,可是这好像什么都过滤了,但是发现异或符号^没有过滤,可以尝试一下异或注入,构造如图
在这里插入图片描述在这里插入图片描述。。。。这就只能手工了。。。还有注意事项,盲注的时候会用到substr()函数,可是逗号被过滤,因此可以这样绕过substr(database()from(1)for(1))==substr(database(),1,1)----可是for被过滤了啊!!!!!!!

不用怕直接这样substr(database()from(1))------>>>如果默认不加后面的参数的话他会返回后面所有的字符串,看图:
在这里插入图片描述
但是进行比较的时候只会用第一个进行比较:
在这里插入图片描述
因为该表有五条记录所以会有五条查询结果:
在这里插入图片描述在这里插入图片描述
哈哈哈哈哈 果然大佬也还是失手的时候嘻嘻~~

说是看的POST表单里的name属性猜的。。。。。(我怎么可能想得到QAQ),但结果就是对的。。。

所以去构造payload:
在这里插入图片描述
32位的,应该是md5,手工慢慢弄吧:
在这里插入图片描述
之后得到md5加密后的密码到专门的网址解密就行了:
1
2
上面的可以互补,cmd5有的要收费;

之后进入后台:
提示ls
在这里插入图片描述在这里插入图片描述
在这里我想说一句 大佬牛逼 ~~

曲折---------,不过有一点不明白,就是在上述我的payload的最后一个单引号后面加一些东西,就导致回显不能用于判断了,求大佬告知!

以上都是看了大佬们写的博客弄出来的,下面讲一下博客里面的思路;

当然并没有用异或,用的是"-",即减法(就这样说吧);下面讲一下原理,就是在一些运算符进行运算的时候会先观察左右两端的数据类型是否相同;
不同的话就会进行数据强制的转换;

根据我们猜测的sql语句做一下实验:

select * from xxx where username=‘xxxx’;
在这里插入图片描述
上面是实验用表;
首先试一下 select *from users where username=0;(没错就是0)
在这里插入图片描述
发现能把几乎所有信息给爆出来(除了一个特别的123Mikasa);这是为什么?

这就是强制类型转换在 “=”,左右进行比较时会将两者类型转换相同在进行比较,因此字符串就会被整数,如果一个字符串不是以数字开头的那么转换后将为零,比如"bhdfvsdjaokaakod"转换后就为0,因此username=0;就可以爆出所有满足条件的用户,反而"123Mikasa"转换后为123,不满足username=0;因此就不会回显;

而此题我们知道用户名为admin,就知道用这种方法可以成功,因此接下来就判断啦;

首先试一下select * from users where username=‘admin’-0-’’;
在这里插入图片描述
结果一致。分析,减法 “-” 也是一种运算符因此也会发生类型转换,上述理解为
字符串 -(减) 0 -(减)字符串

发生类型转换所以为 0-0-0结果为零;不信我们做个试验:
在这里插入图片描述
这下相信了吧:

下面我们这样试试:select * from users where username=‘tset’-(1=2)-‘test’;
在这里插入图片描述
也可以!!(1=2)为假,所以对于布尔值就是0,结果0-0-0=0;回显正常!!!

试试这个:
select * from users where username=‘test’-(1=1)-‘test’;
在这里插入图片描述嘿嘿(1=1)成立,因为是布尔值就为1;
0-1-0=-1
一切就都解释的通了;
下面构造payload
在这里插入图片描述
当括号为真时,结果为username=-1;—>查不到这个用户名,用户名可是admin,类型转换后为0!!!
因此就这样判断!!!!!下面的过程类似。
PS:当然用不仅仅是减号,乘号*,加法+,除法/,都是值得一试的
唉 大佬就是大佬 先保存 到时候慢慢消化吧~~

这个是字典链接:https://pan.baidu.com/s/1JRX9I1fuz_OnrHbcB1qAgg

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值