转载自:https://blog.csdn.net/helloc0de/rss/list
[原]SQL注入教程——(四)宽字节注入 |
前言在mysql中,用于转义(即在字符串中的符号前加上”\”)的函数有addslashes,mysql_real_escape_string,mysql_escape_string等,还有一种情况是magic_quote_gpc,不过高版本的PHP将去除这个特性。 涉及到的基本概念
MYSQL的字符集转换过程1.MySQL Server收到请求时将请求数据从character_set_client转换为character_set_connection; 2.进行内部操作前将请求数据从character_set_connection转换为内部操作字符集,其确定方法如下:
将操作结果从内部操作字符集转换为character_set_results。 重点:宽字节注入发生的位置就是PHP发送请求到MYSQL时字符集使用character_set_client设置值进行了一次编码。 宽字节注入原理:GBK 占用两字节 ASCII占用一字节 PHP中编码为GBK,函数执行添加的是ASCII编码(添加的符号为“\”),MYSQL默认字符集是GBK等宽字节字符集。 大家都知道%df’ 被PHP转义(开启GPC、用addslashes函数,或者icov等),单引号被加上反斜杠\,变成了 %df\’,其中\的十六进制是 %5C ,那么现在 简单的宽字节注入以bugkuCTF练习平台的题目为例: 得知是以get方式通过参数 于是尝试宽字节注入: 确认是宽字节注入,进行列数测试,得知一共有两列,且1,2处都有回显: 获取当前数据库名: 根据题目构造payload: 总结: 作者:helloc0de 发表于 2017/07/27 12:03:26 原文链接 https://blog.csdn.net/helloc0de/article/details/76180190 阅读:1183 |
[原]SQL注入教程——(三)简单的注入尝试 |
本文将以简单的SQL注入实例来讲解SQL注入的基本思路与流程,当然本文实例只是注入的一种情况,初学者应重点理解思路,学会举一反三。 GET与POST进行SQL注入攻击,大家还需要了解两种基本的 HTTP 请求方法:GET 和 POST。 在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。
1.get方法特点是参数直接从URL中传递 即:在URL文件路径后加上“?”,然后附加上要传递的参数和值。 2.post方法特点是常以提交表单形式传递参数 用firebug查看两者的区别: post: post注入多为字符型注入,需要注意引号闭合。 正文本文以RedTiger’s Hackit两道简单的SQL注入为例。 1.简单的get注入第一关 URL为: 点击 是以get方式传递 看来存在数字型注入,利用 构造union联合查询语句,找回显: 且页面中有提示: 本题实现的是通过SQL注入进行获取敏感数据。 2.简单的post注入第二关 URL为 首先发现URL中并没有以get方式传参,根据题目“一个简单的登录绕过”, 此时用firebug查看可以得到如下信息: 结果成功绕过,get flag。 本题实现的是通过SQL注入实现登录绕过。 总结: SQL注入基本流程可概括如下: 作者:helloc0de 发表于 2017/07/26 13:20:47 原文链接 https://blog.csdn.net/helloc0de/article/details/76142478 阅读:4055 |
[原]SQL注入教程——(二)常用语法基础 |
本文使用的数据库为 注意:该数据表第一条数据项为id为2,username为user02,password为pass02的数据项 1.select 查询语句select是基本的查询语句,用于从数据库中查找匹配条件的数据项; select原理: 即:select语句是根据条件对比数据表中的每一条数据项,每当遇到一个条件为真时的数据项,就执行一次select后面紧跟的语句。 为什么条件为真时说是执行select语句,而不是将该条数据项插入到虚表中? e.g.-1.1 e.g.-1.2 e.g.-1.3 e.g.-1.4
思考,为什么该语句返回结果会有10条? 2.order by
常见作用: e.g.-2.1 e.g.-2.2 e.g.-2.3 3.limit
偏移量也是从0开始(和c语言数组是一个道理),数量是选取多少个数据项。 常见作用: e.g.-3.1 4.union 联合查询UNION 操作符用于合并两个或多个 SELECT 语句的结果集。 请注意,列也必须拥有相似(兼容的)的数据类型。UNION 内部的 SELECT 语句必须拥有相同数量的列,否则会报错。 e.g.-4.1 e.g.-4.2 e.g.-4.3 此处注意与 5.and和or
常见作用: 6.其他常用语法insert into 语句用于插入指定数据项 update 语句用于修改表中的数据。 DELETE 语句用于删除表中的行。
作者:helloc0de 发表于 2017/07/24 17:23:30 原文链接 https://blog.csdn.net/helloc0de/article/details/76033146 阅读:548 |
[原]SQL注入教程——(一)SQL注入原理 |
本系列文章将从SQL注入基础讲解,面向初学者,循序渐进。 前置技能
本文以假设存在的 1.什么是SQL注入所谓SQL注入,就是通过把SQL命令插入到 Web表单提交 或 URL 或 页面请求等的查询字符串中,最终达到欺骗服务器执行恶意的SQL命令。 即:将构造的SQL语句插入到正常提交的字符串中,并使服务器将字符串中的命令解析为可执行命令而不是字符串。 e.g.-1 以get方式获取参数id,基于用户输入的参数id找到相应的name,正常情况下id为1,2等,比如url为: 但当用户输入如下url时: 不仅可以得到id为1的name字段内容,还可以得到当前数据库名 e.g.-2 以post方式获取用户输入的username和password 此时数据库返回username为 由于 2.SQL注入的产生
3.SQL注入的作用
4.常见的SQL注入分类1. 数字型注入这类注入主要特点是不需要考虑引号的闭合,以 注意与e.g.-1的不同 2.字符型注入这类注入需要注意引号的闭合 ,核心源码类似如下:
SQL注入还有基于报错型SQL注入、基于布尔/时间的SQL注入、可联合查询的SQL注入等等 5.SQL注入攻击的影响范围
|
[原]由一道ISCC2018-web学习php弱类型 |
引言做了很多web题有关于PHP弱类型,而且最近正好ISCC2018也有一道PHP弱类型的题,题目不难,借此题浅析一下PHP弱类型,也作为自己的学习笔记。 题面php是世界上最好的语言 题解分析源码可知:
此题重点在于2.,则提交username任意输入,password为QNKCDZO,提交后进入下一个环节,得到源码: 可知需要提交参数a,赋值给变量 这里就要用到PHP的超全局变量 PHP弱类型比较知识点php中有两种比较的符号 == 与 ===
1.字符串“admin”与数值0比较,先将admin强制转化成数值,由于“admin”是字符串,不包含数字,所以转化结果为0,随意和数值0相等
4.”0e123456”==”0e456789”相互比较的时候,会将0e这类字符串识别为科学技术法的数字,0的无论多少次方都是零,所以相等 所以上述题目的思路就是提交password,使password字符串的MD5值强制转换后与0相等,所以password的MD5值应以0e开头,即字符串QNKCDZO 下面提供一些MD5以0e开头的字符串: |