实验吧[WEB]——程序逻辑问题
拿到题 通过查看网页源代码发现index.txt

通过index.txt我们获得了后端的源代码

我们可以通过我画出来的这两个重要的信息得知 第一个sql查询语句没有任何过滤说明存在SQL注入漏洞。
第二个我画出的代码就是我们要获得flag的核心
if (($row[pw]) && (!strcasecmp($pass, $row[pw]))) {
echo "<p>Logged in! Key:************** </p>";
}
这块代码的意思是 首先从数据库中提取出pw 然后逻辑与 与右边的(!strcasecmp($pass, $row[pw])) 两条语句都为真才会打印出flag
我们先看右边的这块strcasecmp是什么
strcasecmp() 函数比较两个字符串。
提示:strcasecmp() 函数是二进制安全的,且不区分大小写。
语法:
strcasecmp(string1,string2)
|
参数 |
描述 |
|
string1 |
必需。规定要比较的第一个字符串。 |
|
string2 |
必需。规定要比较的第二个字符串。 |
|
返回值: |
该函数返回:
|
所以这段(!strcasecmp($pass, $row[pw])) 是要从数据库中提取出 与我们用户输入的作比较且都是经过cmd5加密的数据 可以看源代码第16行 作比较必须相等才为0 然后!取反 这段代码的运行结果返回1 与左边的($row[pw])它是有数据就返回1 所以两者条件必须都为1或者才能打印出flag 可是数据库里面的值我们不知道 所以我们想办法构造注入语法让他满足条件。
‘
我们可以先看一个mysql查询的特性

这是我们admin表中的仅有数据 我们现在想查一个密码为xiaohua经过md5加密的
ee755bdd4adb8ac6270ef476fefab245这个是xiaohua的cmd5密文 可是数据库里面没有这个怎么办我们来构造

我们根据它的特性构造一个联合查询 这样第一条语句查询dsfd 这个用户查不到 然后第二个根据特性会返回这个结果到password字段下
select password from admin where username="dsfd" union select" ee755bdd4adb8ac6270ef476fefab245";


成功返回xiaohua md5的密文
所以我们回到我们的题

我们只关注右边红线这部分,从数据库提取不存在的值我们可以通过下方sql语句构造得到

然后$pass这块我们要输入和加密md5一样的值也就是xiaohua 这样一来 他们的条件就成立了 就能获得flag了

下来就要用到我们的注入手法

成功获得flag

