实验吧[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, ...
随机推荐
- Spring源码解析之基础应用(三)
组合Java配置 在XML中,我们可以使用<import/>标签,在一个XML文件中引入另一个XML文件,在Java类中,我们同样可以在一个配置类中用@Import引入另一个配置类,被引入 ...
- 【API管理 APIM】APIM中如何配置使用URL路径的方式传递参数(如由test.htm?name=xxx 变为test\xxx)
问题描述 在默认的URL传递参数中,我们使用的是https://test01.azure-api.cn/echo/resource?param1=sample¶m2=testname这 ...
- Linux-京西百花山
百花山有三个收票的入口,分别在门头沟(G109).房山(G108)和河北 108有两个方向上百花山,史家营和四马台.只有史家营方向能开车到山顶. 四马台那边,不住,要坐景区车才行 尽头是1900多米的 ...
- MySQL数据库安装后的安全设置
导语: 已经通过报的方式安装了mysql,装完之后有些安全设置必须要做. 装完以后数据库已经可以使用了,但是有安全风险. 风险在访问数据库不需要任何信息就可以访问. [10:17:02 root@C8 ...
- centos搭建离线epel源
准备 有一个联网的机器,并已经配置好epel源 安装reposync和createrepo命令 yum install yum-utils #reposync在这里 yum install creat ...
- stm32与红外遥控器(NEC协议)
1.器件简介 本次测试采用R903V1红外接收头与NEC协议的红外遥控器,接收头原理图如下: 器件的供电电压VCC在2.7V~5.5V之间,输出电压VOUT正常在0.2v ~(VCC-0.3±0.2) ...
- CSS动画菜鸡记录板
Transition 过渡属性: (background 1s linear 0s) 缓动函数 linear,在 easings.net 可找到相应的功能 若想要多次不同执行,用逗号隔开 Animat ...
- Linux配置和管理设备映射多路径multipath
(一)多路径管理软件的由来 在企业中,服务器与存储通常是分开放置的,服务器上的硬盘通常用来安装操作系统和应用软件,业务数据则是存储在单独的存储设备上,那么,服务器与存储是如何连接的呢?根据存储协议,经 ...
- Ubuntu下创建apt源
1. 下载所需安装文件 sudo apt-get install soft name 安装并保存安装文件 或者 sudo apt-get source soft name 只下载安装文件 ...
- leo101
tags: 贪心 date: 2019-4-4 jag2017autumnJ Farm Village 题面 题目链接 翻译 数轴上有 n 个村庄,每个村庄可以生产两个单位的粮食.在每个村庄生产一单位 ...