墨者学院 SQL手工注入漏洞测试(MySQL数据库-字符型)

登录平台靶靶场后会发现底部有个通知点进去之后会发现URL中带有?id这地方八成是可以注入的

 

 

 

 

 

先尝试了一下在tingjigonggao后面加'号结果发下报错了看这提示应该是sql语句错误

 

然后尝试了下加上‘ and ’1‘=’1 结果回显是正常的,加上‘ and 1=1 报错说明这里是一个字符型的注入,当然这个靶场的题目也已经提示了这次的sql注入会是一个字符型注入

 

 

 

 

接下来就是测试字段数了这里我一开始尝试’order by 1 #结果一直报错后来尝试了下把#改成%23就正常了,‘order by 4 %23的时候正常5的时候就报错了说明这个字段书是4

 

然后就可以使用联合查询来看版本号数据库名了,

一开始我直接在tingjigonggao后面加上' union select 1,version(),database(),4 %23发现返回的只有正常页面后来尝试了下发现把tingjigonggao改成1或者其他内容就能返回我们想要的数据库名了,我觉得可能是停机公告是由内容查询出来的所以直接就把标题和内容的位置占据了,把我们想让他显示出来的版本号和数据库名给盖掉了,然后换成其他人内容的话数据库里面没有相应的标题和内容所以前半段的返回相当于空,那我们后面一段的联合查询内容就不会被覆盖了;

 

 

 

 

 现在知道数据库名了接下来就是看查表名了,在查表明的时候我犯了个小错误还一直都找不到原因直到看到别人的过关方法才知道自己错在了哪里,序号1为我以一开始使用的查询语句

此粗我在回去table_name的时候没有用group_concat()所以导致我只获得了一个名为notice的表名这个明显是通知数据所在的表么,接着获取列的时候也没有我们想要的账号密码

错误sql  1.' union select 1,table_name,table_schema,4 from information_schema.tables where table_schema='mozhe_discuz_stormgroup'

正确的2.' union select 1,group_concat(table_name),table_schema,4 from information_schema.tables where table_schema='mozhe_discuz_stormgroup'

在加了group_concat()之后所有的表名就都显示出来了,很明显stormgroup_member这张表才是存放登录用户名和密码的表

 

 

 

 

接下来我们来获取stormgroup_member表中的列名' union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name='stormgroup_member' %23

此处得知表中用户名和密码的列名分别为name和password

 

 

接下来就是获取这张表中name咧和password列的所有数据了' union select 1,group_concat(name),group_concat(password),4 from stormgroup_member %23

 

 这里发下那他有两个一样的账号和两串不同的md5码我们对md5码分别解码然后尝试登录,发下你第一个密码显示的是账号被禁用或密码错误只有第二个密码是可以正常登录的,正常登陆后就能找的key了

 

posted @ 2020-07-26 18:43  WL安逸  阅读(696)  评论(2编辑  收藏  举报