Training: MySQL I
原题链接:http://www.wechall.net/challenge/training/mysql/auth_bypass1/index.php

题目告诉我们这是一个经典的mysql注入挑战,我们的任务很简单,就是用admin登录,而且你被给了源码,而且有高亮版本
我们点击source code和highlighted version两个超链接就可以分别看到两个版本(普通与高亮,其实代码都一样,只不过看你喜欢哪个,我觉得高亮要方便阅读一点)
首先是表格结构的注释:users表分三个列,userid,username,password,id和username不用管,主要的是password,因为题目已经告诉我们username就是admin,根据注释password是32位的char类型,ascii类型显示,不能为空

然后是username和password的传递:判断用户名和密码是否已经发送给服务器,其中的Common::getPostString是调用已有函数,功能为从表单中获取字符串信息;auth1_onLogin为下边的自定义函数,功能为验证用户名和密码

然后又是一堆的代码,再是一个提示我们利用的代码。这是一个js函数声明。,数据库通过ayth1_db()函数链接,password通过md5加密,然后是一个username和password的连接函数。这部分就是之前提到的自定义函数,用来处理表单提交的数据。函数与表单之间通过参数“username”和“password”传递数据,这里只需要知道从html表单中输入的username和password就可以代入到这里的query中。接着result=result=db->queryFirst($query)处理MySQL语句并且将结果返回给result,如果查询结果不是false,说明结果存在。$result[‘username’]) === ‘admin’判断用户是否是admin,如果是说明管理员登录,完成登陆过程。

读到这里基本上解题方法就出来了,我们主要的注入句是

一条很简单的MYSQL语句,我们知道username是admin但是我们不知道password
所以我们直接输入正确的username然后注释掉后面的password判断,构造payload:admin’#
#的作用是注释掉后面的内容,所以我们就构造了query的语句为
$query = "SELECT * FROM users WHERE username='admin'#' AND password='$password'";
形成SELECT * FROM users WHERE username='admin'
所以这个问题就解决了
Training: MySQL I的更多相关文章
- [WeChall] Training: MySQL I (MySQL, Exploit, Training)
Training: MySQL I (MySQL, Exploit, Training) MySQL Authentication Bypass - The classic This one is t ...
- Training: MySQL I (MySQL, Exploit, Training)
题目链接:http://www.wechall.net/challenge/training/mysql/auth_bypass1/index.php?highlight=christmas 的确是非 ...
- MYSQL Training: MySQL I
让以admin身份登录.源代码: 非常easy的注入 在username输入 admin' OR '1'='1 OK.
- 0x01 Wechall writeup
目录 0x01 Wechall writeup Limited Access Training: Crypto - Caesar II Impossible n'est pas français Tr ...
- 0x00 Wechall writeup
目录 0x00 Wechall writeup Training: Get Sourced Training: ASCII Encodings: URL Training: Stegano I Tra ...
- MySQL SQL Training
源于知乎:50道SQL练习题 一.表数据 1.学生表——Student ),Sname ),Sage )); ' , '赵雷' , '1990-01-01' , '男'); ' , '钱电' , '1 ...
- 数据库学习之MySQL进阶
数据库进阶 一.视图 数据库视图是虚拟表或逻辑 ...
- 在linux上安装MySQL数据库,并简单设置用户密码,登录MySQL
在新装的Centos系统上安装MySQL数据库. <p><a href="http://www.cnblogs.com/tijun/">提君博客原创< ...
- 涂抹mysql笔记-mysql管理工具
五花八门的mysql管理工具<>mysql提供的命令行工具 mysql_install_db:mysql建库工具,在源码安装mysql环节我们使用过. mysql_safe:mysql启动 ...
- [Spark][Python]Spark 访问 mysql , 生成 dataframe 的例子:
[Spark][Python]Spark 访问 mysql , 生成 dataframe 的例子: mydf001=sqlContext.read.format("jdbc").o ...
随机推荐
- 【SQLServer】并行的保留线程和已使用线程
我们都知道SQL Server的并行执行.为了快速处理一个请求,SQL Server会使用多个线程来处理一个请求.并行执行涉及两个重要的参数设置:·maxdop:最大并行度·并行度的成本阈值:如果任何 ...
- SpringBoot使用libreoffice转换PDF
1.简介 有时候我们需要在程序中使用到office的转换和预览功能,本文就针对这个需求记录了较为简单的office转换和功能:jodconverter.当然也有aspose和其他开源第三方(kkfil ...
- js之页面列表加载常用方法总结
导语:最近由于一些事情需要处理,所以没来得及写技术总结了.今天终于可以坐下来好好的梳理一下脉络,说一下那个在日常前端开发过程中,常用到的页面列表加载的方法总结.这里介绍三种方法,分别是分页加载.按钮加 ...
- 绕过CDN获取服务器真实IP地址
相关视频链接:(https://blog.sechelper.com/20220914/penetration-testing-guide/cdn-bypass) CDN(Content Delive ...
- python基础__十大经典排序算法
用Python实现十大经典排序算法! 排序算法是<数据结构与算法>中最基本的算法之一.排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大, ...
- 第六章:Django 综合篇 - 14:Django 日志
Django使用Python内置的logging模块实现它自己的日志系统. 如果你没有使用过logging模块,请参考Python教程中的相关章节. 直达链接<logging模块详解>. ...
- 第四章:Django表单 - 3:Django表单字段汇总
Field.clean(value)[source] 虽然表单字段的Field类主要使用在Form类中,但也可以直接实例化它们来使用,以便更好地了解它们是如何工作的.每个Field的实例都有一个cle ...
- Keepalived设置master故障恢复后不重新抢回VIP
(1).master配置 ! Configuration File for keepalived global_defs { router_id lb01 } vrrp_script check_ng ...
- PAT (Basic Level) Practice 1033 旧键盘打字 分数 20
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及坏掉的那些键,打出的结果文字会是怎样? 输入格式: 输入在 2 行中分别给出坏掉的那些键.以及应该输入 ...
- input 禁用历史下拉框
autocomplete="off" 用法:<input id="inp1" autocomplete="off" />