one_gadget 2.0.0 → 2.1.1
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/CHANGELOG.md +215 -65
- data/README.md +96 -22
- data/lib/one_gadget/abi.rb +41 -5
- data/lib/one_gadget/builds/libc-2.31-93b46e0027747153e336c3fd9431ce9a5d82ad00.rb +563 -0
- data/lib/one_gadget/builds/libc-2.35-891c1403437a4e30e684e0c8e34b87a09e4298e5.rb +434 -0
- data/lib/one_gadget/builds/libc-2.39-a1d1cf4badf1f5dfe57ff1d17bd692ccc6fcd5c5.rb +531 -0
- data/lib/one_gadget/builds/libc-2.39-cd8f5a207dd67aea370d2b471a54c3e56f44ab18.rb +531 -0
- data/lib/one_gadget/builds/libc-2.43-b50ceafbd17dc6bceee344a66671c7eaa152bef4.rb +15 -0
- data/lib/one_gadget/emulators/aarch64.rb +5 -2
- data/lib/one_gadget/emulators/amd64.rb +1 -0
- data/lib/one_gadget/emulators/arm.rb +27 -18
- data/lib/one_gadget/emulators/arm_family.rb +35 -160
- data/lib/one_gadget/emulators/conditional.rb +28 -22
- data/lib/one_gadget/emulators/constraints.rb +269 -0
- data/lib/one_gadget/emulators/data_processing.rb +167 -0
- data/lib/one_gadget/emulators/i386.rb +4 -6
- data/lib/one_gadget/emulators/instruction.rb +24 -1
- data/lib/one_gadget/emulators/lambda.rb +6 -4
- data/lib/one_gadget/emulators/mips.rb +289 -0
- data/lib/one_gadget/emulators/processor.rb +33 -455
- data/lib/one_gadget/emulators/register_file.rb +19 -10
- data/lib/one_gadget/emulators/riscv64.rb +265 -0
- data/lib/one_gadget/emulators/safe_calls.rb +9 -3
- data/lib/one_gadget/emulators/tracked_memory.rb +209 -0
- data/lib/one_gadget/emulators/x86.rb +32 -22
- data/lib/one_gadget/fetchers/aarch64.rb +0 -27
- data/lib/one_gadget/fetchers/amd64.rb +0 -24
- data/lib/one_gadget/fetchers/argument_resolution.rb +340 -0
- data/lib/one_gadget/fetchers/arm.rb +99 -44
- data/lib/one_gadget/fetchers/base.rb +142 -640
- data/lib/one_gadget/fetchers/candidate_walk.rb +150 -0
- data/lib/one_gadget/fetchers/disassembly.rb +252 -0
- data/lib/one_gadget/fetchers/dynamic_symbols.rb +104 -0
- data/lib/one_gadget/fetchers/i386.rb +5 -8
- data/lib/one_gadget/fetchers/mips.rb +478 -0
- data/lib/one_gadget/fetchers/objdump.rb +25 -3
- data/lib/one_gadget/fetchers/riscv64.rb +78 -0
- data/lib/one_gadget/fetchers/x86.rb +19 -0
- data/lib/one_gadget/fetchers.rb +22 -6
- data/lib/one_gadget/gadget.rb +27 -37
- data/lib/one_gadget/helper.rb +19 -5
- data/lib/one_gadget/one_gadget.rb +6 -0
- data/lib/one_gadget/version.rb +1 -1
- data/lib/one_gadget.rb +1 -1
- metadata +18 -6
- data/lib/one_gadget/builds/libc-2.26-2104f3d4ad5cf68603afbe7ba1a17f5ac99c5988.rb +0 -227
- data/lib/one_gadget/builds/libc-2.26-ddcc13122ddbfe5e5ef77d4ebe66d124ae5762c2.rb +0 -300
- data/lib/one_gadget/builds/libc-2.26-f65648a832414f2144ce795d75b6045a1ec2e252.rb +0 -199
data/lib/one_gadget/gadget.rb
CHANGED
|
@@ -10,6 +10,23 @@ module OneGadget
|
|
|
10
10
|
# Module for define gadgets.
|
|
11
11
|
module Gadget
|
|
12
12
|
# Information of a gadget.
|
|
13
|
+
#
|
|
14
|
+
# Its {Gadget#constraints} are written in this language:
|
|
15
|
+
# REG: OneGadget::ABI.all
|
|
16
|
+
# IMM: [+-]0x[\da-f]+
|
|
17
|
+
# BITS: 8, 16, 32, 64
|
|
18
|
+
# CAST: (<s|u><BITS>)
|
|
19
|
+
# Identity: <REG><IMM>?
|
|
20
|
+
# Identity: [<Identity>]
|
|
21
|
+
# Expr: <REG> is the GOT address of libc
|
|
22
|
+
# Expr: writable: <Identity>
|
|
23
|
+
# Expr: readable: <Identity>
|
|
24
|
+
# Expr: <CAST>?<Identity> == NULL
|
|
25
|
+
# Expr: <REG> & 0xf == <IMM>
|
|
26
|
+
# Expr: (s32)[<Identity>] <= 0
|
|
27
|
+
# Expr: .+ is a valid argv
|
|
28
|
+
# Expr: .+ is a valid envp
|
|
29
|
+
# Expr: <Expr> || <Expr>
|
|
13
30
|
class Gadget
|
|
14
31
|
# @return [Integer] Base address of libc. Default: 0.
|
|
15
32
|
attr_accessor :base
|
|
@@ -138,22 +155,9 @@ module OneGadget
|
|
|
138
155
|
private
|
|
139
156
|
|
|
140
157
|
# Drops what the rest of the list already settles, so a gadget asks for each
|
|
141
|
-
# thing once and never offers an option it rules out itself.
|
|
142
|
-
#
|
|
143
|
-
#
|
|
144
|
-
# says that address is mapped memory (see {#mapped?}), which in turn says it
|
|
145
|
-
# is readable and not NULL. So:
|
|
146
|
-
# * A +readable:+ on an address a dereference already reaches repeats it.
|
|
147
|
-
# * A +== NULL+ option for a mapped address can never be taken.
|
|
148
|
-
# * A +!= NULL+ requirement on one is already met.
|
|
149
|
-
# The last rule reads a value rather than an address: one the list pins to a
|
|
150
|
-
# literal answers every other comparison against it, so a bound that literal
|
|
151
|
-
# already satisfies asks for nothing.
|
|
152
|
-
#
|
|
153
|
-
# Each needs the constraint doing the settling to hold outright: one inside a
|
|
154
|
-
# +||+ is an option among several and settles nothing. They run until the
|
|
155
|
-
# list stops changing, because dropping an option can leave a constraint
|
|
156
|
-
# holding outright and settle the next thing.
|
|
158
|
+
# thing once and never offers an option it rules out itself. Only a
|
|
159
|
+
# constraint holding outright settles anything, since one inside a +||+ is an
|
|
160
|
+
# option among several; the rules run until the list stops changing.
|
|
157
161
|
# @param [Array<String>] cons
|
|
158
162
|
# @return [Array<String>]
|
|
159
163
|
# @example An option the same list rules out.
|
|
@@ -305,29 +309,14 @@ module OneGadget
|
|
|
305
309
|
end
|
|
306
310
|
end
|
|
307
311
|
|
|
308
|
-
# REG: OneGadget::ABI.all
|
|
309
|
-
# IMM: [+-]0x[\da-f]+
|
|
310
|
-
# BITS: 8, 16, 32, 64
|
|
311
|
-
# CAST: (<s|u><BITS>)
|
|
312
|
-
# Identity: <REG><IMM>?
|
|
313
|
-
# Identity: [<Identity>]
|
|
314
|
-
# Expr: <REG> is the GOT address of libc
|
|
315
|
-
# Expr: writable: <Identity>
|
|
316
|
-
# Expr: readable: <Identity>
|
|
317
|
-
# Expr: <CAST>?<Identity> == NULL
|
|
318
|
-
# Expr: <REG> & 0xf == <IMM>
|
|
319
|
-
# Expr: (s32)[<Identity>] <= 0
|
|
320
|
-
# Expr: .+ is a valid argv
|
|
321
|
-
# Expr: .+ is a valid envp
|
|
322
|
-
# Expr: <Expr> || <Expr>
|
|
323
312
|
def calculate_score(expr)
|
|
324
313
|
return expr.split(' || ').map(&method(:calculate_score)).max if expr.include?(' || ')
|
|
325
314
|
|
|
326
315
|
return 0.95 if stack_alignment?(expr)
|
|
327
316
|
# Zero is the easy value to arrange and every other one is hard, so a mask
|
|
328
|
-
# tells them apart rather than making them easier:
|
|
329
|
-
#
|
|
330
|
-
#
|
|
317
|
+
# tells them apart rather than making them easier: some of a value's bits
|
|
318
|
+
# zeroed is a little easier than all of them, while a mask asking for any
|
|
319
|
+
# other value is as hard as asking for it anywhere.
|
|
331
320
|
return 0.92 if MASKED_ZERO.match?(expr)
|
|
332
321
|
# Any other mask asks for a particular value, which the mask does nothing
|
|
333
322
|
# to make easier, so it is the relation it looks like.
|
|
@@ -424,6 +413,8 @@ module OneGadget
|
|
|
424
413
|
0.9**(depth + base)
|
|
425
414
|
end
|
|
426
415
|
|
|
416
|
+
# The constraints as a reader wants them: every +writable:+ folded into one
|
|
417
|
+
# sentence naming all of the addresses, the rest left alone.
|
|
427
418
|
def merge_constraints
|
|
428
419
|
key = 'writable: '
|
|
429
420
|
w_cons, normal = constraints.partition { |c| c.start_with?(key) }
|
|
@@ -455,8 +446,7 @@ module OneGadget
|
|
|
455
446
|
table = OneGadget::Helper.remote_builds.find { |c| c.include?(build_id) }
|
|
456
447
|
return build_not_found if table.nil? # remote doesn't have this one either.
|
|
457
448
|
|
|
458
|
-
#
|
|
459
|
-
OneGadget::Logger.ask_update(msg: 'The desired one-gadget can be found in lastest version!')
|
|
449
|
+
OneGadget::Logger.info("#{build_id} is not shipped with the gem, fetching it from the repository\n")
|
|
460
450
|
tmp_file = OneGadget::Helper.download_build(table)
|
|
461
451
|
require tmp_file.path
|
|
462
452
|
tmp_file.unlink
|
|
@@ -466,7 +456,7 @@ module OneGadget
|
|
|
466
456
|
# Returns the comments in builds/libc-*-<build_id>*.rb
|
|
467
457
|
# @param [String] build_id
|
|
468
458
|
# Supports give only few starting bytes, but a warning will be shown
|
|
469
|
-
# if multiple
|
|
459
|
+
# if multiple BuildIDs are matched.
|
|
470
460
|
# @return [String?]
|
|
471
461
|
# Lines of comments.
|
|
472
462
|
# @example
|
data/lib/one_gadget/helper.rb
CHANGED
|
@@ -190,7 +190,6 @@ module OneGadget
|
|
|
190
190
|
nil
|
|
191
191
|
end
|
|
192
192
|
|
|
193
|
-
# Fetch the ELF architecture of +file+.
|
|
194
193
|
# What this tool calls each architecture it can search. Keyed by the
|
|
195
194
|
# header's own value, which is fixed by the ELF ABI, rather than by the name a
|
|
196
195
|
# reader library prints for it -- that is the library's wording and does
|
|
@@ -199,9 +198,12 @@ module OneGadget
|
|
|
199
198
|
ELFTools::Constants::EM::EM_386 => :i386,
|
|
200
199
|
ELFTools::Constants::EM::EM_ARM => :arm,
|
|
201
200
|
ELFTools::Constants::EM::EM_X86_64 => :amd64,
|
|
202
|
-
ELFTools::Constants::EM::EM_AARCH64 => :aarch64
|
|
201
|
+
ELFTools::Constants::EM::EM_AARCH64 => :aarch64,
|
|
202
|
+
ELFTools::Constants::EM::EM_RISCV => :riscv64,
|
|
203
|
+
ELFTools::Constants::EM::EM_MIPS => :mips
|
|
203
204
|
}.freeze
|
|
204
205
|
|
|
206
|
+
# Fetch the ELF architecture of +file+.
|
|
205
207
|
# @param [String] file The target ELF filename.
|
|
206
208
|
# @return [Symbol]
|
|
207
209
|
# One of +:amd64+, +:i386+, +:arm+ or +:aarch64+, +:unknown+ for a valid ELF
|
|
@@ -302,8 +304,18 @@ module OneGadget
|
|
|
302
304
|
def objdump_arch_supported?(bin, arch)
|
|
303
305
|
return false if bin.nil?
|
|
304
306
|
|
|
305
|
-
|
|
306
|
-
|
|
307
|
+
objdump_targets(bin).include?(objdump_arch(arch))
|
|
308
|
+
end
|
|
309
|
+
|
|
310
|
+
# The target names an objdump binary lists as supported. Asked of the binary
|
|
311
|
+
# once: the answer is a property of that build, while the question is asked
|
|
312
|
+
# again for every command a search assembles.
|
|
313
|
+
# @param [String] bin Path to the objdump binary.
|
|
314
|
+
# @return [Array<String>]
|
|
315
|
+
# @example Every word of the help text, a target looked for among them.
|
|
316
|
+
# objdump_targets('/usr/bin/objdump').include?('elf64-x86-64') #=> true
|
|
317
|
+
def objdump_targets(bin)
|
|
318
|
+
(@objdump_targets ||= {})[bin] ||= `#{::Shellwords.join([bin, '--help'])}`.split
|
|
307
319
|
end
|
|
308
320
|
|
|
309
321
|
# Converts to the architecture name shown in objdump's +--help+ command.
|
|
@@ -317,6 +329,7 @@ module OneGadget
|
|
|
317
329
|
def objdump_arch(arch)
|
|
318
330
|
case arch
|
|
319
331
|
when :amd64 then 'i386:x86-64'
|
|
332
|
+
when :riscv64 then 'riscv:rv64'
|
|
320
333
|
else arch.to_s
|
|
321
334
|
end
|
|
322
335
|
end
|
|
@@ -331,7 +344,8 @@ module OneGadget
|
|
|
331
344
|
aarch64: 'aarch64-linux-gnu-objdump',
|
|
332
345
|
amd64: 'x86_64-linux-gnu-objdump',
|
|
333
346
|
arm: 'arm-linux-gnueabihf-objdump',
|
|
334
|
-
i386: 'i686-linux-gnu-objdump'
|
|
347
|
+
i386: 'i686-linux-gnu-objdump',
|
|
348
|
+
riscv64: 'riscv64-linux-gnu-objdump'
|
|
335
349
|
}[arch]
|
|
336
350
|
end
|
|
337
351
|
|
|
@@ -79,6 +79,12 @@ module OneGadget
|
|
|
79
79
|
take_until(high, 3)
|
|
80
80
|
end
|
|
81
81
|
|
|
82
|
+
# The +count+ best-scoring of +ary+, in the order they were given, plus
|
|
83
|
+
# anything scoring as well as the last of them -- so a tie is never broken
|
|
84
|
+
# arbitrarily, and more than +count+ may come back.
|
|
85
|
+
# @param [Array<OneGadget::Gadget::Gadget>] ary
|
|
86
|
+
# @param [Integer] count
|
|
87
|
+
# @return [Array<OneGadget::Gadget::Gadget>]
|
|
82
88
|
def take_until(ary, count)
|
|
83
89
|
return ary if ary.size <= count
|
|
84
90
|
|
data/lib/one_gadget/version.rb
CHANGED
data/lib/one_gadget.rb
CHANGED
|
@@ -16,7 +16,7 @@ require 'one_gadget/version'
|
|
|
16
16
|
# @param [String?] arg
|
|
17
17
|
# Can be either +build_id+ or path to libc.
|
|
18
18
|
# @param [Mixed] options
|
|
19
|
-
# See {OneGadget#gadgets} for
|
|
19
|
+
# See {OneGadget#gadgets} for more information.
|
|
20
20
|
# @return [Array<OneGadget::Gadget::Gadget>, Array<Integer>]
|
|
21
21
|
# The gadgets found.
|
|
22
22
|
# @example
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: one_gadget
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- david942j
|
|
@@ -15,7 +15,7 @@ dependencies:
|
|
|
15
15
|
requirements:
|
|
16
16
|
- - ">="
|
|
17
17
|
- !ruby/object:Gem::Version
|
|
18
|
-
version: 2.
|
|
18
|
+
version: 2.2.0
|
|
19
19
|
- - "<"
|
|
20
20
|
- !ruby/object:Gem::Version
|
|
21
21
|
version: 3.0.0
|
|
@@ -25,7 +25,7 @@ dependencies:
|
|
|
25
25
|
requirements:
|
|
26
26
|
- - ">="
|
|
27
27
|
- !ruby/object:Gem::Version
|
|
28
|
-
version: 2.
|
|
28
|
+
version: 2.2.0
|
|
29
29
|
- - "<"
|
|
30
30
|
- !ruby/object:Gem::Version
|
|
31
31
|
version: 3.0.0
|
|
@@ -139,9 +139,6 @@ files:
|
|
|
139
139
|
- lib/one_gadget/builds/libc-2.23-991d173c6b9056712812d98507cbe95f937db7cf.rb
|
|
140
140
|
- lib/one_gadget/builds/libc-2.24-8cba3297f538691eb1875be62986993c004f3f4d.rb
|
|
141
141
|
- lib/one_gadget/builds/libc-2.24-fd0655c4d2073eda4235084e1d0e558f0251be8a.rb
|
|
142
|
-
- lib/one_gadget/builds/libc-2.26-2104f3d4ad5cf68603afbe7ba1a17f5ac99c5988.rb
|
|
143
|
-
- lib/one_gadget/builds/libc-2.26-ddcc13122ddbfe5e5ef77d4ebe66d124ae5762c2.rb
|
|
144
|
-
- lib/one_gadget/builds/libc-2.26-f65648a832414f2144ce795d75b6045a1ec2e252.rb
|
|
145
142
|
- lib/one_gadget/builds/libc-2.27-53f40c1d2f3739ae017dcdcef1a17314786e3709.rb
|
|
146
143
|
- lib/one_gadget/builds/libc-2.27-63b3d43ad45e1b0f601848c65b067f9e9b40528b.rb
|
|
147
144
|
- lib/one_gadget/builds/libc-2.27-8c2d375f8d23a7b58de23a60b37bef2d80b23aef.rb
|
|
@@ -149,16 +146,20 @@ files:
|
|
|
149
146
|
- lib/one_gadget/builds/libc-2.31-00537087f0a4c4381deb83f49cc19e6abfd47a12.rb
|
|
150
147
|
- lib/one_gadget/builds/libc-2.31-5792732f783158c66fb4f3756458ca24e46e827d.rb
|
|
151
148
|
- lib/one_gadget/builds/libc-2.31-749e6d13e587d608128a097381cd44b9aca59927.rb
|
|
149
|
+
- lib/one_gadget/builds/libc-2.31-93b46e0027747153e336c3fd9431ce9a5d82ad00.rb
|
|
152
150
|
- lib/one_gadget/builds/libc-2.31-9fdb74e7b217d06c93172a8243f8547f947ee6d1.rb
|
|
153
151
|
- lib/one_gadget/builds/libc-2.31-aa18dedb2aa800a743aac3bb546b8bd5816dbca6.rb
|
|
154
152
|
- lib/one_gadget/builds/libc-2.35-1a0246cddde3e301e0cd5a85630aa26e89cb34b5.rb
|
|
155
153
|
- lib/one_gadget/builds/libc-2.35-22ca0a83a4004122e30a69b597be96e134068616.rb
|
|
156
154
|
- lib/one_gadget/builds/libc-2.35-4a81130bc30ded618f1edc030ecc5439e066dc68.rb
|
|
155
|
+
- lib/one_gadget/builds/libc-2.35-891c1403437a4e30e684e0c8e34b87a09e4298e5.rb
|
|
157
156
|
- lib/one_gadget/builds/libc-2.35-a91d1bc05ce8f54989de1172c24b2b736378901f.rb
|
|
158
157
|
- lib/one_gadget/builds/libc-2.39-328820b908de8ea1ef79afa8995e302e819163d7.rb
|
|
159
158
|
- lib/one_gadget/builds/libc-2.39-54ae5337044aaabab70d65e0c3444f7e4735e059.rb
|
|
160
159
|
- lib/one_gadget/builds/libc-2.39-70d6616bcfd43eaa73962220df98dd9c82ca6687.rb
|
|
160
|
+
- lib/one_gadget/builds/libc-2.39-a1d1cf4badf1f5dfe57ff1d17bd692ccc6fcd5c5.rb
|
|
161
161
|
- lib/one_gadget/builds/libc-2.39-a7e93008cd7dad7a713e3eaf1f9dec78ce7c68a6.rb
|
|
162
|
+
- lib/one_gadget/builds/libc-2.39-cd8f5a207dd67aea370d2b471a54c3e56f44ab18.rb
|
|
162
163
|
- lib/one_gadget/builds/libc-2.39-f5b510cd91b956148e885994f55a0e476462bf92.rb
|
|
163
164
|
- lib/one_gadget/builds/libc-2.43-7a08e84aa7f1e0bd80a7da6227c3a006c3ff327d.rb
|
|
164
165
|
- lib/one_gadget/builds/libc-2.43-8c7af7f227b3871d6afba752cbb617f317023de5.rb
|
|
@@ -170,21 +171,32 @@ files:
|
|
|
170
171
|
- lib/one_gadget/emulators/arm.rb
|
|
171
172
|
- lib/one_gadget/emulators/arm_family.rb
|
|
172
173
|
- lib/one_gadget/emulators/conditional.rb
|
|
174
|
+
- lib/one_gadget/emulators/constraints.rb
|
|
175
|
+
- lib/one_gadget/emulators/data_processing.rb
|
|
173
176
|
- lib/one_gadget/emulators/i386.rb
|
|
174
177
|
- lib/one_gadget/emulators/instruction.rb
|
|
175
178
|
- lib/one_gadget/emulators/lambda.rb
|
|
179
|
+
- lib/one_gadget/emulators/mips.rb
|
|
176
180
|
- lib/one_gadget/emulators/processor.rb
|
|
177
181
|
- lib/one_gadget/emulators/register_file.rb
|
|
182
|
+
- lib/one_gadget/emulators/riscv64.rb
|
|
178
183
|
- lib/one_gadget/emulators/safe_calls.rb
|
|
184
|
+
- lib/one_gadget/emulators/tracked_memory.rb
|
|
179
185
|
- lib/one_gadget/emulators/x86.rb
|
|
180
186
|
- lib/one_gadget/error.rb
|
|
181
187
|
- lib/one_gadget/fetchers.rb
|
|
182
188
|
- lib/one_gadget/fetchers/aarch64.rb
|
|
183
189
|
- lib/one_gadget/fetchers/amd64.rb
|
|
190
|
+
- lib/one_gadget/fetchers/argument_resolution.rb
|
|
184
191
|
- lib/one_gadget/fetchers/arm.rb
|
|
185
192
|
- lib/one_gadget/fetchers/base.rb
|
|
193
|
+
- lib/one_gadget/fetchers/candidate_walk.rb
|
|
194
|
+
- lib/one_gadget/fetchers/disassembly.rb
|
|
195
|
+
- lib/one_gadget/fetchers/dynamic_symbols.rb
|
|
186
196
|
- lib/one_gadget/fetchers/i386.rb
|
|
197
|
+
- lib/one_gadget/fetchers/mips.rb
|
|
187
198
|
- lib/one_gadget/fetchers/objdump.rb
|
|
199
|
+
- lib/one_gadget/fetchers/riscv64.rb
|
|
188
200
|
- lib/one_gadget/fetchers/x86.rb
|
|
189
201
|
- lib/one_gadget/gadget.rb
|
|
190
202
|
- lib/one_gadget/helper.rb
|
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
require 'one_gadget/gadget'
|
|
2
|
-
# spec/data/libc-2.26-2104f3d4ad5cf68603afbe7ba1a17f5ac99c5988.so
|
|
3
|
-
#
|
|
4
|
-
# Advanced Micro Devices X86-64 processor
|
|
5
|
-
#
|
|
6
|
-
# GNU C Library (GNU libc) stable release version 2.26, by Roland McGrath et al.
|
|
7
|
-
# Copyright (C) 2017 Free Software Foundation, Inc.
|
|
8
|
-
# This is free software; see the source for copying conditions.
|
|
9
|
-
# There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
|
|
10
|
-
# PARTICULAR PURPOSE.
|
|
11
|
-
# Compiled by GNU CC version 7.2.0.
|
|
12
|
-
# Available extensions:
|
|
13
|
-
# crypt add-on version 2.1 by Michael Glad and others
|
|
14
|
-
# GNU Libidn by Simon Josefsson
|
|
15
|
-
# Native POSIX Threads Library by Ulrich Drepper et al
|
|
16
|
-
# BIND-8.2.3-T5B
|
|
17
|
-
# libc ABIs: UNIQUE IFUNC
|
|
18
|
-
# For bug reporting instructions, please see:
|
|
19
|
-
# <https://bugs.archlinux.org/>.
|
|
20
|
-
|
|
21
|
-
build_id = File.basename(__FILE__, '.rb').split('-').last
|
|
22
|
-
OneGadget::Gadget.add(build_id, 269312,
|
|
23
|
-
constraints: ["(u64)rax <= 0xfffffffffffff000", "eax == 0x0", "rbx == NULL", "{\"sh\", \"-c\", r12, NULL} is a valid argv"],
|
|
24
|
-
effect: "execve(\"/bin/sh\", rsp+0x30, environ)")
|
|
25
|
-
OneGadget::Gadget.add(build_id, 269324,
|
|
26
|
-
constraints: ["eax == 0x0", "rbx == NULL", "{\"sh\", \"-c\", r12, NULL} is a valid argv"],
|
|
27
|
-
effect: "execve(\"/bin/sh\", rsp+0x30, environ)")
|
|
28
|
-
OneGadget::Gadget.add(build_id, 269963,
|
|
29
|
-
constraints: ["rbx == NULL", "{\"sh\", \"-c\", r12, NULL} is a valid argv"],
|
|
30
|
-
effect: "execve(\"/bin/sh\", rsp+0x30, environ)")
|
|
31
|
-
OneGadget::Gadget.add(build_id, 269970,
|
|
32
|
-
constraints: ["rbx == NULL", "rax == NULL || {rax, \"-c\", r12, NULL} is a valid argv"],
|
|
33
|
-
effect: "execve(\"/bin/sh\", rsp+0x30, environ)")
|
|
34
|
-
OneGadget::Gadget.add(build_id, 269977,
|
|
35
|
-
constraints: ["rbx == NULL", "rsi == NULL", "rax == NULL || {rax, \"-c\", r12, NULL} is a valid argv"],
|
|
36
|
-
effect: "execve(\"/bin/sh\", rsp+0x30, environ)")
|
|
37
|
-
OneGadget::Gadget.add(build_id, 269979,
|
|
38
|
-
constraints: ["rbx == NULL", "rdx == NULL", "rsi == NULL", "rax == NULL || {rax, \"-c\", r12, NULL} is a valid argv"],
|
|
39
|
-
effect: "execve(\"/bin/sh\", rsp+0x30, environ)")
|
|
40
|
-
OneGadget::Gadget.add(build_id, 269984,
|
|
41
|
-
constraints: ["rbx == NULL", "rdx == NULL", "rsi == NULL", "rax == NULL || {rax, \"-c\", r12, NULL} is a valid argv"],
|
|
42
|
-
effect: "execve(\"/bin/sh\", rsp+0x30, environ)")
|
|
43
|
-
OneGadget::Gadget.add(build_id, 269989,
|
|
44
|
-
constraints: ["rbx == NULL", "rdx == NULL", "rsi == NULL", "rax == NULL || {rax, \"-c\", [rsp+0x40], NULL} is a valid argv"],
|
|
45
|
-
effect: "execve(\"/bin/sh\", rsp+0x30, environ)")
|
|
46
|
-
OneGadget::Gadget.add(build_id, 269998,
|
|
47
|
-
constraints: ["rbx == NULL", "rdx == NULL", "rsi == NULL", "rax == NULL || {rax, \"-c\", [rsp+0x40], [rsp+0x48], ...} is a valid argv"],
|
|
48
|
-
effect: "execve(\"/bin/sh\", rsp+0x30, environ)")
|
|
49
|
-
OneGadget::Gadget.add(build_id, 270003,
|
|
50
|
-
constraints: ["rbx == NULL", "rdx == NULL", "rsi == NULL", "[rsp+0x30] == NULL || {[rsp+0x30], \"-c\", [rsp+0x40], [rsp+0x48], ...} is a valid argv"],
|
|
51
|
-
effect: "execve(\"/bin/sh\", rsp+0x30, environ)")
|
|
52
|
-
OneGadget::Gadget.add(build_id, 270010,
|
|
53
|
-
constraints: ["rbx == NULL", "rdx == NULL", "rsi == NULL", "[rsp+0x30] == NULL || {[rsp+0x30], rax, [rsp+0x40], [rsp+0x48], ...} is a valid argv"],
|
|
54
|
-
effect: "execve(\"/bin/sh\", rsp+0x30, environ)")
|
|
55
|
-
OneGadget::Gadget.add(build_id, 270015,
|
|
56
|
-
constraints: ["rbx == NULL", "rdx == NULL", "rsi == NULL", "[rsp+0x30] == NULL || {[rsp+0x30], [rsp+0x38], [rsp+0x40], [rsp+0x48], ...} is a valid argv"],
|
|
57
|
-
effect: "execve(\"/bin/sh\", rsp+0x30, environ)")
|
|
58
|
-
OneGadget::Gadget.add(build_id, 270020,
|
|
59
|
-
constraints: ["rbx == NULL", "[rsp+0x30] == NULL || {[rsp+0x30], [rsp+0x38], [rsp+0x40], [rsp+0x48], ...} is a valid argv"],
|
|
60
|
-
effect: "execve(\"/bin/sh\", rsp+0x30, environ)")
|
|
61
|
-
OneGadget::Gadget.add(build_id, 270027,
|
|
62
|
-
constraints: ["rbx == NULL", "rsi == NULL", "[rsp+0x30] == NULL || {[rsp+0x30], [rsp+0x38], [rsp+0x40], [rsp+0x48], ...} is a valid argv"],
|
|
63
|
-
effect: "execve(\"/bin/sh\", rsp+0x30, environ)")
|
|
64
|
-
OneGadget::Gadget.add(build_id, 270029,
|
|
65
|
-
constraints: ["rbx == NULL", "rdx == NULL", "rsi == NULL", "[rsp+0x30] == NULL || {[rsp+0x30], [rsp+0x38], [rsp+0x40], [rsp+0x48], ...} is a valid argv"],
|
|
66
|
-
effect: "execve(\"/bin/sh\", rsp+0x30, environ)")
|
|
67
|
-
OneGadget::Gadget.add(build_id, 270034,
|
|
68
|
-
constraints: ["rbx == NULL", "rdx == NULL", "rsi == NULL", "[rsp+0x30] == NULL || {[rsp+0x30], [rsp+0x38], [rsp+0x40], [rsp+0x48], ...} is a valid argv"],
|
|
69
|
-
effect: "execve(\"/bin/sh\", rsp+0x30, environ)")
|
|
70
|
-
OneGadget::Gadget.add(build_id, 270039,
|
|
71
|
-
constraints: ["rbx == NULL", "[rsp+0x30] == NULL || {[rsp+0x30], [rsp+0x38], [rsp+0x40], [rsp+0x48], ...} is a valid argv"],
|
|
72
|
-
effect: "execve(\"/bin/sh\", rsp+0x30, environ)")
|
|
73
|
-
OneGadget::Gadget.add(build_id, 270041,
|
|
74
|
-
constraints: ["rbx == NULL", "[rsp+0x30] == NULL || {[rsp+0x30], [rsp+0x38], [rsp+0x40], [rsp+0x48], ...} is a valid argv"],
|
|
75
|
-
effect: "execve(\"/bin/sh\", rsp+0x30, environ)")
|
|
76
|
-
OneGadget::Gadget.add(build_id, 270044,
|
|
77
|
-
constraints: ["rsi == NULL", "[rsp+0x30] == NULL || {[rsp+0x30], [rsp+0x38], [rsp+0x40], [rsp+0x48], ...} is a valid argv"],
|
|
78
|
-
effect: "execve(\"/bin/sh\", rsp+0x30, environ)")
|
|
79
|
-
OneGadget::Gadget.add(build_id, 270049,
|
|
80
|
-
constraints: ["rsi == NULL", "[rsp+0x30] == NULL || {[rsp+0x30], [rsp+0x38], [rsp+0x40], [rsp+0x48], ...} is a valid argv"],
|
|
81
|
-
effect: "execve(\"/bin/sh\", rsp+0x30, environ)")
|
|
82
|
-
OneGadget::Gadget.add(build_id, 270055,
|
|
83
|
-
constraints: ["[rsp+0x30] == NULL || {[rsp+0x30], [rsp+0x38], [rsp+0x40], [rsp+0x48], ...} is a valid argv"],
|
|
84
|
-
effect: "execve(\"/bin/sh\", rsp+0x30, environ)")
|
|
85
|
-
OneGadget::Gadget.add(build_id, 270062,
|
|
86
|
-
constraints: ["readable: rax", "[rsp+0x30] == NULL || {[rsp+0x30], [rsp+0x38], [rsp+0x40], [rsp+0x48], ...} is a valid argv", "[[rax]] == NULL || [rax] == NULL || [rax] is a valid envp"],
|
|
87
|
-
effect: "execve(\"/bin/sh\", rsp+0x30, [rax])")
|
|
88
|
-
OneGadget::Gadget.add(build_id, 805713,
|
|
89
|
-
constraints: ["[rsi] == 0x0", "rdi == NULL || {\"/bin/sh\", rdi, NULL} is a valid argv", "[rdx] == NULL || rdx == NULL || rdx is a valid envp"],
|
|
90
|
-
effect: "execve(\"/bin/sh\", rsp-0x48, rdx)")
|
|
91
|
-
OneGadget::Gadget.add(build_id, 805723,
|
|
92
|
-
constraints: ["[rsi] == 0x0", "rdi == NULL || {\"/bin/sh\", rdi, NULL} is a valid argv", "[rdx] == NULL || rdx == NULL || rdx is a valid envp"],
|
|
93
|
-
effect: "execve(\"/bin/sh\", rsp-0x48, rdx)")
|
|
94
|
-
OneGadget::Gadget.add(build_id, 805728,
|
|
95
|
-
constraints: ["[rsi] == 0x0", "rdi == NULL || {\"/bin/sh\", rdi, NULL} is a valid argv", "[rdx] == NULL || rdx == NULL || rdx is a valid envp"],
|
|
96
|
-
effect: "execve(\"/bin/sh\", rsp-0x48, rdx)")
|
|
97
|
-
OneGadget::Gadget.add(build_id, 805729,
|
|
98
|
-
constraints: ["[rsi] == 0x0", "rdi == NULL || {\"/bin/sh\", rdi, NULL} is a valid argv", "[rdx] == NULL || rdx == NULL || rdx is a valid envp"],
|
|
99
|
-
effect: "execve(\"/bin/sh\", rsp-0x40, rdx)")
|
|
100
|
-
OneGadget::Gadget.add(build_id, 805731,
|
|
101
|
-
constraints: ["[rsi] == 0x0", "rdi == NULL || {\"/bin/sh\", rdi, NULL} is a valid argv", "[rdx] == NULL || rdx == NULL || rdx is a valid envp"],
|
|
102
|
-
effect: "execve(\"/bin/sh\", rsp-0x40, rdx)")
|
|
103
|
-
OneGadget::Gadget.add(build_id, 805734,
|
|
104
|
-
constraints: ["[rsi] == 0x0", "writable: rbp-0x40", "rdi == NULL || {\"/bin/sh\", rdi, NULL} is a valid argv", "[rdx] == NULL || rdx == NULL || rdx is a valid envp"],
|
|
105
|
-
effect: "execve(\"/bin/sh\", rbp-0x40, rdx)")
|
|
106
|
-
OneGadget::Gadget.add(build_id, 805736,
|
|
107
|
-
constraints: ["[rsi] == 0x0", "writable: rbp-0x40", "rdi == NULL || {\"/bin/sh\", rdi, NULL} is a valid argv", "[rdx] == NULL || rdx == NULL || rdx is a valid envp"],
|
|
108
|
-
effect: "execve(\"/bin/sh\", rbp-0x40, rdx)")
|
|
109
|
-
OneGadget::Gadget.add(build_id, 805738,
|
|
110
|
-
constraints: ["[rsi] == 0x0", "writable: rbp-0x40", "rdi == NULL || {\"/bin/sh\", rdi, NULL} is a valid argv", "[rdx] == NULL || rdx == NULL || rdx is a valid envp"],
|
|
111
|
-
effect: "execve(\"/bin/sh\", rbp-0x40, rdx)")
|
|
112
|
-
OneGadget::Gadget.add(build_id, 805739,
|
|
113
|
-
constraints: ["[rsi] == 0x0", "writable: rbp-0x40", "rdi == NULL || {\"/bin/sh\", rdi, NULL} is a valid argv", "[rdx] == NULL || rdx == NULL || rdx is a valid envp"],
|
|
114
|
-
effect: "execve(\"/bin/sh\", rbp-0x40, rdx)")
|
|
115
|
-
OneGadget::Gadget.add(build_id, 805742,
|
|
116
|
-
constraints: ["[rsi] == 0x0", "writable: rbp-0x40", "rdi == NULL || {\"/bin/sh\", rdi, NULL} is a valid argv", "[r12] == NULL || r12 == NULL || r12 is a valid envp"],
|
|
117
|
-
effect: "execve(\"/bin/sh\", rbp-0x40, r12)")
|
|
118
|
-
OneGadget::Gadget.add(build_id, 805746,
|
|
119
|
-
constraints: ["[rsi] == 0x0", "writable: rbp-0x40", "rdi == NULL || {\"/bin/sh\", rdi, NULL} is a valid argv", "[r12] == NULL || r12 == NULL || r12 is a valid envp"],
|
|
120
|
-
effect: "execve(\"/bin/sh\", rbp-0x40, r12)")
|
|
121
|
-
OneGadget::Gadget.add(build_id, 805755,
|
|
122
|
-
constraints: ["[rsi] == 0x0", "writable: rbp-0x40", "rdi == NULL || {\"/bin/sh\", rdi, NULL} is a valid argv", "[r12] == NULL || r12 == NULL || r12 is a valid envp"],
|
|
123
|
-
effect: "execve(\"/bin/sh\", rbp-0x40, r12)")
|
|
124
|
-
OneGadget::Gadget.add(build_id, 805759,
|
|
125
|
-
constraints: ["[rsi] == 0x0", "writable: rbp-0x40", "rdi == NULL || {\"/bin/sh\", rdi, NULL} is a valid argv", "[r12] == NULL || r12 == NULL || r12 is a valid envp"],
|
|
126
|
-
effect: "execve(\"/bin/sh\", rbp-0x40, r12)")
|
|
127
|
-
OneGadget::Gadget.add(build_id, 805761,
|
|
128
|
-
constraints: ["[rsi] == 0x0", "writable: rbp-0x40", "rdi == NULL || {\"/bin/sh\", rdi, NULL} is a valid argv", "[r12] == NULL || r12 == NULL || r12 is a valid envp"],
|
|
129
|
-
effect: "execve(\"/bin/sh\", rbp-0x40, r12)")
|
|
130
|
-
OneGadget::Gadget.add(build_id, 805767,
|
|
131
|
-
constraints: ["writable: rbp-0x40", "rdi == NULL || {\"/bin/sh\", rdi, NULL} is a valid argv", "[r12] == NULL || r12 == NULL || r12 is a valid envp"],
|
|
132
|
-
effect: "execve(\"/bin/sh\", rbp-0x40, r12)")
|
|
133
|
-
OneGadget::Gadget.add(build_id, 805888,
|
|
134
|
-
constraints: ["[r13] == NULL || r13 == NULL || r13 is a valid argv", "[r12] == NULL || r12 == NULL || r12 is a valid envp"],
|
|
135
|
-
effect: "execve(\"/bin/sh\", r13, r12)")
|
|
136
|
-
OneGadget::Gadget.add(build_id, 805891,
|
|
137
|
-
constraints: ["[r13] == NULL || r13 == NULL || r13 is a valid argv", "[rdx] == NULL || rdx == NULL || rdx is a valid envp"],
|
|
138
|
-
effect: "execve(\"/bin/sh\", r13, rdx)")
|
|
139
|
-
OneGadget::Gadget.add(build_id, 805894,
|
|
140
|
-
constraints: ["[rsi] == NULL || rsi == NULL || rsi is a valid argv", "[rdx] == NULL || rdx == NULL || rdx is a valid envp"],
|
|
141
|
-
effect: "execve(\"/bin/sh\", rsi, rdx)")
|
|
142
|
-
OneGadget::Gadget.add(build_id, 805936,
|
|
143
|
-
constraints: ["writable: rbp-0x40", "rdi == NULL || {\"/bin/sh\", rdi, NULL} is a valid argv", "[r12] == NULL || r12 == NULL || r12 is a valid envp"],
|
|
144
|
-
effect: "execve(\"/bin/sh\", rbp-0x40, r12)")
|
|
145
|
-
OneGadget::Gadget.add(build_id, 805943,
|
|
146
|
-
constraints: ["writable: rbp-0x40", "rax == NULL || {rax, rdi, NULL} is a valid argv", "[r12] == NULL || r12 == NULL || r12 is a valid envp"],
|
|
147
|
-
effect: "execve(\"/bin/sh\", rbp-0x40, r12)")
|
|
148
|
-
OneGadget::Gadget.add(build_id, 805947,
|
|
149
|
-
constraints: ["writable: r13+0x10", "writable: rbp-0x40", "[r13] == NULL || r13 == NULL || r13 is a valid argv", "[r12] == NULL || r12 == NULL || r12 is a valid envp"],
|
|
150
|
-
effect: "execve(\"/bin/sh\", r13, r12)")
|
|
151
|
-
OneGadget::Gadget.add(build_id, 805950,
|
|
152
|
-
constraints: ["writable: r13+0x10", "writable: rbp-0x40", "[r13] == NULL || r13 == NULL || r13 is a valid argv", "[r12] == NULL || r12 == NULL || r12 is a valid envp"],
|
|
153
|
-
effect: "execve(\"/bin/sh\", r13, r12)")
|
|
154
|
-
OneGadget::Gadget.add(build_id, 805954,
|
|
155
|
-
constraints: ["writable: r13+0x10", "writable: rbp-0x40", "[r13] == NULL || r13 == NULL || r13 is a valid argv", "[r12] == NULL || r12 == NULL || r12 is a valid envp"],
|
|
156
|
-
effect: "execve(\"/bin/sh\", r13, r12)")
|
|
157
|
-
OneGadget::Gadget.add(build_id, 805958,
|
|
158
|
-
constraints: ["writable: r13+0x10", "[r13] == NULL || r13 == NULL || r13 is a valid argv", "[r12] == NULL || r12 == NULL || r12 is a valid envp"],
|
|
159
|
-
effect: "execve(\"/bin/sh\", r13, r12)")
|
|
160
|
-
OneGadget::Gadget.add(build_id, 805968,
|
|
161
|
-
constraints: ["writable: r13+0x10", "[r13] == NULL || r13 == NULL || r13 is a valid argv", "[r12] == NULL || r12 == NULL || r12 is a valid envp"],
|
|
162
|
-
effect: "execve(\"/bin/sh\", r13, r12)")
|
|
163
|
-
OneGadget::Gadget.add(build_id, 805976,
|
|
164
|
-
constraints: ["[r13] == NULL || r13 == NULL || r13 is a valid argv", "[r12] == NULL || r12 == NULL || r12 is a valid envp"],
|
|
165
|
-
effect: "execve(\"/bin/sh\", r13, r12)")
|
|
166
|
-
OneGadget::Gadget.add(build_id, 927795,
|
|
167
|
-
constraints: ["[rsp+0x38] != 0x0", "[rsp+0x60] == NULL || {[rsp+0x60], [rsp+0x68], [rsp+0x70], [rsp+0x78], ...} is a valid argv"],
|
|
168
|
-
effect: "execve(\"/bin/sh\", rsp+0x60, environ)",
|
|
169
|
-
closed_fds: ["[rsp+0x5c]", "[rsp+0x58]"])
|
|
170
|
-
OneGadget::Gadget.add(build_id, 927799,
|
|
171
|
-
constraints: ["[rsp+0x38] != 0x0", "[rsp+0x60] == NULL || {[rsp+0x60], [rsp+0x68], [rsp+0x70], [rsp+0x78], ...} is a valid argv"],
|
|
172
|
-
effect: "execve(\"/bin/sh\", rsp+0x60, environ)",
|
|
173
|
-
closed_fds: ["rdi", "[rsp+0x58]"])
|
|
174
|
-
OneGadget::Gadget.add(build_id, 927804,
|
|
175
|
-
constraints: ["[rsp+0x38] != 0x0", "[rsp+0x60] == NULL || {[rsp+0x60], [rsp+0x68], [rsp+0x70], [rsp+0x78], ...} is a valid argv"],
|
|
176
|
-
effect: "execve(\"/bin/sh\", rsp+0x60, environ)",
|
|
177
|
-
closed_fds: ["[rsp+0x58]"])
|
|
178
|
-
OneGadget::Gadget.add(build_id, 927808,
|
|
179
|
-
constraints: ["ecx != 0x0", "[rsp+0x60] == NULL || {[rsp+0x60], [rsp+0x68], [rsp+0x70], [rsp+0x78], ...} is a valid argv"],
|
|
180
|
-
effect: "execve(\"/bin/sh\", rsp+0x60, environ)",
|
|
181
|
-
closed_fds: ["[rsp+0x58]"])
|
|
182
|
-
OneGadget::Gadget.add(build_id, 927898,
|
|
183
|
-
constraints: ["([rsp+0x98] & 0xf000) == 0x2000", "[rsp+0xa8] == 0x103", "eax == 0x0", "[rsp+0x60] == NULL || {[rsp+0x60], [rsp+0x68], [rsp+0x70], [rsp+0x78], ...} is a valid argv"],
|
|
184
|
-
effect: "execve(\"/bin/sh\", rsp+0x60, environ)",
|
|
185
|
-
closed_fds: ["[rsp+0x58]"])
|
|
186
|
-
OneGadget::Gadget.add(build_id, 927902,
|
|
187
|
-
constraints: ["([rsp+0x98] & 0xf000) == 0x2000", "[rsp+0xa8] == 0x103", "[rsp+0x60] == NULL || {[rsp+0x60], [rsp+0x68], [rsp+0x70], [rsp+0x78], ...} is a valid argv"],
|
|
188
|
-
effect: "execve(\"/bin/sh\", rsp+0x60, environ)",
|
|
189
|
-
closed_fds: ["[rsp+0x58]"])
|
|
190
|
-
OneGadget::Gadget.add(build_id, 927909,
|
|
191
|
-
constraints: ["(eax & 0xf000) == 0x2000", "[rsp+0xa8] == 0x103", "[rsp+0x60] == NULL || {[rsp+0x60], [rsp+0x68], [rsp+0x70], [rsp+0x78], ...} is a valid argv"],
|
|
192
|
-
effect: "execve(\"/bin/sh\", rsp+0x60, environ)",
|
|
193
|
-
closed_fds: ["[rsp+0x58]"])
|
|
194
|
-
OneGadget::Gadget.add(build_id, 927914,
|
|
195
|
-
constraints: ["[rsp+0xa8] == 0x103", "eax == 0x2000", "[rsp+0x60] == NULL || {[rsp+0x60], [rsp+0x68], [rsp+0x70], [rsp+0x78], ...} is a valid argv"],
|
|
196
|
-
effect: "execve(\"/bin/sh\", rsp+0x60, environ)",
|
|
197
|
-
closed_fds: ["[rsp+0x58]"])
|
|
198
|
-
OneGadget::Gadget.add(build_id, 927921,
|
|
199
|
-
constraints: ["[rsp+0xa8] == 0x103", "[rsp+0x60] == NULL || {[rsp+0x60], [rsp+0x68], [rsp+0x70], [rsp+0x78], ...} is a valid argv"],
|
|
200
|
-
effect: "execve(\"/bin/sh\", rsp+0x60, environ)",
|
|
201
|
-
closed_fds: ["[rsp+0x58]"])
|
|
202
|
-
OneGadget::Gadget.add(build_id, 928074,
|
|
203
|
-
constraints: ["[rsp+0x60] == NULL || {[rsp+0x60], [rsp+0x68], [rsp+0x70], [rsp+0x78], ...} is a valid argv"],
|
|
204
|
-
effect: "execve(\"/bin/sh\", rsp+0x60, environ)",
|
|
205
|
-
closed_fds: ["[rsp+0x58]"])
|
|
206
|
-
OneGadget::Gadget.add(build_id, 928087,
|
|
207
|
-
constraints: ["[rsp+0x60] == NULL || {[rsp+0x60], [rsp+0x68], [rsp+0x70], [rsp+0x78], ...} is a valid argv"],
|
|
208
|
-
effect: "execve(\"/bin/sh\", rsp+0x60, environ)",
|
|
209
|
-
closed_fds: ["[rsp+0x58]"])
|
|
210
|
-
OneGadget::Gadget.add(build_id, 928091,
|
|
211
|
-
constraints: ["[rsp+0x60] == NULL || {[rsp+0x60], [rsp+0x68], [rsp+0x70], [rsp+0x78], ...} is a valid argv"],
|
|
212
|
-
effect: "execve(\"/bin/sh\", rsp+0x60, environ)",
|
|
213
|
-
closed_fds: ["rdi"])
|
|
214
|
-
OneGadget::Gadget.add(build_id, 928096,
|
|
215
|
-
constraints: ["[rsp+0x60] == NULL || {[rsp+0x60], [rsp+0x68], [rsp+0x70], [rsp+0x78], ...} is a valid argv"],
|
|
216
|
-
effect: "execve(\"/bin/sh\", rsp+0x60, environ)")
|
|
217
|
-
OneGadget::Gadget.add(build_id, 928103,
|
|
218
|
-
constraints: ["readable: rax", "[rsp+0x60] == NULL || {[rsp+0x60], [rsp+0x68], [rsp+0x70], [rsp+0x78], ...} is a valid argv", "[[rax]] == NULL || [rax] == NULL || [rax] is a valid envp"],
|
|
219
|
-
effect: "execve(\"/bin/sh\", rsp+0x60, [rax])")
|
|
220
|
-
OneGadget::Gadget.add(build_id, 928108,
|
|
221
|
-
constraints: ["readable: rax", "[rsi] == NULL || rsi == NULL || rsi is a valid argv", "[[rax]] == NULL || [rax] == NULL || [rax] is a valid envp"],
|
|
222
|
-
effect: "execve(\"/bin/sh\", rsi, [rax])")
|
|
223
|
-
OneGadget::Gadget.add(build_id, 928154,
|
|
224
|
-
constraints: ["[rsp+0x38] != 0x0", "[rsp+0x60] == NULL || {[rsp+0x60], [rsp+0x68], [rsp+0x70], [rsp+0x78], ...} is a valid argv"],
|
|
225
|
-
effect: "execve(\"/bin/sh\", rsp+0x60, environ)",
|
|
226
|
-
closed_fds: ["[rsp+0x58]"])
|
|
227
|
-
|