题目链接
打开链接可以发现,是一个公告栏,可以自己提交标题和内容,然后会在网页上显示出来。
网页源代码肯定啥也没有,抓包也是没有有用的信息,我们考虑flag在服务器的数据库内,所以我们就想到用sql注入。那么数据库的信息会显示在哪儿呢?那就是我们提交的标题内容显示的地方,我们先随便提交一些数据,比如标题为12,内容为34。提交后,查看信息,我们通过网址来进行注入。
首先我们有用的一个尝试:

https://hackme.inndy.tw/gb/?mod=read&id=-1 union select 1,2,3,4#

关于这个语句我们有很多值得注意的点。(方便萌新理解,所以会说得更详细一些)
首先是union select,这个语句是用来合并两个搜索,即将两个select的结果放在同一个表内。这就有一个要求,两个结果的列数要是相同,如果不相同会报错。
第二点,#是什么?这是mysql的单行注释,把后面的语句注释掉,消除后面语句的影响。
第三点,我们知道select后面一般加列名,表示我们需要哪一列的信息,那么这里的1234是什么?这就是select的一个特殊用法,这样返回的是一个如下的表:

1 2 3 4
1 2 3 4

列名是1234,内容也是对应的数字。
那么我们这里最大的用处就是试探前面一个select的列数以及回显的位置。
什么意思?
正如前述,如果前后的结果列数不同,是会出错的。所以我们这里并不是直接就写1,2,3,4,其实是尝试1、1,2、1,2,3后得到的结果,所以我之前也是说这是一个有用的尝试,就是示意我略过了这个过程。
那么确定回显的位置又是什么意思?
因为我们要想获取flag,必须要让flag显示在客户端,那么我们就得知道1,2,3,4分别会显示在页面的那个位置,或者说哪个位置会显示。
而这也蕴含第四点,为什么id=-1?因为id=-1时,前面的结果肯定是空,因为id通常是大于0,所以这样我们返回的结果就是如下的结果:

1 2 3 4
1 2 3 4

这样就可以确保网页上显示我们的数字。
关于这一点我们就说这么多,如果有不理解的可以继续向下看。
我们得到的结果可以发现,1不显示,2是标题,3是内容,4是时间。也就是说我们可以利用2,3,4去回显信息。我们以2为例。
输入如下的url:

https://hackme.inndy.tw/gb/?mod=read&id=-1 union select 1,database(),3,4#

我们这里用database()代替了2,database()是用来显示数据库名称的函数,代替了2以后,该url返回的结果中,标题的位置,即原来2的位置,会显示数据库名称,我们看到是g8.
接下来就用类似的方法依次查询我们需要的信息:

https://hackme.inndy.tw/gb/?mod=read&id=-1 union select 1,(select table_name from information_schema.tables where table_schema=database() limit 0,1),3,4#

这个语句是查询表的名字,可以得到是flag。
值得解释的是这里的limit,这也只是一个尝试,limit后的第二个数字表示要返回几个数据,而第一个数字是偏移量,表示要从第几行开始查找,这也是需要尝试,只不过这里凑巧,第一个就是我们需要的。
接下来就不一样了,一个有用的尝试:

https://hackme.inndy.tw/gb/?mod=read&id=-1 union select 1,(select column_name from information_schema.columns where table_name='flag' limit 1,1),3,4#

此处我们就是偏移量为1时才是我们需要的列,名字是flag
最后查询flag即可:

https://hackme.inndy.tw/gb/?mod=read&id=-1 union select 1,(select flag from flag limit 1,1),3,4#

这样我们就可以获取flag了。
一个类似的练习题:
Login as admin 0.1
这一题是获取数据库里的flag,方法类似。该题的题解会写得简略一些。

