29c3ctf web100 regexdb writeup

原文让我发在了blue-lotus队伍的站点里面了:

29c3ctf web100 regexdb writeup


不过这里也做一个留念吧~~~

Problem Link: regexdb

**Description**

Ever played Googlewhack? Well, this is a bit [easier][2] and gives you more power, enjoy.

Quote From google shared doc:

题目给的提示是googlewhack,这个的意思就是查询时仅返回一条结果。

首先经过测试,所有的输入要在--之间。  
比如:输入 -- 返回结果是 18 .

输入 - . - 返回结果是: results: 1: 29C3_NotAKey

Some useful information:

Query language analysis (Jay):

- . is single character
- * is wildcard
-  | is OR operator
-  ^ is BEGINNING OF STRING operator

Examples

** - 18 results (total in db)
*29C3* - 12 results
*^29C3* - 6 results
*.{40}* - 3 results (all results which are 40 chars long)
**!!This is a perl regular expression engine!!**

First step is to sort all the 18 result by length, use a simple script to help.

wget -q -O - --post-data="input=-$1-" "http://94.45.252.233/" | grep Results

Using the regex : ^.{$length}$ to seperate all the input data.

Then we can got almost all the wrong answers:

29C3_
Key: None
Key: 29C3_
29C3_Wrong
Hello World!
29C3_NoBadOne
29C3_____NO_____
Wrong: 29C3_Wrong
K3y: 29C3_AlsoBad
29C3_ImSimplyWrong
23 23 23 23 23 23 23 23
This one is unrelated...
Key: 29C3_AnotherOneWhichIsWrong
29C3_NotAKey <- this one is not a key
42 42 42 42 42 42 42 42 42 42 42 42 42 42
Key: 29C3_??        length 40
Key: 29C3_??        length 40

Then we know the answer is one of the last 2 key.

(after got the flag,we know that they are both the keys)

Construct the regex expression ^.{$left}[$query_set].{$right}$

Here we need $left+$right equal to 39 and find the unique $query_set,then it’s the answer.

We can simply use escape grammar to do this. It does not support [a-zA-Z] grammar,

so we have to write all the query characters.

Starts from $query="\1\2...\7f",check the result wether include character ’2′

Binary search here is a better choice.

After all above, we got the answer:

Key: 29C3_Well.This/Is#Not+The|Wrong?Key


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值