也可以这样构造 方便
username:username' union select md5(1)#
password:1
引用: https://blog.csdn.net/dongyanwen6036/article/details/77768345
` https://blog.csdn.net/he_and/article/details/77618429
后记 其实这个题很简单就是对SQL语法技巧不太熟。忍不住看了WP
要继续加油啊!
实验吧[WEB]——程序逻辑问题的更多相关文章
- 实验吧_程序逻辑问题(代码审计)&上传绕过
一开始我先随便输入了几个账号名字进行测试,发现当输入的账号名为admin时会发生报错 经过测试果然是一个注入点 当拿到admin密码后发现根本没用,没办法另寻他路 审查元素时发现提示index.txt ...
- Java Web安全之程序逻辑缺陷
Java Web程序逻辑缺陷本质是由于程序设计和开发者设计的程序执行逻辑存在某种缺陷而导致的安全隐患.企业的代码审查和渗透测试通常主要针对的大多是诸如xss攻击和sql注入和跨站点脚本这些头条式漏洞, ...
- 一步一步实现web程序信息管理系统之三----登陆业务逻辑实现(验证码功能+参数获取)
本篇紧接着上一篇文章[一步一步实现web程序信息管理系统之二----后台框架实现跳转登陆页面] 验证码功能 一般验证码功能实现方式为,前端界面访问一个url请求,后端服务代码生成一个图片流返回至浏览器 ...
- 【实验吧】guess next session&&FALSE&&NSCTF web200&&程序逻辑问题
guess next session源码: <?php session_start(); if (isset ($_GET['password'])) { if ($_GET['passwo ...
- CTF---Web入门第十二题 程序逻辑问题
程序逻辑问题分值:20 来源: 实验吧 难度:中 参与人数:6909人 Get Flag:1993人 答题人数:2070人 解题通过率:96% 绕过 解题链接: http://ctf5.shiyanb ...
- 2017-2018-2 20155225《网络对抗技术》实验九 Web安全基础
2017-2018-2 20155225<网络对抗技术>实验九 Web安全基础 WebGoat 1.String SQL Injection 题目是想办法得到数据库所有人的信用卡号,用Sm ...
- Web程序的运行原理及流程(二)
其实WEB服务器和WEB应用服务器这两个概念特别容易混淆 可以理解为装了不同软件(服务)的两台计算机(服务器)吧 先对两个概念做一个简单介绍 了解了基本的概念 我们再用两个典型的例子做一下比较(建立 ...
- SSM框架Web程序的流程(Spring SpringMVC Mybatis)
SSM框架的Web程序主要用到了三个技术: Spring:用到了注解和自动装配,就是Spring的两个精髓IOC(反向控制)和 AOP(面向切面编程). SpringMVC:用到了MVC模型,将逻辑代 ...
- 发布在IIS上的Web程序,调用服务器的COM组件
场景大致是这样的,在工厂中分布着许多的PDA点,这些PDA点都要进行实时的扫描--打印操作.实现方法是采用网络打印机,然后服务器安装驱动,管理着所有的打印机.然后服务器,发布一个WebService, ...
随机推荐
- 第二十四章 Find命令详细介绍
一.Find 概述 可以根据文件的名称.文件大小.文件的修改时间.文件的类型.文件的权限.文件的属主属组.文件的目录层级进行查找 Find的语法: find [-H] [-L] [-P] [-Olev ...
- 如何使用FastCGI处理自定义HTTP头
对于如何使用FastCGI处理自定义HTTP头这里记录一下注意事项: 在FastCGI中,自定义头可以从环境变量获得: 获取时名字前面要加HTTP_,字母要全部大写: 发送头不能有下划线_,否则该字段 ...
- 结对项目的PS表格
PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 60 80 Estimate 估计这个任务需要多少时间 10 ...
- svg 进度条
先看理想效果 先上代码,在进行解释 <div id="app"> <svg width="230" height="230" ...
- 容器之间通讯方式\与pod关系
1.概述 k8s里面容器是存在于pod里面的,所以容器之间通讯,一般分为三种类型:1. pod内部容器之间 2. pod 与 pod 容器之间 3. pod 访问service服务 (1) pod内部 ...
- logback日志打印sql
今天整合springboot2 + mybatis + logback 遇到了在日志中sql打印不出来的坑,在网上找了好久,都不是我遇到的问题,这里吐槽一下下现在的博客质量,好多都是抄袭的,也没有标注 ...
- 5.MVCC
5 MVCC 全称是Multi-Version Concurrent Control,即多版本并发控制,在MVCC协议下,每个读操作会看到一个一致性的snapshot,并且可以实现非阻塞的读.MV ...
- java联系人管理系统简单设计
本文实例为大家分享了java联系人管理系统毕业设计,供大家参考,具体内容如下 要求: 请使用XML保存数据,完成一个联系人管理系统. 用户必须经过认证登录后方可以使用系统. 注册 ...
- Prometheus监控告警浅析
前言 最近有个新项目需要搞一套完整的监控告警系统,我们使用了开源监控告警系统Prometheus:其功能强大,可以很方便对其进行扩展,并且可以安装和使用简单:本文首先介绍Prometheus的整个监控 ...
- canvas基础[二]教你编写贝塞尔曲线工具
贝塞尔曲线 bezierCurveTo 在线工具 https://canvature.appspot.com/ [感觉这个好用一些] https://blogs.sitepointstatic.com ...