CISP-PTE靶机真题基础实训SQL注入(无法重置密码的情况一)
解题思路:
通过注册看是否能找到注入的漏洞
解题步骤:
尝试测试四步:
异常的用户+正常的文章发表内容=失败
异常的用户+异常的文章发表内容=失败
正常的用户+正常的文章发表内容=成功
正常的用户+异常的文章发表内容=失败
1、注册一个为'");-- #的账户,注册与登录都可以正常的进行
2、发现发表的地方可以写东西,尝试输入'");-- #,看一下出现情况
3、提交失败,尝试一个正常的留言,看是否正常提交成功
4、注册一个正常的用户1234,看看能否发表成功
5、发现发表成功,在文章中可以看到,再尝试发表'");-- #,失败由此可以大概判断在发表文章的这个地方是突破口
6、并且发现sql注入是与用户名字有关联的,因为文章要记录是谁发布的
7、尝试在文章内容里插入sql语句,由后往前进行闭合,已知是字符串,使用插入闭合')-- #
8、发现提交失败,分析有可能数据库中插入的数据有4个以上,此时注释掉了后面的(我们注释的是传入数据),传入的数据相互匹配不上
9、尝试','')-- #,一次次添加,直至成功。发现添加一个传入的数据成功了','')-- #
10、说明content是倒数第二个字段,
11、将title=tes1,content=test2 并且使用闭合,发现虽然执行成功,但没有回显,说明出问题的是最后一个字段,它可以控制文章内容是否显示,推测有肯定存放的用户的数据,因为发表的内容对应的是哪个用户发表的
12、将用户名添加到最后一个字段中尝试','1234')-- #
13、发表文章内容出现,验证猜想,最后一个字段存放的是用户名
14、但是content并不是一个注入点,无法控制
15、尝试title字段,看是否能注入,假设title是倒数第三个字段,一个个往上尝试(因为已知了最后两个字段一个content,一个用户名)
16、使用闭合尝试','test2','1234')-- #
17、成功,说明title是倒数第三个字段
18、看一下test2是否是注入点,改成database() // ',database(),'1234')-- #
19、成功爆出数据库名2web,接下来就是查表、列、数据
20、但发现使用查表语句失败,说明可能关键字、空格、字符串等被过滤了
21、将关键词select、from、空格这个常见的进行大小写,注释符过滤,看能否成功
22、成功获取到表users1,列username,password,数据直接出现key
如果将#,–[空]被注释掉了,如何解决这道题
(这是是由前往后找注入时,第二种方法,找到注入点后,方法是一样的)
使用后闭合(',来闭合后面的,相当于插入两段数据
title=test1','content3','1234'),('2','test2
注入点还是在content3
注释没被过滤的情况下的完整分析过程: