zoukankan      html  css  js  c++  java
  • BUUCTF-[GXYCTF2019]BabySQli 1详解

    babysqli 注入题,打开一个简易的登录框,觉得出题人好像不是个完美主义者,登录框做的很烂,但是我是个弟弟,还是要说出题人牛逼

    好了,废话不多说,我们填写账号密码,先用

    username:admin

    password:admin

    告诉我,wrong pass!

    然后我们再试试万能密码,

    username:admin' or '1'='1'#

    password:随意填

    然后告诉我do not hack me!

    我索性看了下源码,里面有一段数据被注释了,看似base32,等我们base32解码出来,再来个base64解码

    select * from user where username = '$name'

    得到了这个sql语句,意思是我们需要传入个name变量,然后我们构造payload,因为我们需要post传参,于是我们采用bp抓包

     我们如果给name的值不是admin,然后提示错误,wrong user!

    传admin,提示wrong pass!

    我们把admin 放到第二个位置 不报错

     这样我们就得到第二个字段就是我们的username字段

    紧接着下一步,我也不太会于是就看了大佬博客说有md5提示,我也没发现,

    于是盲从后台登录逻辑

    <?php$row;
    $pass=$_POST['pw'];
    if($row['username']==’admin’){
    if($row['password']==md5($pass)){ 
    echo $flag; 
    }else{ echo “wrong pass!”; 
    }}
    else{ echo “wrong user!”;}
    

      在执行password框中的内容等于md5(框中的内容),如果相等则密码正确,于是我们构造吧

    password:adc

    md5(adc):225e8a3fe20e95f6cd9b9e10bfe5eb69

    于是构造payload:name=1' union select 1,2,'225e8a3fe20e95f6cd9b9e10bfe5eb69'#&pw=adc

    因为有md5我想到了md5不能处理数组,如果是数组则会返回NULL

    构造payload:name=ad' union select 1,'admin',NULL#&pw[]=123

    也可返回flag。 抓包改包就完事。

    得到flag

     参考链接

  • 相关阅读:
    蓝桥网试题 java 基础练习 特殊的数字
    蓝桥网试题 java 基础练习 杨辉三角形
    蓝桥网试题 java 基础练习 查找整数
    蓝桥网试题 java 基础练习 数列特征
    蓝桥网试题 java 基础练习 字母图形
    蓝桥网试题 java 基础练习 01字串
    蓝桥网试题 java 基础练习 回文数
    蓝桥网试题 java 基础练习 特殊回文数
    Using text search in Web page with Sikuli
    each of which 用法
  • 原文地址:https://www.cnblogs.com/junlebao/p/13859371.html
Copyright © 2011-2022 走看看