FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
Atlas/examples/tutorial-inject.lua at master · JavaDevelopRep/Atlas · GitHub
Uh oh!
There was an error while loading.
Please reload this page
.
JavaDevelopRep
/
Atlas
Public
forked from
Qihoo360/Atlas
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
Atlas
/
examples
/
tutorial-inject.lua
Copy path
More file actions
More file actions
Latest commit
History
History
History
80 lines (67 loc) · 2.42 KB
Breadcrumbs
Atlas
/
examples
/
tutorial-inject.lua
Copy path
File metadata and controls
80 lines (67 loc) · 2.42 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
--[[
$%BEGINLICENSE%$
Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; version 2 of the
License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA
$%ENDLICENSE%$
--]]
--[[
--]]
---
--
read_query() can rewrite packets
--
--
You can use read_query() to replace the packet sent by the client and rewrite
--
query as you like
--
--
@
param
packet the mysql-packet sent by the client
--
--
@
return
--
* nothing to pass on the packet as is,
--
* proxy.PROXY_SEND_QUERY to send the queries from the proxy.queries queue
--
* proxy.PROXY_SEND_RESULT to send your own result-set
--
function
read_query
(
packet
)
if
string.byte
(
packet
)
==
proxy
.
COM_QUERY
then
print
(
"
we got a normal query:
"
..
string.sub
(
packet
,
2
))
proxy
.
queries
:
append
(
1
,
packet
)
--
generate a new COM_QUERY packet
--
[ \3SELECT NOW() ]
--
and inject it with the id = 2
proxy
.
queries
:
append
(
2
,
string.char
(
proxy
.
COM_QUERY
)
..
"
SELECT NOW()
"
, {
resultset_is_needed
=
true
} )
return
proxy
.
PROXY_SEND_QUERY
end
end
---
--
read_query_result() is called when we receive a query result
--
from the server
--
--
we can analyze the response, drop the response and pass it on (default)
--
--
as we injected a SELECT NOW() above, we don't want to tell the client about it
--
and drop the result with proxy.PROXY_IGNORE_RESULT
--
--
@
return
--
* nothing or proxy.PROXY_SEND_RESULT to pass the result-set to the client
--
* proxy.PROXY_IGNORE_RESULT to drop the result-set
--
function
read_query_result
(
inj
)
print
(
"
injected result-set: id =
"
..
inj
.
id
)
--
inj.id = 2 was assigned above in the proxy.queries:append()
--
--
drop the resultset when we are done to hide it from the client
--
(in lua the first index is 1, not 0)
if
(
inj
.
id
==
2
)
then
for
row
in
inj
.
resultset
.
rows
do
print
(
"
injected query returned:
"
..
row
[
1
])
end
return
proxy
.
PROXY_IGNORE_RESULT
end
end
Back
|
FazBrowse Home
|
New Git URL