[GXYCTF2019]BabySQli1wp

看到题目sqli 应该是个SQL注入题

首先我们先输入'  ,123去试

因为没有闭合"所以报错

我们在使用双引号闭合看看

结果失败了

于是我们在输入账户为admin密码处进行注入

但是发现无论输入什么都是wrong pass!说明注入点为username处。

但是当我们输入的username为其他是报错为wrong user!说明存在admin这个用户。

然后我查看源代码发现

存在search.php文件 通过post方式请求,于是我们用bp抓包,发送到Repeater,go一下得到回显

发现绿色的代码是用大写字母和数字组成,应该是base32编译的这里我们补充一下base32和base64的区别

base32 只有大写字母和数字数字组成,或者后面有三个等号。
base64 只有大写字母和数字,小写字母组成,后面一般是两个等号。
明显,那段文字是base32加密。于是我们在线解密

发现解码得到的代码符合base64加密的 于是用base64在线解码

得到select*from user where username = '$name'做到这没思路了 看了大佬的wp后发现sqli的联合注入有特性:利用联合注入向数据库里写东西的原因?
答:在使用联合注入时,如果你查询的数据不存在,那么就会生成一个内容为null的虚拟数据,也就是说在联合查询并不存在的数据时,联合查询就会构造一个虚拟的数据。所以这时我们就可以在注入时添加我们需要的信息来完成我们的目的。

举个例子

这是数据库里本有的账号和密码,我们用联合查询这个技巧来看看

执行后

懂得这些原理后 我们就可以解题了

我们构造payload:

name=1' union select 0,'admin','81dc9bdb52d04dc20036dbd8313ed055'%23&pw=1234

其中81dc9bdb52d04dc20036dbd8313ed055是1234的md5值

于是抓包上传

即可得到flag

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值