ronin-code-sql 2.0.0.beta1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +1 -0
- data/.yardopts +1 -1
- data/README.md +5 -4
- data/gemspec.yml +3 -3
- data/lib/ronin/code/sql/binary_expr.rb +1 -1
- data/lib/ronin/code/sql/clause.rb +1 -1
- data/lib/ronin/code/sql/clauses.rb +1 -1
- data/lib/ronin/code/sql/emittable.rb +1 -1
- data/lib/ronin/code/sql/emitter.rb +1 -1
- data/lib/ronin/code/sql/field.rb +2 -2
- data/lib/ronin/code/sql/fields.rb +1 -1
- data/lib/ronin/code/sql/function.rb +1 -1
- data/lib/ronin/code/sql/functions.rb +1 -1
- data/lib/ronin/code/sql/injection.rb +1 -1
- data/lib/ronin/code/sql/injection_expr.rb +1 -1
- data/lib/ronin/code/sql/literal.rb +1 -1
- data/lib/ronin/code/sql/literals.rb +1 -1
- data/lib/ronin/code/sql/operators.rb +1 -1
- data/lib/ronin/code/sql/statement.rb +1 -1
- data/lib/ronin/code/sql/statement_list.rb +1 -1
- data/lib/ronin/code/sql/statements.rb +1 -1
- data/lib/ronin/code/sql/unary_expr.rb +1 -1
- data/lib/ronin/code/sql/version.rb +2 -2
- data/lib/ronin/code/sql.rb +1 -1
- data/ronin-code-sql.gemspec +2 -1
- metadata +7 -51
- data/spec/spec_helper.rb +0 -3
- data/spec/sql/binary_expr_examples.rb +0 -25
- data/spec/sql/binary_expr_spec.rb +0 -5
- data/spec/sql/clause_examples.rb +0 -43
- data/spec/sql/clause_spec.rb +0 -31
- data/spec/sql/clauses_spec.rb +0 -47
- data/spec/sql/emittable_spec.rb +0 -41
- data/spec/sql/emitter_spec.rb +0 -533
- data/spec/sql/field_spec.rb +0 -103
- data/spec/sql/fields_spec.rb +0 -40
- data/spec/sql/function_examples.rb +0 -30
- data/spec/sql/function_spec.rb +0 -25
- data/spec/sql/functions_spec.rb +0 -113
- data/spec/sql/injection_expr_spec.rb +0 -98
- data/spec/sql/injection_spec.rb +0 -172
- data/spec/sql/literal_spec.rb +0 -5
- data/spec/sql/literals_spec.rb +0 -46
- data/spec/sql/operators_spec.rb +0 -44
- data/spec/sql/statement_examples.rb +0 -39
- data/spec/sql/statement_list_spec.rb +0 -48
- data/spec/sql/statement_spec.rb +0 -38
- data/spec/sql/statements_spec.rb +0 -22
- data/spec/sql/unary_expr_examples.rb +0 -20
- data/spec/sql/unary_expr_spec.rb +0 -5
- data/spec/sql_spec.rb +0 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bebb1935967905988d415c412fa1a88b3e8785da8ec9c22cfcd9e9a9ec4a7a34
|
4
|
+
data.tar.gz: dd91249093d87d6d351fd4f4a766010e053ed780b419e5e370395e5d168a1d1f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: efdbd2b72acd2d75865109d0b803c5a65681085c7fd76cef7c630da3fade71326aa982328cf0ec2dc30ca4e4929f3a52b767872405dc1584246629da1f94ccc3
|
7
|
+
data.tar.gz: c8fec6e491e0cea640b18ea4be2d4ff479e679f15eaddaafbbc07b17b28fe1c8a3a32b96243237f2904850dae3397bcc8c4a3ed45b5fb3c109a0dd28a4104b3f
|
data/.github/workflows/ruby.yml
CHANGED
data/.yardopts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
--markup markdown --title 'Ronin
|
1
|
+
--markup markdown --title 'Ronin::Code::SQL Documentation' --protected
|
data/README.md
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
[](https://github.com/ronin-rb/ronin-code-sql/actions/workflows/ruby.yml)
|
4
4
|
[](https://codeclimate.com/github/ronin-rb/ronin-code-sql)
|
5
|
+
[](https://badge.fury.io/rb/ronin-code-sql)
|
5
6
|
|
6
7
|
* [Source](https://github.com/ronin-rb/ronin-code-sql)
|
7
8
|
* [Issues](https://github.com/ronin-rb/ronin-code-sql/issues)
|
@@ -121,13 +122,13 @@ puts sqli
|
|
121
122
|
# 1 AND (SELECT COUNT(*) FROM users)=1
|
122
123
|
```
|
123
124
|
|
124
|
-
Create errors by using non-
|
125
|
+
Create errors by using non-existent tables:
|
125
126
|
|
126
127
|
```ruby
|
127
128
|
sqli = Ronin::Code::SQL::Injection.new(escape: :string)
|
128
|
-
sqli.and {
|
129
|
+
sqli.and { non_existent_table == '1' }
|
129
130
|
puts sqli
|
130
|
-
# 1' AND
|
131
|
+
# 1' AND non_existent_table='1
|
131
132
|
```
|
132
133
|
|
133
134
|
Dumping all values of a column:
|
@@ -191,7 +192,7 @@ $ gem install ronin-code-sql
|
|
191
192
|
|
192
193
|
ronin-code-sql - A Ruby DSL for crafting SQL Injections.
|
193
194
|
|
194
|
-
Copyright (c) 2007-
|
195
|
+
Copyright (c) 2007-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
|
195
196
|
|
196
197
|
ronin-code-sql is free software: you can redistribute it and/or modify
|
197
198
|
it under the terms of the GNU Lesser General Public License as published
|
data/gemspec.yml
CHANGED
@@ -10,16 +10,16 @@ homepage: https://github.com/ronin-rb/ronin-code-sql#readme
|
|
10
10
|
has_yard: true
|
11
11
|
|
12
12
|
metadata:
|
13
|
-
documentation_uri: https://
|
13
|
+
documentation_uri: https://ronin-rb.dev/docs/ronin-code-sql
|
14
14
|
source_code_uri: https://github.com/ronin-rb/ronin-code-sql
|
15
15
|
bug_tracker_uri: https://github.com/ronin-rb/ronin-code-sql/issues
|
16
|
-
changelog_uri: https://github.com/ronin-rb/ronin-code-sql/blob/
|
16
|
+
changelog_uri: https://github.com/ronin-rb/ronin-code-sql/blob/main/ChangeLog.md
|
17
17
|
rubygems_mfa_required: 'true'
|
18
18
|
|
19
19
|
required_ruby_version: ">= 3.0.0"
|
20
20
|
|
21
21
|
dependencies:
|
22
|
-
ronin-support: ~> 1.0
|
22
|
+
ronin-support: ~> 1.0
|
23
23
|
|
24
24
|
development_dependencies:
|
25
25
|
bundler: ~> 2.0
|
@@ -2,7 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# ronin-code-sql - A Ruby DSL for crafting SQL Injections.
|
4
4
|
#
|
5
|
-
# Copyright (c) 2007-
|
5
|
+
# Copyright (c) 2007-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
|
6
6
|
#
|
7
7
|
# ronin-code-sql is free software: you can redistribute it and/or modify
|
8
8
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -2,7 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# ronin-code-sql - A Ruby DSL for crafting SQL Injections.
|
4
4
|
#
|
5
|
-
# Copyright (c) 2007-
|
5
|
+
# Copyright (c) 2007-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
|
6
6
|
#
|
7
7
|
# ronin-code-sql is free software: you can redistribute it and/or modify
|
8
8
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -2,7 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# ronin-code-sql - A Ruby DSL for crafting SQL Injections.
|
4
4
|
#
|
5
|
-
# Copyright (c) 2007-
|
5
|
+
# Copyright (c) 2007-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
|
6
6
|
#
|
7
7
|
# ronin-code-sql is free software: you can redistribute it and/or modify
|
8
8
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -2,7 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# ronin-code-sql - A Ruby DSL for crafting SQL Injections.
|
4
4
|
#
|
5
|
-
# Copyright (c) 2007-
|
5
|
+
# Copyright (c) 2007-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
|
6
6
|
#
|
7
7
|
# ronin-code-sql is free software: you can redistribute it and/or modify
|
8
8
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -2,7 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# ronin-code-sql - A Ruby DSL for crafting SQL Injections.
|
4
4
|
#
|
5
|
-
# Copyright (c) 2007-
|
5
|
+
# Copyright (c) 2007-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
|
6
6
|
#
|
7
7
|
# ronin-code-sql is free software: you can redistribute it and/or modify
|
8
8
|
# it under the terms of the GNU Lesser General Public License as published
|
data/lib/ronin/code/sql/field.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# ronin-code-sql - A Ruby DSL for crafting SQL Injections.
|
4
4
|
#
|
5
|
-
# Copyright (c) 2007-
|
5
|
+
# Copyright (c) 2007-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
|
6
6
|
#
|
7
7
|
# ronin-code-sql is free software: you can redistribute it and/or modify
|
8
8
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -75,7 +75,7 @@ module Ronin
|
|
75
75
|
# The sub-field name.
|
76
76
|
#
|
77
77
|
# @param [Array] arguments
|
78
|
-
# Additional
|
78
|
+
# Additional method arguments.
|
79
79
|
#
|
80
80
|
# @return [Field]
|
81
81
|
# The sub-field for the given name.
|
@@ -2,7 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# ronin-code-sql - A Ruby DSL for crafting SQL Injections.
|
4
4
|
#
|
5
|
-
# Copyright (c) 2007-
|
5
|
+
# Copyright (c) 2007-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
|
6
6
|
#
|
7
7
|
# ronin-code-sql is free software: you can redistribute it and/or modify
|
8
8
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -2,7 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# ronin-code-sql - A Ruby DSL for crafting SQL Injections.
|
4
4
|
#
|
5
|
-
# Copyright (c) 2007-
|
5
|
+
# Copyright (c) 2007-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
|
6
6
|
#
|
7
7
|
# ronin-code-sql is free software: you can redistribute it and/or modify
|
8
8
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -2,7 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# ronin-code-sql - A Ruby DSL for crafting SQL Injections.
|
4
4
|
#
|
5
|
-
# Copyright (c) 2007-
|
5
|
+
# Copyright (c) 2007-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
|
6
6
|
#
|
7
7
|
# ronin-code-sql is free software: you can redistribute it and/or modify
|
8
8
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -2,7 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# ronin-code-sql - A Ruby DSL for crafting SQL Injections.
|
4
4
|
#
|
5
|
-
# Copyright (c) 2007-
|
5
|
+
# Copyright (c) 2007-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
|
6
6
|
#
|
7
7
|
# ronin-code-sql is free software: you can redistribute it and/or modify
|
8
8
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -2,7 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# ronin-code-sql - A Ruby DSL for crafting SQL Injections.
|
4
4
|
#
|
5
|
-
# Copyright (c) 2007-
|
5
|
+
# Copyright (c) 2007-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
|
6
6
|
#
|
7
7
|
# ronin-code-sql is free software: you can redistribute it and/or modify
|
8
8
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -2,7 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# ronin-code-sql - A Ruby DSL for crafting SQL Injections.
|
4
4
|
#
|
5
|
-
# Copyright (c) 2007-
|
5
|
+
# Copyright (c) 2007-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
|
6
6
|
#
|
7
7
|
# ronin-code-sql is free software: you can redistribute it and/or modify
|
8
8
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -2,7 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# ronin-code-sql - A Ruby DSL for crafting SQL Injections.
|
4
4
|
#
|
5
|
-
# Copyright (c) 2007-
|
5
|
+
# Copyright (c) 2007-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
|
6
6
|
#
|
7
7
|
# ronin-code-sql is free software: you can redistribute it and/or modify
|
8
8
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -2,7 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# ronin-code-sql - A Ruby DSL for crafting SQL Injections.
|
4
4
|
#
|
5
|
-
# Copyright (c) 2007-
|
5
|
+
# Copyright (c) 2007-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
|
6
6
|
#
|
7
7
|
# ronin-code-sql is free software: you can redistribute it and/or modify
|
8
8
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -2,7 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# ronin-code-sql - A Ruby DSL for crafting SQL Injections.
|
4
4
|
#
|
5
|
-
# Copyright (c) 2007-
|
5
|
+
# Copyright (c) 2007-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
|
6
6
|
#
|
7
7
|
# ronin-code-sql is free software: you can redistribute it and/or modify
|
8
8
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -2,7 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# ronin-code-sql - A Ruby DSL for crafting SQL Injections.
|
4
4
|
#
|
5
|
-
# Copyright (c) 2007-
|
5
|
+
# Copyright (c) 2007-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
|
6
6
|
#
|
7
7
|
# ronin-code-sql is free software: you can redistribute it and/or modify
|
8
8
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -2,7 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# ronin-code-sql - A Ruby DSL for crafting SQL Injections.
|
4
4
|
#
|
5
|
-
# Copyright (c) 2007-
|
5
|
+
# Copyright (c) 2007-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
|
6
6
|
#
|
7
7
|
# ronin-code-sql is free software: you can redistribute it and/or modify
|
8
8
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -2,7 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# ronin-code-sql - A Ruby DSL for crafting SQL Injections.
|
4
4
|
#
|
5
|
-
# Copyright (c) 2007-
|
5
|
+
# Copyright (c) 2007-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
|
6
6
|
#
|
7
7
|
# ronin-code-sql is free software: you can redistribute it and/or modify
|
8
8
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -2,7 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# ronin-code-sql - A Ruby DSL for crafting SQL Injections.
|
4
4
|
#
|
5
|
-
# Copyright (c) 2007-
|
5
|
+
# Copyright (c) 2007-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
|
6
6
|
#
|
7
7
|
# ronin-code-sql is free software: you can redistribute it and/or modify
|
8
8
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -22,7 +22,7 @@ module Ronin
|
|
22
22
|
module Code
|
23
23
|
module SQL
|
24
24
|
# Ronin SQL version
|
25
|
-
VERSION = '2.0.0
|
25
|
+
VERSION = '2.0.0'
|
26
26
|
end
|
27
27
|
end
|
28
28
|
end
|
data/lib/ronin/code/sql.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# ronin-code-sql - A Ruby DSL for crafting SQL Injections.
|
4
4
|
#
|
5
|
-
# Copyright (c) 2007-
|
5
|
+
# Copyright (c) 2007-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
|
6
6
|
#
|
7
7
|
# ronin-code-sql is free software: you can redistribute it and/or modify
|
8
8
|
# it under the terms of the GNU Lesser General Public License as published
|
data/ronin-code-sql.gemspec
CHANGED
@@ -27,6 +27,8 @@ Gem::Specification.new do |gem|
|
|
27
27
|
gem.files = `git ls-files`.split($/)
|
28
28
|
gem.files = glob[gemspec['files']] if gemspec['files']
|
29
29
|
gem.files += Array(gemspec['generated_files'])
|
30
|
+
# exclude test files from the packages gem
|
31
|
+
gem.files -= glob[gemspec['test_files'] || 'spec/{**/}*']
|
30
32
|
|
31
33
|
gem.executables = gemspec.fetch('executables') do
|
32
34
|
glob['bin/*'].map { |path| File.basename(path) }
|
@@ -34,7 +36,6 @@ Gem::Specification.new do |gem|
|
|
34
36
|
gem.default_executable = gem.executables.first if Gem::VERSION < '1.7.'
|
35
37
|
|
36
38
|
gem.extensions = glob[gemspec['extensions'] || 'ext/**/extconf.rb']
|
37
|
-
gem.test_files = glob[gemspec['test_files'] || 'spec/{**/}*_spec.rb']
|
38
39
|
gem.extra_rdoc_files = glob[gemspec['extra_doc_files'] || '*.{txt,md}']
|
39
40
|
|
40
41
|
gem.require_paths = Array(gemspec.fetch('require_paths') {
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ronin-code-sql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.0
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Postmodern
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-02-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ronin-support
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.0
|
19
|
+
version: '1.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.0
|
26
|
+
version: '1.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -82,39 +82,14 @@ files:
|
|
82
82
|
- lib/ronin/code/sql/unary_expr.rb
|
83
83
|
- lib/ronin/code/sql/version.rb
|
84
84
|
- ronin-code-sql.gemspec
|
85
|
-
- spec/spec_helper.rb
|
86
|
-
- spec/sql/binary_expr_examples.rb
|
87
|
-
- spec/sql/binary_expr_spec.rb
|
88
|
-
- spec/sql/clause_examples.rb
|
89
|
-
- spec/sql/clause_spec.rb
|
90
|
-
- spec/sql/clauses_spec.rb
|
91
|
-
- spec/sql/emittable_spec.rb
|
92
|
-
- spec/sql/emitter_spec.rb
|
93
|
-
- spec/sql/field_spec.rb
|
94
|
-
- spec/sql/fields_spec.rb
|
95
|
-
- spec/sql/function_examples.rb
|
96
|
-
- spec/sql/function_spec.rb
|
97
|
-
- spec/sql/functions_spec.rb
|
98
|
-
- spec/sql/injection_expr_spec.rb
|
99
|
-
- spec/sql/injection_spec.rb
|
100
|
-
- spec/sql/literal_spec.rb
|
101
|
-
- spec/sql/literals_spec.rb
|
102
|
-
- spec/sql/operators_spec.rb
|
103
|
-
- spec/sql/statement_examples.rb
|
104
|
-
- spec/sql/statement_list_spec.rb
|
105
|
-
- spec/sql/statement_spec.rb
|
106
|
-
- spec/sql/statements_spec.rb
|
107
|
-
- spec/sql/unary_expr_examples.rb
|
108
|
-
- spec/sql/unary_expr_spec.rb
|
109
|
-
- spec/sql_spec.rb
|
110
85
|
homepage: https://github.com/ronin-rb/ronin-code-sql#readme
|
111
86
|
licenses:
|
112
87
|
- LGPL-3.0
|
113
88
|
metadata:
|
114
|
-
documentation_uri: https://
|
89
|
+
documentation_uri: https://ronin-rb.dev/docs/ronin-code-sql
|
115
90
|
source_code_uri: https://github.com/ronin-rb/ronin-code-sql
|
116
91
|
bug_tracker_uri: https://github.com/ronin-rb/ronin-code-sql/issues
|
117
|
-
changelog_uri: https://github.com/ronin-rb/ronin-code-sql/blob/
|
92
|
+
changelog_uri: https://github.com/ronin-rb/ronin-code-sql/blob/main/ChangeLog.md
|
118
93
|
rubygems_mfa_required: 'true'
|
119
94
|
post_install_message:
|
120
95
|
rdoc_options: []
|
@@ -135,23 +110,4 @@ rubygems_version: 3.3.26
|
|
135
110
|
signing_key:
|
136
111
|
specification_version: 4
|
137
112
|
summary: A Ruby DSL for crafting SQL Injections.
|
138
|
-
test_files:
|
139
|
-
- spec/sql/binary_expr_spec.rb
|
140
|
-
- spec/sql/clause_spec.rb
|
141
|
-
- spec/sql/clauses_spec.rb
|
142
|
-
- spec/sql/emittable_spec.rb
|
143
|
-
- spec/sql/emitter_spec.rb
|
144
|
-
- spec/sql/field_spec.rb
|
145
|
-
- spec/sql/fields_spec.rb
|
146
|
-
- spec/sql/function_spec.rb
|
147
|
-
- spec/sql/functions_spec.rb
|
148
|
-
- spec/sql/injection_expr_spec.rb
|
149
|
-
- spec/sql/injection_spec.rb
|
150
|
-
- spec/sql/literal_spec.rb
|
151
|
-
- spec/sql/literals_spec.rb
|
152
|
-
- spec/sql/operators_spec.rb
|
153
|
-
- spec/sql/statement_list_spec.rb
|
154
|
-
- spec/sql/statement_spec.rb
|
155
|
-
- spec/sql/statements_spec.rb
|
156
|
-
- spec/sql/unary_expr_spec.rb
|
157
|
-
- spec/sql_spec.rb
|
113
|
+
test_files: []
|
data/spec/spec_helper.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'ronin/code/sql/binary_expr'
|
3
|
-
|
4
|
-
shared_examples_for "BinaryExpr" do |method,operator=method|
|
5
|
-
describe "##{method}" do
|
6
|
-
let(:operand) { 1 }
|
7
|
-
let(:expr) { subject.send(method,operand) }
|
8
|
-
|
9
|
-
it "should be a BinaryExpr" do
|
10
|
-
expect(expr).to be_kind_of(Ronin::Code::SQL::BinaryExpr)
|
11
|
-
end
|
12
|
-
|
13
|
-
it "should set the left-hand side operand" do
|
14
|
-
expect(expr.left).to eq(subject)
|
15
|
-
end
|
16
|
-
|
17
|
-
it "should have a '#{operator}' operator" do
|
18
|
-
expect(expr.operator).to eq(operator)
|
19
|
-
end
|
20
|
-
|
21
|
-
it "should set the right-hand side operand" do
|
22
|
-
expect(expr.right).to eq(operand)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
data/spec/sql/clause_examples.rb
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
shared_examples_for "Clause" do |method,keyword,argument_or_block=nil|
|
4
|
-
describe "##{method}" do
|
5
|
-
case argument_or_block
|
6
|
-
when Proc
|
7
|
-
before { subject.send(method,&argument_or_block) }
|
8
|
-
when Array
|
9
|
-
let(:arguments) { argument_or_block }
|
10
|
-
|
11
|
-
before { subject.send(method,*arguments) }
|
12
|
-
when NilClass
|
13
|
-
before { subject.send(method) }
|
14
|
-
else
|
15
|
-
let(:argument) { argument_or_block }
|
16
|
-
|
17
|
-
before { subject.send(method,argument) }
|
18
|
-
end
|
19
|
-
|
20
|
-
it "should add a #{keyword} clause" do
|
21
|
-
expect(clause.keyword).to eq(keyword)
|
22
|
-
end
|
23
|
-
|
24
|
-
case argument_or_block
|
25
|
-
when Proc
|
26
|
-
it "should accept a block" do
|
27
|
-
expect(clause.argument).not_to be_nil
|
28
|
-
end
|
29
|
-
when NilClass
|
30
|
-
it "should not have an argument" do
|
31
|
-
expect(clause.argument).to be_nil
|
32
|
-
end
|
33
|
-
when Array
|
34
|
-
it "should accept an argument" do
|
35
|
-
expect(clause.argument).to eq(arguments)
|
36
|
-
end
|
37
|
-
else
|
38
|
-
it "should accept an argument" do
|
39
|
-
expect(clause.argument).to eq(argument)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
data/spec/sql/clause_spec.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'ronin/code/sql/clause'
|
3
|
-
|
4
|
-
describe Ronin::Code::SQL::Clause do
|
5
|
-
describe "#initialize" do
|
6
|
-
context "when given an argument" do
|
7
|
-
let(:argument) { 1 }
|
8
|
-
|
9
|
-
subject { described_class.new(:CLAUSE,argument) }
|
10
|
-
|
11
|
-
it "should set the argument" do
|
12
|
-
expect(subject.argument).to eq(argument)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
context "when given a block" do
|
17
|
-
subject do
|
18
|
-
described_class.new(:CLAUSE) { 1 }
|
19
|
-
end
|
20
|
-
|
21
|
-
it "should use the return value as the argument" do
|
22
|
-
expect(subject.argument).to eq(1)
|
23
|
-
end
|
24
|
-
|
25
|
-
context "that accepts an argument" do
|
26
|
-
it "should yield itself" do
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
data/spec/sql/clauses_spec.rb
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'sql/clause_examples'
|
3
|
-
require 'ronin/code/sql/clause'
|
4
|
-
require 'ronin/code/sql/clauses'
|
5
|
-
|
6
|
-
describe Ronin::Code::SQL::Clauses do
|
7
|
-
subject { Object.new.extend(described_class) }
|
8
|
-
|
9
|
-
let(:clause) { subject.clauses.last }
|
10
|
-
|
11
|
-
it { expect(subject.clauses).to be_empty }
|
12
|
-
|
13
|
-
describe "#clause" do
|
14
|
-
let(:keyword) { :EXEC }
|
15
|
-
|
16
|
-
before { subject.clause(keyword) }
|
17
|
-
|
18
|
-
it "should add an arbitrary clause" do
|
19
|
-
expect(clause.keyword).to eq(keyword)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
include_examples "Clause", :from, :FROM, :table
|
24
|
-
include_examples "Clause", :into, :INTO, :table
|
25
|
-
include_examples "Clause", :where, :WHERE, proc { id == 1 }
|
26
|
-
include_examples "Clause", :join, :JOIN, :table
|
27
|
-
include_examples "Clause", :inner_join, [:INNER, :JOIN], :table
|
28
|
-
include_examples "Clause", :left_join, [:LEFT, :JOIN], :table
|
29
|
-
include_examples "Clause", :right_join, [:RIGHT, :JOIN], :table
|
30
|
-
include_examples "Clause", :full_join, [:FULL, :JOIN], :table
|
31
|
-
include_examples "Clause", :on, :ON, proc { id == 1 }
|
32
|
-
include_examples "Clause", :union, :UNION, proc { select(:*).from(:table) }
|
33
|
-
include_examples "Clause", :union_all, [:UNION, :ALL], proc {
|
34
|
-
select(:*).from(:table)
|
35
|
-
}
|
36
|
-
include_examples "Clause", :group_by, [:GROUP, :BY], [:column1, :column2]
|
37
|
-
include_examples "Clause", :having, :HAVING, proc { max(priv) > 100 }
|
38
|
-
include_examples "Clause", :limit, :LIMIT, 100
|
39
|
-
include_examples "Clause", :offset, :OFFSET, 20
|
40
|
-
include_examples "Clause", :top, :TOP, 50
|
41
|
-
include_examples "Clause", :into, :INTO, :table
|
42
|
-
include_examples "Clause", :values, :VALUES, [1,2,3,4]
|
43
|
-
include_examples "Clause", :default_values, [:DEFAULT, :VALUES]
|
44
|
-
include_examples "Clause", :set, :SET, {x: 1, y: 2}
|
45
|
-
include_examples "Clause", :indexed_by, [:INDEXED, :BY], :index_name
|
46
|
-
include_examples "Clause", :not_indexed, [:NOT, :INDEXED]
|
47
|
-
end
|
data/spec/sql/emittable_spec.rb
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'ronin/code/sql/emittable'
|
3
|
-
require 'ronin/code/sql/literal'
|
4
|
-
|
5
|
-
describe Ronin::Code::SQL::Emittable do
|
6
|
-
subject { Ronin::Code::SQL::Literal.new('hello') }
|
7
|
-
|
8
|
-
describe "#emitter" do
|
9
|
-
it "should return an Ronin::Code::SQL::Emitter" do
|
10
|
-
expect(subject.emitter).to be_kind_of(Ronin::Code::SQL::Emitter)
|
11
|
-
end
|
12
|
-
|
13
|
-
it "should accept Emitter options" do
|
14
|
-
expect(subject.emitter(case: :lower).case).to eq(:lower)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
describe "#to_sql" do
|
19
|
-
it "should emit the object" do
|
20
|
-
expect(subject.to_sql).to eq("'hello'")
|
21
|
-
end
|
22
|
-
|
23
|
-
context "when given options" do
|
24
|
-
it "should pass them to #emitter" do
|
25
|
-
expect(subject.to_sql(quotes: :double)).to eq('"hello"')
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
describe "#to_s" do
|
31
|
-
it "should call #to_sql with no arguments" do
|
32
|
-
expect(subject.to_s).to eq(subject.to_sql)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
describe "#inspect" do
|
37
|
-
it "should call #to_sql with no arguments" do
|
38
|
-
expect(subject.inspect).to include(subject.to_sql)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|