guestbook(hackme web部分writeup)相关推荐

  1. 2022 lineCTF WEB复现WriteUp

    lineCTF WEB复现WriteUp Gotm is_admin == true就给flag,需要伪造token,需要秘钥才行 再往下看,经典SSTI 如果能控制acc也就是id为{{.}},就能 ...

  2. i春秋2020新春公益赛WEB复现Writeup

    i春秋2020新春公益赛WEB复现Writeup 说实话这个比赛打的我是一点毛病都没有,还是觉得自己掌握的东西太少了,,, 尤其是sql注入,都被大佬们玩出花来了,可能自己太菜,,,哭了!!! 关于S ...

  3. XCTF攻防世界Web之WriteUp

    XCTF攻防世界Web之WriteUp 0x00 准备 [内容] 在xctf官网注册账号,即可食用. [目录] 目录 0x01 view-source2 0x02 get post3 0x03 rob ...

  4. CGCTF平台web题writeup

    前言 大概的做了做CGCTF的web题,基本都做出来了,在这整理了一下writeup,其中一些十分简单的题,就大概的写了些,后面一些难题会更详细,需要的可以直接拉倒最后面.共勉. 正文 签到题 10p ...

  5. 2019年CTF4月比赛记录(三):SUSCTF 2nd、DDCTF、国赛线上初赛部分Web题目writeup与复现

    四月中旬以来事情还是蛮多的,先捋一捋: 首先有幸参加了东南大学承办的SUSCTF 2nd,虽然比赛的规模不是很大,但是这也是第一次以小组的方式正式参加比赛,也是对前期学习成果的检验.在同组成员的努(带 ...

  6. 论剑场 web部分 writeup

    文章目录 一,python 日志审计 web2 web11 web13 web20 二,SQL注入 web18 三,其他 web1 web 3 web6 一,python 日志审计 import re ...

  7. 第三届广东省强网杯网络安全大赛WEB题writeup

    1. 小明又被拒绝了 直接访问根目录,报403错误 一般是做了ip限制,加上 X-Forwarded-For 头即可绕过 接着又提示不是管理员,仔细看响应头的 Set-Cookie ,有个 admin ...

  8. [Geek Challenge 2022]Web部分 writeup by q1jun

    0x01 题目:登入试试 GeekChallengeUser ~ % ./登录试试=== challenge info === type: web points: 50 description: ht ...

  9. 南邮ctf nctf CG-CTF web题writeup

    目录 **CG-CTF链接:** 0x01 签到题 0x02 md5 collision 0x03 签到2 0x04 这题不是WEB 0x05 层层递进 0x06 AAencode 0x07 单身二十 ...

最新文章

  1. c# 访问hbase_大数据技术 windows下C#通过Thrift操作HBase
  2. Oracle原理: 行级锁和表级锁
  3. ARM Linux启动过程分析
  4. ASP.NET Core 中的那些认证中间件及一些重要知识点
  5. 关闭浏览器前提示_win7系统ie总弹出查看和跟踪下载的关闭方法
  6. 【09】Nginx:静态压缩 / 日志切割 / 防盗链 /恶意解析/ 跨域
  7. DIY远程控制开关(tiny6410+LED+yeelink+curl)
  8. android.content.SharedPreferences.edit()
  9. Eclipse手动添加dtd文件使xml能自动提示
  10. UbuntuSkills
  11. 大厂首发:springcloud菜鸟教程
  12. VB的阶乘和伽马函数
  13. JAVA字符串排序去重
  14. c语言单循环赛制,循环赛日程安排问题(分治法)
  15. 编写myqq即时聊天脚本,实现相互通信(UDP)
  16. 多项式的乘法满足结合律和交换律
  17. TensorFlow Serving Architecture
  18. 服务器cpu型号知识普及,小白进阶教程 十个问题看懂CPU该如何选
  19. VCSA6.7移除添加vSAN磁盘组
  20. 熵、联和熵与条件熵、交叉熵与相对熵是什么呢?来这里有详细解读!

热门文章

  1. 有一堆袜子,如何用最快速高效的算法来给袜子配对?
  2. FreeNAS安装部署和使用
  3. 大规模机器学习的运用-实践之谈
  4. Centos7修改时间
  5. 爱情呼叫转移-深度广度遍历合集
  6. c语言中水仙花数的代码,水仙花数c语言实现代码
  7. 【Python爬虫案例】全套爬虫案例+数据可视化项目汇总零基础入门全套爬虫案例-案例三
  8. 写好SCI论文的语言技巧 之 学术英语的表达 Academic English
  9. git grep 全字匹配_git grep命令用法
  10. Java 位运算符详解